大家好,我是二哥呀,今天由我来给大家讲一下技术派网站是如何配置 SSL 证书实现 HTTPS 访问的,这几乎是所有网站上线生产环境时必经的一个配置,否则用户访问网站的时候就会提示网站不安全,这将会大大降低用户对网站的信任程度。
如果已经配置过 SSL 证书且正确的情况下,浏览器的地址栏里会有一个加锁的小图标,点击过去就可以看到一个提示:连接是安全的。
前置条件:技术派的生产环境是一台腾讯云的香港服务器,操作系统是腾讯 OS,Web 服务器用的 Nginx,项目是以 jar 包的形式运行的。
什么是 SSL
SSL,也就是 Secure Sockets Layer,中文名叫做安全套接字层,是一种加密安全协议,最初由网景公司于 1995 年开发,旨在保护网络通信中的隐私、身份验证和数据完整性。
算是 TLS 的前身。
TLS,也就是 Transport Layer Security,中文名叫做传输层安全性协议,其实和 SSL 是一回事,因为 TLS 1.0 版就是在 SSL 3.1 的版本上开发的,但在发布前更改了名字,以表明它不再和网景公司有任何关系。
换句话说,有个特工 30 岁以前一直叫王二,30 岁后觉得自己牛气哄哄,成就非凡,不想再叫这么中二的名字了,于是改名叫王三。但认识他的人还是喜欢叫他王二(dog)。
什么是 HTTPS
那知道 SSL 的定义后,也就能明白它的作用了,就是为了对原来的明文 HTTP 请求进行加密,保证通信之间的数据安全。
那什么是 HTTP,想必大家都已经清楚,也就是 HyperText Transfer Protocol,中文名叫做超文本传输协议,是互联网进行数据传输的基础。
在 HTTP 协议下,客户端和服务端之间的通信都是明文的,赤裸裸的。
HTTPS(HyperText Transfer Protocol Secure)算是 HTTP 的安全版本,这个加密的工作就由 SSL 来完成,这次发送的内容就不知道是什么了,只有客户端和服务器端能懂的鸟语。
SSL 证书的工作原理
知道什么是 SSL 后,SSL 证书也就知道了。SSL 就相当于前文提到的那个王二特工,SSL 证书就像王二的签证或者护照。
SSL 证书的作用相当于这些签证或者护照,不仅能提供加密,还能够验证身份来增强通信的安全性。
简单说一下 SSL 证书的工作原理:
第一步,身份验证。
SSL 证书由受信任的证书颁发机构(CA)签发,它包含证书持有者(服务器)的信息,客户端(浏览器)信任这些 CA,并会验证 SSL 的真实性。
第二步,建立加密连接,也就是 SSL 握手🤝
- 客户端开始握手,发送包含支持的 TLS 版本、密码套件列表以及“客户端随机数”的消息。
- 服务器回应客户端,发送包含服务器的 SSL 证书、服务器选择的密码套件以及“服务器随机数”的消息。
- 客户端验证服务器证书的有效性(是否是信任的 CA 签发,是否过期,是否用于请求的域名等)
- 客户端生成“预主密钥”并使用服务器的公钥(从服务器的 SSL 证书中获取)进行加密,然后发送给服务器。
- 服务器使用其私钥对接收到的加密的“预主密钥”进行解密。
- 客户端和服务器都使用“客户端随机数”、“服务器随机数”和“预主密钥”生成会话密钥。这确保了双方都拥有相同的密钥。
- 客户端发送一条“已完成”消息,该消息使用会话密钥加密。
- 服务器回应一条同样使用会话密钥加密的“已完成”消息。
第三步,对称加密和非对称加密的结合。
- 握手阶段使用非对称加密(公钥和私钥)进行安全密钥交换。
- 之后的通信使用对称加密。
如何申请 SSL 证书
搞清楚 SSL 证书的工作原理后,我们来看一下如何申请 SSL 证书,提供类似服务的平台有很多,二哥这里推荐大家使用 freessl,支持一年免费。
这个网站做的还是非常友好的,我自己一直在用,像技术派、二哥的 Java 进阶之路,都用的 freessl 申请的。作者我也认识,所以很放心。
第一步,进入该网站,填写域名(可点选自动补全,一般就是 paicoding.com
和www.paicoding.com
),选择品牌「亚洲诚信双域名一年期」,点击「创建免费的 SSL 证书」。
三年自动化续期的现在是 59.9 元,如果想省钱的话,其实一年到期后自己重新申请就可以了,我主要是为了支持作者,所以技术派的域名就选了五年自动续期,我之前的所有域名都用了 freessl,所以这波不亏。
第二步,选择证书的生成方式,点击「创建」。
我之前选择的是「RSA」「DNS」「离线生成」,这里简单给大家普及一下都是干嘛的。
- 证书类型为 RSA,ECC 是一种较新的公钥加密技术,基于椭圆曲线数学加密,感兴趣可以去搜一下,RSA 是最早也是最广泛的公钥加密算法,兼容性比较好。
- 验证方式为 DNS,相比较「文件验证 HTTP」,DNS 只需要在域名控制台进行解析就能完成 CA 的验证操作,不需要配置服务器,更加方便(大约一分钟就可以验证成功)。
- CSR 为「离线生成」,这种方式需要提前安装好 KeyManager,当然如果没有安装的话,会自动提示你安装,方便我们在本地通过「KeyManager」来管理证书。
如果已经安装了 KeyManager,也可以在 KeyManager 中登录 freessl 的账号,然后直接在这里申请证书。
之前还没有「一键申请」,只有「离线生成」、「浏览器生成」、「我有 CSR」这三种,据说一键申请更加方便,大家可以尝试一下,不需要域名解析,比离线生成更加方便。
「浏览器生成」的话,我之前也试过,忘记了,这里不再推荐;
「我有 CSR」的话,针对之前生成过证书,又重新申请的情况,我没有试过,后面等技术派现在的五年证书过期后可以试一下。
这里再解释一下 CSR,也就是 Certificate Signing Request,中文名叫做「证书签名请求」,里面包含了申请证书的组织信息,以及公钥,这些信息将会包含在最终签发的证书中。
CSR 是申请和安装 SSL/TLS 证书过程中的关键组成部分,保证了证书中的公钥与申请者的私钥相对应,并且提供了必要的身份验证信息。
第三步,颁发证书,技术派已经颁发过了,所以,我直接给出最终的订单详情,并且把注意事项告诉大家
回复