使用acme.sh安装https证书

212 阅读2分钟

前言

为了把公司的网站升级为https, 我在网上找到了一个好用的工具, 能够快速的帮我https的升级. 就是 acme.sh项目, 里面有比较详细的教程.

使用时的注意事项

这个工具的具体教程我就不说了, 文档里面写得很仔细了. 我就记录一下我使用过程中遇到的问题, 以备不时之需.

主要的问题是在生成证书的时候,没有成功. 文档中给出了多种生成证书的方式. http 方式需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证. 然后就可以生成证书了. 手动 dns 方式, 手动在域名上添加一条 txt 解析记录, 验证域名所有权.

我采用的是http方式, 最开始我用的是这个方式:

acme.sh  --issue  -d mydomain.com -d www.mydomain.com  --webroot  /home/wwwroot/mydomain.com/

但是没有生成证书成功, 不知道是不是我设置的webroot目录不正确.

然后我又采用了nginx方式:

acme.sh  --issue  -d example.com  --nginx /etc/nginx/nginx.conf

发现依然没有成功, 一直再报一个验证错误. 在这里, 卡了我几个小时.

无奈之下, 我换用第三种方式来解决:

acme.sh  --issue -d mydomain.com   --standalone

这次总算是成功了 ^_^~

使用这种方法的时候, 要让80端口和443没有被占用. (在我使用的时候, 我会停掉nginx)

生成完证书之后, 你可以在~/.acme.sh/mydomain.com目录下面找到生成的证书文件.

nginx安装https证书

如果你的nginx没有安装ssl模块, 你需要先安装, 可以参考这一篇文章

拷贝下图中的2个证书文件到nginx的ssl模块下面, 地址根据你的具体情况而定. 然后在nginx.conf里面配置证书, 如下图: image.png

配置好了之后, 重启nginx. 访问网站, 你就能发现已经是https的前缀了~

最后

acme.sh获取的是Letsencrypt证书, 在Letsencrypt申请的证书是免费的, 但是只有2个月的有效期. acme.sh已经做好了定时更新的方法, 可以参考文档设置. 或者, 你也可以通过自己编写定时任务控制.