Let's Encrypt
使用的certbot
工具需要安装一大堆系统库, 安装某些库可能会有墙的问题
所以我要介绍的是acme.sh
这个是用 Shell
脚本编写的,使用acme.sh
来安装SSL证书更容易
安装 acme.sh
curl https://get.acme.sh | sh
目录里就会出现acme.sh
等文件
申请 SSL 证书
acme.sh --issue -d www.hoehub.com -w /usr/local/nginx/conf/ssl/
注: 命令执行时 /usr/local/nginx/conf/ssl/
创建一个 .well-known
目录,Let’ s Encrypt
将会通过你要注册的域名去访问那个目录来确定权限,
它可能会去访问 http://www.hoehub.com/.well-known/
如果遇到.well-known
无法访问请看:Let's Encrypt unauthorized 403 forbidden
执行后如果看到下列输出, 说明证书申请成功,并放到了 ~/.acme.sh/
目录里面。
...
# Success
# Verify finished, start to sign.
# Cert success.
...
将 SSL 证书安装到网站的路径,并配置好 restart Nginx 的动作
./acme.sh --installcert -d www.hoehub.com
--keypath /usr/local/nginx/conf/ssl/www.hoehub.com.key
--fullchainpath /usr/local/nginx/conf/ssl/www.hoehub.com.key.pem
--reloadcmd "sudo service nginx force-reload"
输出
# Installing key to:/usr/local/nginx/conf/ssl/www.hoehub.com.key
# Installing full chain to:/usr/local/nginx/conf/ssl/www.hoehub.com.key.pem
# Run Le_ReloadCmd: sudo service nginx force-reload
Restarting nginx: nginx.
# Reload success
生成 dhparam.pem 文件
openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
Nginx使用SSL证书
server {
listen 80 default_server;
# 新增
listen 443 ssl;
ssl_certificate /usr/local/nginx/conf/ssl/www.hoehub.com.key.pem;
ssl_certificate_key /usr/local/nginx/conf/ssl/www.hoehub.com.key;
# ssl_dhparam
ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
# 其他省略
}
保存重启
验证 SSL
访问 ssllabs.com 输入你的域名,检查 SSL 的配置是否都正常:
https://ssllabs.com/ssltest/analyze.html?d=www.hoehub.com
后期维护
Let's Encrypt
的证书有效期是 90
天的, 到期需要重新renew
申请.
使用系统定时任务来完成自动更新
# 每月更新一次
0 0 1 * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
一些注意事项
ssl_dhparam
未配置,将导致 ssllabs.com
的评分降到 B,
并给 This server supports weak Diffie-Hellman (DH) key exchange parameters. Grade capped to B.
的警告。
ssl_prefer_server_ciphers on
也是一个必要的配置,否则会 A+
变成 A-
;
如果你需要兼容老系统或老浏览器的话,你需要配置 ssl_ciphers,详见 Mozilla Server_Side_TLS 的介绍,
Nginx 里面 ssl_ciphers 默认值是 HIGH:!aNULL:!MD5; ref
acme.sh还是更方便一些!
SSL证书太贵了,Let's Encrypt开源太给力了
大赞Let’s Encrypt
https时代到来了,ssl必不可少啊