发表日期:2018-11 文章编辑:小灯 浏览次数:1964
一直想撸一下https,最近刚好有点空,就实现了一下。之前看过一篇教你快速撸一个免费HTTPS证书的文章,通过Certbot
来管理Let's Encrypt
的证书,使用前需要安装一堆库,觉得不太友好。所谓条条大路通罗马,肯定还有其他方法可以做这个事情。
经过一番研究,发现了 acme.sh 这个库,这个是用Shell脚本编写的,不需要安装其他东西,比较纯净,觉得比较适合自己,记录一下过程。
curl https://get.acme.sh | sh
这个命令后会将acme.sh安装到~/.acme.sh/
目录下
重新载入~/.bashrc
source ~/.bashrc
acme.sh--issue -d www.your-domin.com--webroot/srv/your-domin.com/
这个命令的意思是用http方式将www.your-domin.com生成一个证书,/srv/your-domin.com/
是你的网站根目录。(这个过程中acme.sh
会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后又自动删除验证文件.)
默认生成的证书都放在安装目录下: ~/.acme.sh/,这个目录一般来说不能让nginx或Apache直接使用。所以我们需要将证书放到一个指定的目录,习惯是放在/etc/nginx/ssl/
目录下。acme提供了--installcert来安装证书,只需指定目标位置, 然后证书文件会被copy到相应的位置。
先确保存在/etc/nginx/ssl/
目录
mkdir /etc/nginx/ssl
copy证书并指定nginx reload命令
acme.sh--installcert-dwww.your-domin.com \ --key-file /etc/nginx/ssl/www.your-domin.com.key \ --fullchain-file /etc/nginx/ssl/fullchain.cer \ --reloadcmd"service nginx force-reload"
service nginx force-reload是为了在让acme自动更新时候能够重启nginx使得证书生效。执行完命令可以在/etc/nginx/ssl/
看到多了www.your-domin.com.key
和www.your-domin.com.cer
的文件。
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
这一步不是必须,但最好加上,后面配置好后会通过ssllabs.com 来验证一下,如果这一步ssl_dhparam 未配置,将导致 ssllabs.com 的评分降到 B。A+是最好。
证书已安装完毕,接下来就是让nginx来使用这个证书了。由于我这个服务器有几个站点,而目前只是一个站点配置了证书,因此只修改当前站点的conf即可
server { listen 80; server_name www.your-domin.com; listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; ssl_certificate /etc/nginx/ssl/www.your-domin.com.cer; ssl_certificate_key /etc/nginx/ssl/www.your-domin.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_dhparam /etc/nginx/ssl/dhparam.pem; ... }
ssl_prefer_server_ciphers on;
这个配置能提高证书的评分。
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
能提高证书评分,这个文件是在第四步时生成的,若没有做则不需要写这句。
nginx -t
验证一下nginx配置是否正确,然后systemctl restart nginx
重启一下nginx,就可以用https://www.your-domin.com测试一下你的站点啦。
Let's Encrypt 的证书有效期是 90 天的,需要定期重新申请,不过acme在安装的时候就已经设置了自动更新,所以这一步不用关心,很省心。
这里了解一下acme.sh的自动更新:安装acme时会自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.
查看任务
# crontab -l 47 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
手动renew一下证书可以通过这个命令
acme.sh --cron -f
目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.所以为了省心省力,最好还是设置一下软件的自动更新,执行下面的命令就可以了。
acme.sh--upgrade--auto-upgrade
在这个网站可以验证一下你的证书级别,根据我上面的配置可以评级为A。
https://www.ssllabs.com/ssltest/analyze.html?d=www.fengxianqi.com
日期:2018-04 浏览次数:6659
日期:2017-02 浏览次数:3342
日期:2017-09 浏览次数:3540
日期:2017-12 浏览次数:3427
日期:2018-12 浏览次数:4678
日期:2016-12 浏览次数:4471
日期:2017-07 浏览次数:13541
日期:2017-12 浏览次数:3388
日期:2018-06 浏览次数:4163
日期:2018-05 浏览次数:4347
日期:2017-12 浏览次数:3470
日期:2017-06 浏览次数:3889
日期:2018-01 浏览次数:3837
日期:2016-12 浏览次数:3807
日期:2018-08 浏览次数:4332
日期:2017-12 浏览次数:3594
日期:2016-09 浏览次数:6286
日期:2018-07 浏览次数:3107
日期:2016-12 浏览次数:3125
日期:2018-10 浏览次数:3282
日期:2018-10 浏览次数:3373
日期:2018-09 浏览次数:3468
日期:2018-02 浏览次数:3484
日期:2015-05 浏览次数:3418
日期:2018-09 浏览次数:3210
日期:2018-06 浏览次数:3337
日期:2017-02 浏览次数:3780
日期:2018-02 浏览次数:4237
日期:2018-02 浏览次数:4041
日期:2016-12 浏览次数:3482
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.