老板急坏了,公司网站的 HTTPS 过时了

端午出去玩的时候,老板打电话说公司网站的 HTTPS 过时了,访问不了(见下图),要我立马升级一下。惋惜我当时没带电脑,无能为力,可把老板急坏了。javascript

没办法,急就先急着,只能等我有电脑了才能搞。点击高级,能够看到如下信息:css

z.xxxx.cn 一般会使用加密技术来保护您的信息。Google Chrome 这次尝试链接到 z.xxxx.cn 时,此网站发回了异常的错误凭据。这多是由于有攻击者在试图冒充 z.xxxx.cn,或 Wi-Fi 登陆屏幕中断了这次链接。请放心,您的信息仍然是安全的,由于 Google Chrome 还没有进行任何数据交换便中止了链接。html

您目前没法访问 z.xxxx.cn,由于此网站使用了 HSTS。网络错误和攻击一般是暂时的,所以,此网页稍后可能会恢复正常。java

我使用的是 FreeSSL 证书,缘由很简单,老板不舍得掏钱,这个证书每次申请只能无偿使用一年。git

FreeSSL 是一个免费提供 HTTPS 证书申请、HTTPS 证书管理和 HTTPS 证书到期提醒服务的网站,旨在推动 HTTPS 证书的普及与应用,简化证书申请的流程。程序员

因为我以前已经注册过了,因此从「控制台」的证书列表里就能够看到过时信息。github

不过很遗憾,没有直接从新申请的选项。只能在首页从新填写域名,点击「建立免费的 SSL 证书」。面试

品牌证书选择「TRUSTAsia」就好了,能够无偿使用一年,到期了从新再申请一下就能够了。虽然麻烦点,但能给老板省点钱,看我这良心员工啊。算法

完过后会跳转到下图这个页面,注意填写一下邮箱。apache

有些同窗可能对选项不太了解,我这里统一解释下:

1)证书类型

我选择的是 RSA,那 ECC 又是什么,二者有什么区别?

HTTPS 经过 TLS 层和证书机制提供了内容加密、身份认证和数据完整性三大功能,能够有效防止数据被监听或篡改,还能抵御 MITM(中间人)攻击。TLS 在实施加密过程当中,须要用到非对称密钥交换和对称内容加密两大算法。

对称内容加密强度很是高,加解密速度也很快,只是没法安全地生成和保管密钥。在 TLS 协议中,应用数据都是通过对称加密后传输的,传输中所使用的对称密钥,则是在握手阶段经过非对称密钥交换而来。常见的 AES-GCM、ChaCha20-Poly1305,都是对称加密算法。

非对称密钥交换能在不安全的数据通道中,产生只有通讯双方才知道的对称加密密钥。目前最经常使用的密钥交换算法有 RSA 和 ECDHE:RSA 历史悠久,支持度好,但不支持 PFS(Perfect Forward Secrecy);而 ECDHE 是使用了 ECC(椭圆曲线)的 DH(Diffie-Hellman)算法,计算速度快,支持 PFS。

是否是一会儿就点醒了你?

2)验证类型

我选择的是文件验证,那 DNS 验证又是什么,二者有什么区别?

首先,咱们须要明白一点,CA(Certificate Authority,证书颁发机构) 须要验证咱们是否拥有该域名,这样才给咱们颁发证书。

文件验证(HTTP):CA 将经过访问特定 URL 地址来验证咱们是否拥有域名的全部权。所以,咱们须要下载给定的验证文件,并上传到您的服务器。

DNS 验证:CA 将经过查询 DNS 的 TXT 记录来肯定咱们对该域名的全部权。咱们只须要在域名管理平台将生成的 TXT 记录名与记录值添加到该域名下,等待大约 1 分钟便可验证成功。

因此,若是对服务器操做方便的话,能够选择文件验证;若是对域名的服务器操做比较方便的话,能够选择 DNS 验证。若是两个都方便的话,请随意选啦。

3)CSR 生成

我选择的是离线生成,这也是 FreeSSL 如今推荐的方式,那到底三个选项之间有什么区别呢?

离线生成:私钥在本地加密存储,更安全;公钥自动合成,支持常见证书格式转换,方便部署;支持部分 WebServer 的一键部署,很是便捷。

离线生成的时候,须要先安装 KeyManager,能够提供安全便捷的 SSL 证书申请和管理。下载地址以下:

keymanager.org/

浏览器生成:在浏览器支持 Web Cryptography 的状况下,会使用浏览器根据用户的信息生成 CSR 文件。

Web Cryptography,网络密码学,用于在 Web 应用程序中执行基本加密操做的 JavaScript API。不少浏览器并不支持

我有 CSR:能够粘贴本身的 CSR,而后建立。

明白区别以后,选择「点击建立」,若是没有安装 KeyManager 的话,会弹出提示对话框,让你安装。

直接点击「安装 KeyManager」进行下载。

双击运行安装,成功后打开 KeyManager。

填写密码后点击「开始」,稍等片刻,出现以下界面。

回到 FreeSSL 首页,点击下图中红色框中的连接「再次尝试启动 KeyManager」。

注意 KeyManager 界面的变化,会出现如下界面中的信息。

能够回到浏览器页面,点击「继续」按钮:

会跳出文件验证的提示信息:

点击右下角的「下载文件」。

好了,如今连接服务器,将下载好的文件上传到「文件路径」处指出的路径下,必定要路径匹配上,不然没法完成验证。

文件上传成功后,就能够「点击验证」,稍等片刻后,就会出现如下提示信息:

点击「保存到 KeyManager」,能够看到证书的有效期延长了。

选择「导出证书」:

个人服务器软件使用的是 Tomcat,因此选择导出的格式是 jks。记住你的私钥加密密码,后面要用。

完过后点击「导出」按钮。

将生成好的证书,上传到服务器。

接下来,打开 Tomcat 的 server.xml 文件,配置一下 Connector 连接。

<Connector port="81" protocol="HTTP/1.1"
                        maxThreads="250" maxHttpHeaderSize="8192" acceptCount="100" connectionTimeout="60000" keepAliveTimeout="200000"
                        redirectPort="8443"            
                        useBodyEncodingForURI="true" URIEncoding="UTF-8"  
                        compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata"   
            compressableMimeType="text/html,text/xml,application/xml,application/json,text/javascript,application/javascript,text/css,text/plain,text/json,image/png,image/gif"/>

<Connector
  protocol="org.apache.coyote.http11.Http11NioProtocol"
  port="443" maxThreads="200"
  scheme="https" secure="true" SSLEnabled="true"
  keystoreFile="/home/backup/xxx.cn.jks" keystorePass="Chenmo"
  clientAuth="false" sslProtocol="TLS"
useBodyEncodingForURI="true" URIEncoding="UTF-8"  
                        compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata"   
            compressableMimeType="text/html,text/xml,application/xml,application/json,text/javascript,application/javascript,text/css,text/plain,text/json,image/png,image/gif"
/>
复制代码

其中 keystorePass 为导出证书时私钥的加密密码。

重启 Tomcat 后,从新访问一下网站,发现网站恢复正常了。

好了,HTTPS 它回来了,赶忙给老板吱一声,网站几天不能用,少卖很多酒,少挣很多钱啊,嘿嘿。

同窗们,学到了吧?网站想从 HTTP 升级到 HTTPS 并不难,按照我给出的这份攻略,五分钟就能轻松搞定,关键是还免费,真香警告!

我是沉默王二,一枚有趣的程序员。若是以为文章对你有点帮助,请微信搜索「 沉默王二 」第一时间阅读,回复【666】更有我为你精心准备的 500G 高清教学视频(已分门别类)。

本文 GitHub 已经收录,有大厂面试完整考点,欢迎 Star。

原创不易,莫要白票,请你为本文点个赞吧,这将是我写做更多优质文章的最强动力。

相关文章
相关标签/搜索