跳至主要內容

让网站用上免费 SSL 证书(Let's Encrypt)

安格原创安全websslhttpslets encrypt大约 3 分钟...

Let's Encryptopen in new window 是免费、开放和自动化的证书颁发机构。由非盈利组织互联网安全研究小组(ISRG)运营。支持单个域名或通配符域名的证书颁发。

申请 Let's Encrypt 证书

Let’s Encrypt 使用 ACME 协议来验证您对给定域名的控制权并向您颁发证书。 要获得 Let’s Encrypt 证书,您需要选择一个要使用的 ACME 客户端open in new window软件。

这里我选用 certbotopen in new window 来签发证书,详细使用可以参考官方文档open in new window
certbot 命令行参数: Certbot Command-line optionsopen in new window

下面演示通过 docker 来使用 certbot,先看用到的 2 个脚本文件,分别用于颁发和续签证书:

创建所需的脚本文件

颁发: certbot_only.sh
  • 这里只需通过 -d 设置你的域名即可,可以 -d 多次设置多个域名, 如: 单个域名 -d wap.example.com 或者多个 -d a.example.com -d b.example.com -d wap.abcde.com
  • 申请通配符证书时除了 -d *.example.com 外,一般还需要带上主域名 -d example.com
#!/usr/bin/env sh
cur_dir=$(
  cd "$(dirname $0)"
  pwd
)

docker run -it --rm \
  -v "$cur_dir"/etc.letsencrypt:/etc/letsencrypt \
  -v "$cur_dir"/var.log.letsencrypt:/var/log/letsencrypt \
  -v "$cur_dir"/var.lib.letsencrypt:/var/lib/letsencrypt \
  -v "$cur_dir"/data.letsencrypt:/data/letsencrypt \
  certbot/certbot certonly \
  --manual \
  --preferred-challenges dns-01 \
  --server https://acme-v02.api.letsencrypt.org/directory \
  -m {你的邮箱} \
  -d "{你的通配符域名,如 :*.mydomain.cn}" \
  -d "{你的主域名,如: mydomain.cn}" \
  -d "{你的另一个域名,如: abcde.com}" \
  -d "{你的另一个域名,如: aaabbb.com}"

使用上述脚本进行颁发和续签

颁发
# 颁发
sh ./certbot_only.sh
certonly
certbot

颁发成功会输出证书路径:

/etc/letsencrypt/live/you.cn/fullchain.pem
/etc/letsencrypt/live/you.cn/privkey.pem

由于这里我们用的是 docker , 所以上述证书路径是相对于 docker 的容器根目录的,实际的证书路径需要换成:

 {当前目录}/etc.letsencrypt/live/you.cn/fullchain.pem
 {当前目录}/etc.letsencrypt/live/you.cn/privkey.pem

把上述证书路径放到 nginx 配置文件中即可,如下:

server {
    ...
    ssl_certificate /etc/letsencrypt/live/you.cn/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/you.cn/privkey.pem;
    ...

续签成功后记得重载 nginx 配置

nginx -s reload

上次编辑于:
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3