申请一个免费的Let’s Encrypt ssl HTTPS数字证书
|
admin
2025年8月14日 21:2
本文热度 39
|
场景设定:
一、选择证书类型
上面是常见的证书类型,对于我们的场景,应该选择DV证书,用来给我们自己的域名做认证。
Let's Encrypt是目前(2024年)市场份额第一的,甚至美国政府网站在也使用它,免费方便,支持自助申请。只是免费的证书有效期最多3个月,到期需要更新。它也提供了自动化的命令行工具来更新证书。
申请证书之前,需要先有一个域名。一般的云厂商都可以代理申请,小编的域名就是在阿里云上申请的。下面我们以小编自己的域名:ticktechman.tech为例,介绍如何申请对应的证书。certbot是Let's Encrypt提供的一个开源免费工具,基于命令行,在继续下面的步骤之前,需要先安装:#
brew install certbot
#
sudo apt install -y certbot
在申请证书的过程中,cbot需要验证域名的所有权是否属于你,提供了三种方式:在我们的场景中,网站还不存在,因此选择通过DNS-01的方式来验证域名归属权。执行下面的命令:mkdir certbot && cd certbot
mkdir config logs work
certbot certonly --manual --preferred-challenges dns -d ticktechman.tech --config-dir=${PWD}/config --work-dir=${PWD}/work --logs-dir=${PWD}/logs
执行到这里的时候,需要在DNS中增加TXT字段,字段名是固定的,字段值是临时生成的,需要手动添加。这里以阿里云平台上添加DNS TXT字段为例介绍:红框中前两项按照上图中填写,第三项【记录值】要输入上步中命令行输出的字段值。添加成功后,需要等待一段时间才能生效(建议等待2~3分钟)添加完DNS信息后,按【回车】键继续后面的申请操作
申请成功后,在当前目录下会生成如下的目录和文件:
上面红框中的文件:
我们使用nginx来验证上面证书的合法性,可以参考【你的第一个HTTPS网站(nginx版)】这篇文章先搭建一个nginx服务。将申请好的两个文件:fullchain.pem和privkey.pem文件拷贝到nginx配置的目录,然后修改配置文件https.conf:http {
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /Users/ticktech/usr/playground/nginx/www;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;
}
}
然后重启或者重新加载nginx配置,可以使用下面的命令来验证证书合法性:nginx -s reload
openssl s_client -connect localhost:443 -servername localhost|grep 'Verify return code'
如果输出中包含"Verify return code: 0 (ok)",则表示证书合法。
这种方法适合本地验证,不需要部署公网IP和服务器。
阅读原文:原文链接
该文章在 2025/8/15 11:39:05 编辑过