使用acme.sh撸一个免费且自动更新的HTTPS证书

栏目: 服务器 · Nginx · 发布时间: 5年前

内容简介:一直想撸一下https,最近刚好有点空,就实现了一下。之前看过一篇经过一番研究,发现了这个命令后会将acme.sh安装到

前言

一直想撸一下https,最近刚好有点空,就实现了一下。之前看过一篇 教你快速撸一个免费HTTPS证书 的文章,通过 Certbot 来管理 Let's Encrypt 的证书,使用前需要安装一堆库,觉得不太友好。所谓条条大路通罗马,肯定还有其他方法可以做这个事情。

经过一番研究,发现了 acme.sh 这个库,这个是用 Shell 脚本编写的,不需要安装其他东西,比较纯净,觉得比较适合自己,记录一下过程。

准备工作

  1. 一个已解析好的域名(可以用http来访问)。
  2. 开启服务器的443端口防火墙。

步骤

一、安装acme.sh

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 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后又自动删除验证文件.)

三、安装或copy证书到nginx目录

默认生成的证书都放在安装目录下: ~/.acme.sh/,这个目录一般来说不能让nginx或Apache直接使用。所以我们需要将证书放到一个指定的目录,习惯是放在 /etc/nginx/ssl/ 目录下。acme提供了--installcert来安装证书,只需指定目标位置, 然后证书文件会被copy到相应的位置。

先确保存在 /etc/nginx/ssl/ 目录

mkdir /etc/nginx/ssl

copy证书并指定nginx reload命令

acme.sh  --installcert  -d  www.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.keywww.your-domin.com.cer 的文件。

四、生成 dhparam.pem 文件

openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

这一步不是必须,但最好加上,后面配置好后会通过ssllabs.com 来验证一下,如果这一步ssl_dhparam 未配置,将导致 ssllabs.com 的评分降到 B。A+是最好。

五、配置nginx

证书已安装完毕,接下来就是让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/sslte...

以上所述就是小编给大家介绍的《使用acme.sh撸一个免费且自动更新的HTTPS证书》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

跨越鸿沟

跨越鸿沟

[美] 杰弗里·摩尔(Geoffrey A. Moore) / 赵娅 / 机械工业出版社 / 2009-1 / 36.00元

在真正涉足高科技领域之前,你有必要读一读这本书——在这个节奏飞快、竞争激烈的技术竞技场上,这本书绝对能够帮助你更容易地获得成功。 ——威廉姆·劳森 罗盛软件公司董事会主席兼CEO 最近40年来,本书对高科技营销各个方面所做出的贡献远远超过了其他任何相关书籍。如今已经有无数企业和大学分别在自己的运营和教学过程中引入了鸿沟思想,如果你还不是这些企业或大学中的一员,你可能就要担心自己的未来了......一起来看看 《跨越鸿沟》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具