提示:本站当前已切换为使用 acme.sh
和 dnspod 的模式生成并自动续期证书,可参考该文: 基于 acme.sh 和 dnspod API 自动生成与更新网站泛域名证书
以下内容由于长久未作验证更新,已不再保证有效性,仅供参考。
使用 certbot-auto
这是官方推荐的方法,通过 shell 命令的方式,可以最简单方便地达到目的。步骤如下:
- 访问 certbot 网站,地址为:https://certbot.eff.org/
- 在首页选择好 webserver 和 系统类型,则会显示对应的操作步骤。按照步骤逐步操作,如无意外则可完成。
- 修改 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