如何获取免费的SSL证书

据我知道有两种:一种是阿里云申请,一个账户可以申请20个证书,每次申请的证书期限一年;另一种是Let’s Encrypt的免费证书,需要通过脚本生成,证书的期限只有三个月,一般会使用的自动脚本定时更新证书。 前者比较简单,以后再分享。下面介绍下Let’s Encrypt的免费证书获取,操作系统certos7。

1. 域名准备

将申请的域名的解析到服务器地址。在服务器上搭建nginx服务或其他http的服务,这里我选用了nginx的服务。保证访问域名可行的,能浏览的nginx的默认的html内容。

如何获取免费的SSL证书
图1 nginx的默认html

注意事项:下面的几步的操作都是在此安装了nginx的服务器执行。

2. 安装acme脚本

acme是一个开源的生成Let’s Encrypt的证书脚本。但也可以使用letsencrypt。我觉得acme使用起来较简单。安装acme脚本,执行命令:

curl https://get.acme.sh | sh

wget -O - https://get.acme.sh|sh

这两个命名执行任何一个都可以,也可以访问github:https://github.com/acmesh-official/acme.sh 进一步了解acme详情。

3. 生成SSL证书

在安装acme的用户下,进入目录,命令: cd ~/.acme.sh
如何获取免费的SSL证书
图2 .acme.sh目录

执行生成证书的命名:

./acme.sh --issue -w /usr/share/nginx/html -d 域名.com --nginx

生成的证书在当前 目录以“域名.com”为命的目录下面。主要文件有fullchain.cer、域名.com.cer、域名.com.key、ca.cer。

注意事项:参数-w为webroot的目录,具体根据nginx的安装情况配置,“/usr/share/nginx/html”为nginx的html目录。

4. 修改nginx配置

在nginx.conf配置文件中,找到SSL相关的配置,如图,将域名.com.cer、域名.com.key两文件的路径和文件名配置到ssl_certificate、ssl_certificate_key参数上即可。

如何获取免费的SSL证书
图3 nginx.conf

5. 重启nginx

测试证书是否生效,查看浏览器地址栏的安全图标,以chrome为例 正常状态会显示一把锁的图标,点击会弹出证书的说明信息。

7. 更新证书

执行命令: ./acme.sh --renew -d mydomain.com --force

注意事项:如果nginx的根目录定向到其他服务,会发生报错。