前言
为了把公司的网站升级为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里面配置证书, 如下图:
配置好了之后, 重启nginx. 访问网站, 你就能发现已经是https的前缀了~
最后
acme.sh获取的是Letsencrypt证书, 在Letsencrypt申请的证书是免费的, 但是只有2个月的有效期. acme.sh已经做好了定时更新的方法, 可以参考文档设置. 或者, 你也可以通过自己编写定时任务控制.