HTTPS是一种通过加密来保护网络通信安全的协议,对于保护网站和用户数据的安全至关重要。而要实现HTTPS安全通信,就必须要有SSL/TLS证书,传统上,获取和配置SSL/TLS证书需要一定的成本和技术知识,这对于小型网站、个人博客等资源有限的实体来说可能是一个障碍。因此申请免费的SSL证书就显得非常的有必要。
申请免费的SSL证书有很多种途径,在国内的华为云、阿里云和腾讯云等都可以申请到免费3个月的SSL证书,但这里我们讲的是另一种方式,那就是Let's Encrypt 。为什么选择这种方式呢?因为通过Let's Encrypt 网站申请证书非常方便。
Let's Encrypt是一个提供免费SSL/TLS证书的服务,旨在使HTTPS加密通信更加普及和易于实现。Let's Encrypt的目标是通过提供免费、自动化和开放的SSL/TLS证书,促进整个互联网的加密。它的证书由现代浏览器所信任,因此网站使用Let's Encrypt证书可以得到与商业SSL证书相同的安全保障,同时也为网站所有者节省了成本。
Let's Encrypt证书的特点包括:
- 免费: Let's Encrypt提供的SSL/TLS证书完全免费,没有任何隐藏费用。
- 开放: Let's Encrypt的证书管理工具和协议是开放的,任何人都可以访问并使用。
- 安全: Let's Encrypt证书采用现代加密算法,提供与商业SSL证书相当的安全性。
接下来我们详细介绍从Lets Encrypt申请证书和发布部署证书的过程:
一、申请证书
(1)申请证书之前,需要准备好用于绑定证书的域名(假如您的域名是:abc.yuming.com)。这个域名必须能够正常访问,也就是说通过浏览器可以正常访问:http://abc.yuming.com 。
(2)打开网站: 来此加密 - Let's Encrypt 在线免费申请SSL证书
(3)点“立即开始”,注册用户。(如果已注册用户,直接点“登录”)
(4)登录之后,选择“申请证书”,之后照着申请证书的指引,一步步完成证书的申请。一般来说,直接按照默认的选项申请就行。
(5)提交申请成功之后,还要进行一次手工验证。验证方式建议选择DNS验证。如下图所示:
(6)在您的域名管理网站,根据系统提示的DNS验证资料,添加一条TXT域名解析记录,完成之后,点击验证。等待验证通过之后证书就申请到手啦。
在申请证书的第二步,如果选择自定义CSR,可以使用以下网站创建CSR文件:SSL在线工具-CSR在线生成-CSR在线创建-证书请求文件生成-SSLeye官网
从Let's Encrypt网站将证书申请到手之后,可以将证书下载到本地,也有如何部署到tomcat、nginx等几个常见的应用服务器的部署指引。
解压后的证书文件如下:
二、部署证书
接下来我们详细介绍如何将证书部署到nginx。
(1)在nginx根目录下,创建cert目录。并将解压后的所有证书文件,直接上传到这个目录下。(假如nginx根目录为 /usr/local/nginx )
(2)修改nginx的配置文件
server {
listen 443 ssl;
server_name abc.yuming.com;
ssl_stapling on;
ssl_stapling_verify on;
ssl_certificate /usr/local/nginx/cert/fullchain.crt;
ssl_certificate_key /usr/local/nginx/cert/private.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
(3)测试nginx配置是否正确:nginx -t ,如果出现下图所示错误,则说明nginx未安装ssl模块,需要安装ssl模块后,再执行配置测试。(如何安装ssl模块,网上很多,这里不说了。)
(4)重新加载配置:nginx -s reload
三、测试访问
在浏览器中,直接输入:https://abc.yuming.com,如果出现下图所示页面,表示证书部署成功。