使用 Lets Encrypt 生成用于 https 站点的免费 SSL 证书

目录
[隐藏]

提示:本站当前已切换为使用 acme.sh 和 dnspod 的模式生成并自动续期证书,可参考该文: 基于 acme.sh 和 dnspod API 自动生成与更新网站泛域名证书

以下内容由于长久未作验证更新,已不再保证有效性,仅供参考。

使用 certbot-auto

这是官方推荐的方法,通过 shell 命令的方式,可以最简单方便地达到目的。步骤如下:

  1. 访问 certbot 网站,地址为:https://certbot.eff.org/
  2. 在首页选择好 webserver 和 系统类型,则会显示对应的操作步骤。按照步骤逐步操作,如无意外则可完成。
  3. 修改 webserver 服务配置支持 https。nginx 可以参考: https://lzw.me/a/http2-nginx.html

注意:如服务器已启用了 https 服务,则先停止它。certbot-auto 在作验证时会使用 433 端口。

以 Centos 下的 nginx 为例,主要步骤如下。

1 下载 certbot-auto

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

2 执行证书生成

2.1 交互式生成指定单个或多个域名的证书

./certbot-auto --nginx

该命令会尝试自动配置 nginx 。

你也可以只生成适合 nginx 使用的证书,然后手动配置 nginx:

certbot-auto --nginx certonly
# 或
./certbot-auto certonly --manual -m webmaster@lzw.me -d lzw.me -d www.lzw.me -d test.lzw.me

生成成功后,可以查看证书状态:

./certbot-auto certificates

nginx 配置请参考: https://lzw.me/a/http2-nginx.html

2.2 交互式生成泛域名证书

./certbot-auto certonly –manual –server https://acme-v02.api.letsencrypt.org/directory -m webmaster@lzw.me -d *.lzw.me -d lzw.me

  • --server 参数为当前使用的ACME协议版本, 这里需要特别注意的是, 只有V2版本才支持泛域名, certbot 工具默认的协议是V1. 因此如需创建泛域名证书, 则必须制定此参数, 且该参数值固定
  • -d 参数为域名, 可以存在多个参数, 表示多个域名
  • -m 参数为管理者邮箱

由于设置了 manual 手动模式,需要在域名 DNS 解析上添加一条 TXT 记录用于域名所有权验证。执行过程示例如下:

Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for lzw.me


NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you’re running certbot in manual mode on a machine that is not
your server, please ensure you’re okay with that.

Are you OK with your IP being logged?


(Y)es/(N)o: y


Please deploy a DNS TXT record under the name
_acme-challenge.lzw.me with the following value:

VUrEmB6twrIloLdQETXfOqIRxLc0Pxj9hhTRIFPjzGk

Before continuing, verify the record is deployed.


Press Enter to Continue
Waiting for verification…
Cleaning up challenges

3 更新证书

自动生成的证书有效期为 90 天。在到期前应当更新证书。方法参考如下:

测试自动更新:

./certbot-auto renew --dry-run

执行自动更新:

service nginx stop
certbot renew --no-bootstrap
service nginx start

可将以上命令保存为 renew.sh 脚本文件,方便后续直接执行脚本进行证书更新。更新成功后,查看证书状态:

./certbot-auto certificates

详细参考:https://certbot.eff.org/#centos6-nginx

配置 crontab 任务定时更新证书:

crontab -e

添加内容如下(每隔两月在1日4点执行证书更新):

0 4 1 */2 * /root/letsencrypt/renew.sh >> /var/log/le-renew.log

使用第三方脚本

使用 dehydrated,参考:

http://www.ituring.com.cn/article/211255
https://github.com/lukas2511/dehydrated

相关链接

https://letsencrypt.org/getting-started/
https://github.com/letsencrypt/letsencrypt

点赞 (47)

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code