Certbot部署
1、安装certbot
sudo yum install epel-release;
sudo yum install certbot;
certbot --version
3、生成证书
certbot certonly --webroot -w conf/html/ -d http://your.domain.com
3.1 .nginx生成SSL配置
sudo certbot --nginx
证书生成后位于/etc/letsencrypt
目录
注意:-w后面的路径需要和Nginx配置中的文件路径一致
4、配置ssl
Nginx配置文件中可以对443端口增加ssl证书:
ssl_certificate /etc/letsencrypt/live/http://your.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/http://your.domain.com/privkey
自动更新ssl证书
- 模拟证书更新,测试自动续期:
certbot renew --dry-run
//如果命令指令成功则可增加自动更新定时任务
- 强制更新证书:
certbot renew --force-renewal //强制更新未到期证书
- 添加自动更新定时任务:因为证书有效期只有3个月,推荐每周或者每月执行一次更新命令。
如果证书有效期还有一个月以上,执行命令后会提示无需更新。
crontab -e 或者 vi /etc/crontab
#每周日凌晨 2点执行renew任务,随后3点重新加载nginx
0 2 * * 0 /usr/bin/certbot renew >> /etc/letsencrypt/log/certbot-renew.log
0 3 * * 0 /usr/local/nginx/sbin/nginx -s reload >> /etc/letsencrypt/log/nginx-reload.log
备注:如果遇到nginx报错:The requested nginx plugin does not appear to be installed
执行以下命令就好:
sudo yum install python-certbot-nginx
Certbot命令行工具使用说明
用法:
certbot [子命令] [选项] [-d 域名] [-d 域名] …
Certbot工具用于获取和安装 HTTPS/TLS/SSL 证书。默认情况下,Certbot会尝试为本地网页服务器
(如果不存在会默认安装一个到本地)获取并安装证书。最常用的子命令和选项如下:
获取, 安装, 更新证书:
(默认) run 获取并安装证书到当前网页服务器
certonly 获取或更新证书,但是不安装
renew 更新已经获取但快过期的所有证书
-d 域名列表 指定证书对应的域名列表,域名之间使用逗号分隔
–apache 使用Apache插件进行身份认证和安装
–standalone 运行一个独立的网页服务器用于身份认证
–nginx 使用Nginx插件进行身份认证和安装
–webroot 把身份认证文件放置在服务器的网页根目录下
–manual 使用交互式或脚本钩子的方式获取证书
-n 非交互式运行
–test-cert 从预交付服务器上获取测试证书
–dry-run 测试获取或更新证书,但是不存储到本地硬盘
证书管理:
certificates 显示使用Certbot生成的所有证书的信息
revoke 撤销证书(supply --cert-path)
delete 删除证书
管理你的Let’s Encrypt账户
register 创建Let’s Encrypt ACME账户
–agree-tos 同意ACME服务器的订阅协议
-m EMAIL 接收有关账户的重要通知的邮箱地址
可选参数:
-h, --help 显示帮助信息,然后退出
-c 配置文件, --config 配置文件
配置文件的路径 (默认: /etc/letsencrypt/cli.ini
或 ~/.config/letsencrypt/cli.ini)
-v, --verbose 当前参数可以重复使用多次来增加输出信息的详细程度,例如 -vvv.
(默认: -2)
-n, --non-interactive, --noninteractive
非交互式运行,即运行过程中不需要询问用户输入,但需要额外的命令行
参数。当客户端发现参数缺失时会给出相应的说明。(默认: False)
–force-interactive 无论Certbot是否以命令行的方式运行,强制交互式运行。当前参数不能
用于renew子命令。(默认: False)
-d 域名列表, --domains 域名列表, --domain 域名列表
指定域名列表。如果有多个域名,可以多次使用-d参数,也可以在-d参数后
使用逗号分隔的域名列表。(默认: 询问)
–cert-name 证书名称 指定证书名称。每次Certbot运行只使用一个证书名称。可以使用命令
'certbot certificates’查看已生成的证书名称。当创建新的证书时,
此选项用于指定证书的名称。(默认: 无)
–dry-run 使用客户端执行一次试运行,获取测试证书(无效的证书)但不保存到磁盘。
当前选项仅用于’certonly’和’renew’子命令。
注: 尽管 --dry-run 选项试图阻止任何对系统的修改,但并不能做到
完全避免: 如果使用类似apache或nginx网页服务器来认证插件,
程序运行过程中,会尝试修改或恢复配置文件来获取测试证书,
也会重启网页服务器来部署和回滚这些修改。如果定义了 --pre-hook 和
–post-hook 选项它们会被同时执行,这两个选项有助于更精确地模拟
更新证书。–renew-hook 选项在这里不会被执行。(默认: False)
–preferred-challenges PREF_CHALLS
A sorted, comma delimited list of the preferred
challenge to use during authorization with the most
preferred challenge listed first (Eg, “dns” or “tls-
sni-01,http,dns”). Not all plugins support all
challenges. See
https://c