Certbot SSL自动生成证书
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Certbot SSL自动生成证书相关的知识,希望对你有一定的参考价值。
参考技术A 1、允许使用EPEL仓库在linux上使用 Certbot前需要安装 EPEL repository .
$ yum -y install yum-utils
$ yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
2、安装Certbot
$ sudo yum install certbot python2-certbot-nginx
3、自动证书安装
(初始安装或添加新域名后都需要进行证书更新)
sudo certbot --nginx
或者可以手工安装证书
$ sudo certbot --nginx certonly
4、证书过期更新
官方在证书在过期前会自动更新证书,有效期为90天
更新前检查
$ sudo certbot renew --dry-run
证书更新
certbot renew
可以通过配置定时任务的方式进行更新
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
关于证书升级同时在两台服务器有操作过,且不同机器设置了不同邮箱导致过期升级失败问题:
修复:修改如下文件,去掉里面对应注册的邮箱即可。
/etc/letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory/e6092e87b7b1290d27d4bdee287506b3/meta.json
官方网站:
https://certbot.eff.org/instructions
为Nginx申请和使用Let‘s Encrypt的SSL免费证书
文章目录
一、certbot是什么
我们申请和使用Let’s Encrypt的免费HTTPS证书, 就需要一个证书申请和管理的工具, 然后certbot是官方推荐的申请工具, 我们使用这个工具申请和管理我们的证书
certbot支持大部分的linux发行版, 使用简单, 我们直接下载和安装他们:
我这里的系统是centos 7, 如果是ubuntu或者其他发行版安装方式应该都是差不多的, 我使用官方包直接快速安装
关于HTTPS是什么,这里不再进行解释
Let’s Encrypt是什么可以点击这里
二、获取SSL免费证书
2.1 部署certbot
- 安装certbot
yum -y install certbot
- 查看版本
# certbot --version
certbot 1.11.0
2.2 获取证书
安装好管理工具之后, 我们需要申请证书下来, 这里我的web服务器是nginx, 并且我没有网站的静态目录, 所以我使用这个命令申请:
certbot certonly --standalone certbot certonly --standalone -d example.com -d www.example.com -d m.example.com(需要申请证书的域名)
注:-d指定多个域名,则是为多个域名申请SSL证书
如果你的网站有静态目录的话, 可以把–standalone改成–webroot并且加上-w参数申请, 类似这样:
certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com
在你使用–standalone申请证书的时候需要关闭nginx, 因为certbot会启用443端口校验你的域名信息, 如果nginx没有关闭, 会导致端口占用, 所以我们关闭nginx, 我这里是使用ubuntu, 所以使用这个命令关闭nginx:
nginx -s stop
2.3 配置证书
申请证书完成之后证书会存在于/etc/letsencrypt/live/目录, 我们查看一下没有问题后打开nginx的配置文件修改证书载入路径:
server
listen 80;
server_name www.example.com;
rewrite ^(.*) https://$server_name$1 permanent;
server
listen 443 ssl;
server_name www.example.com;
charset utf-8;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
#ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_ciphers AES256+EECDH:AES256+EDH:AES256-SHA:HIGH:!ADH:!EXPORT56:+MEDIUM:!MD5;
ssl_session_timeout 30m;
location /
add_header 'Access-Control-Allow-Origin' '*'; #允许来自所有的访问地址
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, DELETE, OPTIONS'; #支持请求方式
add_header 'Access-Control-Allow-Headers' 'Content-Type,*';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
if ($request_method = 'OPTIONS')
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
proxy_redirect off;
proxy_pass http://127.0.0.1:8080/;
access_log /opt/logs/nginx/www.example.com.log main;
保存退出之后, 检查nginx配置文件是否正确
nginx -t
没有问题的话, reload一下加载nginx配置
nginx -s reload
启动nginx
nginx
启动成功之后可以输入网址访问一下, 证书启用是否成功: https://www.example.com 如果显示证书正常表示成功
三、更新证书
因为 Let’s Encrypt证书的有效期只有90天, 到期的时候我们需要刷新证书的有效期, 才可以继续使用, 刷新证书有效期, 因为我们使用的是–standalone模式安装nginx的证书, 所以刷新证书的时候还是需要关闭nginx, 使用这个命令关闭nginx:
nginx -s stop
然后运行这个命令刷新:
certbot renew --dry-run
或者我们使用系统的定时器, 再时间快要结束的时候, 刷新就行, Let’s Encrypt证书官方说证书截止时间要小于一个月的时候才可以刷新, 我们可以配置每两个多月的时候刷新时间就可以啦, 这里我们编写一个cron计划, 每两个月的凌晨 5:20 执行 更新操作
添加定时任务
# crontab -e
20 5 * */2 * root certbot renew --pre-hook "nginx -s stop" --post-hook "nginx"
查看定时任务
# crontab -l
#更新nginx的ssl证书
20 5 * */2 * root certbot renew --pre-hook "nginx -s stop" --post-hook "nginx"
至此,我们的证书申请就结束啦!
以上是关于Certbot SSL自动生成证书的主要内容,如果未能解决你的问题,请参考以下文章
使用certbot 生成 Let‘s Encrypt 泛域名ssl证书
Nginx 通过 certbot 为网站自动配置 SSL 证书并续期