简介:Let’s Encrypt 是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由 Mozilla、思科、Akamai、IdenTrust 和 EFF 等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由 HTTP 过渡到 HTTPS,目前 Facebook 等大公司开始加入赞助行列。
Let’s Encrypt 已经得了 IdenTrust 的交叉签名,这意味着其证书现在已经可以被 Mozilla、Google、Microsoft 和 Apple 等主流的浏览器所信任,你只需要在 Web 服务器证书链中配置交叉签名,浏览器客户端会自动处理好其它的一切,Let’s Encrypt 安装简单,使用非常方便。
一、获取Certbot客户端
# 下载 Certbot 客户端
$ wget https://dl.eff.org/certbot-auto
# 设为可执行权限
$ chmod a+x certbot-auto
二、申请证书
客户在申请 Let’s Encrypt 证书的时候,需要校验域名的所有权,证明操作者有权利为该域名申请证书,目前支持三种验证方式:
- dns-01:给域名添加一个 DNS TXT 记录。
- http-01:在域名对应的 Web 服务器下放置一个 HTTP well-known URL 资源文件。
- tls-sni-01:在域名对应的 Web 服务器下放置一个 HTTPS well-known URL 资源文件。
注:申请通配符证书,只能使用dns-01的方式。
使用Certbot客户端申请证书通过一个linux命令就可以实现
./certbot-auto certonly -d "*.xxx.cn" --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
*.xxx.cn 替换为自己的域名即可。
在申请过程中按照提示选择,开始需要输入邮箱,中途需要添加DNS的TXT解析记录,在添加过之后保证TXT记录生效之后,回车确认,最后会输出
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/xxx.cn/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/xxx.com/privkey.pem
Your cert will expire on 2018-08-20. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
表示你证书申请成功。证书和密钥保存在 /etc/letsencrypt/live 目录下
三、nginx 配置 Let’s Encrypt 证书
nginx 配置如下
server {
listen 443 ssl;
server_name test.51weker.cn;
root /home/rock/wwwroot/test.51weker.cn;
ssl_certificate /etc/letsencrypt/live/test.51weker.cn-0001/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.51weker.cn-0001/privkey.pem;
ssl_dhparam /etc/ssl/certs/dhparams.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.html;
}
}
ssl_dhparam 以及 ssl_ciphers 配置项可选,主要是为着网站的安全性考虑,加上之后安全性会大大的提升。
dhparams.pem 文件可以通过下面命令生成:
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
完成以上过程,你的网站就可以使用https访问。
四、自动续期 Let‘s Encrypt 获取的Https证书
1、编写自动化脚本更新 update.sh
#/bin/sh
#证书更新脚本
cd /
./certbot-auto renew
/usr/sbin/nginx -s reload
2、设为可执行权限
chmod a+x update.sh
3、Linux定时每月18号执行
30 4 18 * * /etc/letsencrypt/./update.sh
网友评论