现在网络对数据传输的安全性要求越来越高,许多情况下都需要https协议才能访问。但是https的证书价格又比较昂贵,这种时候如果又免费的证书可以使用就好了。letsencrypt提供了这样的免费证书。
在github上有一个仓库acme.sh,可以申请到免费的ssl证书。下面我就带领大家熟悉下此仓库申请证书的使用流程
# 安装脚本
curl https://get.acme.sh | sh # 安装
sourcr ~/.bashrc # 重新加载环境变量
# 此处需要注意设置你的域名是能访问到的
# 会在网站项目中创建文件夹.well-known
# http://www.your-app.com/.well-known/
acme.sh --issue -d www.your-app.com -w /home/web/www/pay-app-final/public
# 这部执行完成之后会把申请成功的证书放在~/.acme.sh/目录里s
# 将证书安装到网站的路径下
acme.sh --installcert -d www.your-app.com \
--keypath /home/web/www/ssl/app-pay.wechat.com.key \
--fullchainpath /home/web/www/ssl/app-pay.wechat.com.key.pem \
--reloadcmd "sudo service nginx force-reload"
# 生成 dhparam.pem 文件,如果没有此文件,你的网站安全级别会被评为B
openssl dhparam -out /home/web/www/ssl/dhparam.pem 2048
# 修改nginx启用SSL
http {
# 新增
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# 兼容其他老浏览器的 ssl_ciphers 设置请访问 https://wiki.mozilla.org/Security/Server_Side_TLS
server {
listen 80 default_server;
# 新增
listen 443 ssl;
ssl_certificate /home/web/www/ssl/app-pay.wechat.com.key.pem;
ssl_certificate_key /home/web/www/ssl/app-pay.wechat.com.key;
# ssl_dhparam
ssl_dhparam /home/web/www/ssl/dhparam.pem;
# 其他省略
}
}
# 检查nginx的配置并重新启动
sudo service nginx configtest
sudo service nginx restart
Let's Encrypt 的证书有效期是 90 天的,你需要定期 renew
重新申请,这部分 acme.sh
以及帮你做了,在安装的时候往 crontab 增加了一行每天执行的命令
crontab -l # 查看定时任务