免费SSL证书申请及部署实践

网络上关于如何签发免费SSL证书的博文一大片,但是真正操作起来的能让新手不迷惑的却很少,很多操作步骤受限于国内无法访问外网的阻碍,导致无法真正实施成功。

实际上,关于申请免费SSL证书主要涉及两大部分:

第一,如何快速申请到一个免费的DV证书(通常免费的证书都是DV证书,DV证书对于个人或者测试用途足够了)。

第二,成功申请到证书之后如何配置部署,使得网站可以通过HTTPS访问。

 

上面两步可以使用脚本工具自动化实现,也可以手动完成。

如下示例将以完全手动的方完成SSL证书申请和部署(基于nginx)。

 

申请SSL证书

再经历了仔细阅读Let’s Encrypt手册依然没有成功完成SSL证书申请的煎熬之后,果断放弃。

最后在FreeSSL.cn非常直观简单地就完成了免费SSL证书的签发。

个人觉得,在FreeSSL.cn上签发SSL证书真的非常方便,热别适合新手使用。

首先,进入到FreeSSL.cn页面,选择支持多域名和通配符的“5lSSL”。

点击51SSL

 

跳转到51ssl的页面,此时需要注册一个账户并登录。

选择“订单管理”->“证书申请”。

订单管理-证书申请

 

选择“非商业证书”->“TrustAsia 免费域名型通配符SSL证书”,点击“购买”按钮。

非商业证书-购买

 

说明:在这里选择什么类型的证书,完全根据自己的需求而定。由于我需要使用多个子域名证书,所以选择了“TrustAsia 免费域名型通配符SSL证书”。

 

来到“申请 TrustAsia 免费域名型通配符SSL证书”的操作界面。

填写好相关细心之后,点击“提交证书申请”按钮。

提交证书申请

 

接下来最重要的一步就是“域名验证”,强烈建议使用“Email验证”方式,这样只需要在收到验证邮件之后鼠标点击就可以完成验证操作。

根据提示完成相关验证操作,证书的签发需要等待一会儿,不要着急,大约几分钟之后会收到证书签发成功的邮件。

 

在收到证书签发成功的邮件通知以后,再次来到管理后台界面,选择“订单管理”,点击订单编号旁边的“快速查看”,在弹出界面中点击“下载证书”,弹出证书下载界面。

下载证书-1

 

在证书下载弹出界面中,首先选择部署SSL证书的服务器,然后再选择“下载”,或者将证书文件发送到邮箱。

下载证书-2

 

以部署到nginx的证书为例,下载得到一个压缩包,包含2个文件:

 

“.pem文件”:SSL证书文件

“.key文件”:SSL证书私钥文件

部署SSL证书

注意:在部署SSL证书之前,先要确保域名已经在添加了解析,并且可以通过http协议使用域名访问到目标网站。

 

以在nginx中部署SSL证书为例,将通过上述方式签发得到的SSL证书上传到nginx服务器,在nginx配置文件中添加配置:

 

server {

   listen       80;

   server_name  www.zhangsan.org.cn;

   # 访问http时强制跳转到https

   rewrite ^(.*)$  https://$host$1 permanent;

}

 

server {

   listen 443 ssl;

   server_name  www.zhangsan.org.cn;

 

   root   /data/www;

   index  index.html index.htm;

 

   access_log /dev/null;

   ssl_certificate  /data/ssl/zhangsan.org.cn_cert_chain.pem; #  证书文件路径

   ssl_certificate_key  /data/ssl/zhangsan.org.cn_key.key; # 证书私钥文件路径

   ssl_session_timeout 5m;

   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

   ssl_prefer_server_ciphers on;

}

至此,签发和部署免费SSL证书的操作过程完毕!

虽然在FreeSSL.cn通过51SSL签发证书非常便捷(操作过程也很容理解),但是有个不便之处在于:在这里签发的免费证书无法实现自动化续签(默认只有90天有效期)。

 

使用acme脚本签发证书并实现自动化续签

如果希望签发的证书能实现自动化续签,可以选择acme方式。

进入到FreeSSL.cn页面,输入需要签发证书的域名,品牌保持默认选择(亚洲诚信),点击“创建免费的SSL证书”按钮。

选择acme签发证书

 

如果没有注册账户,会提示先注册账户并登录。

来到ACME域名配置界面,在“域名”输入框中默认显示的就是刚才输入的域名信息,点击“下一步”按钮。

点击下一步按钮进入DCV配置

 

进入到DCV配置阶段。

展示CNAME记录信息

 

这时需要根据提示信息在域名解析平台添加一条对应的CNAME记录。

以在阿里云平台操作为例如下:

阿里云添加CNAME记录

 

添加CNAME记录后等待几分钟,再回到DCV配置界面,点击“配置完成,立即检测”,如果能成功检测到刚才配置的CNAME记录,则进入到“部署”界面。

注意:在检测DCV配置这一步可能需要等一会儿,直到成功为止。

 

先安装acme再签发证书

成功安装好acme脚本后执行如下命令来签发证书:

 

# 这里只是示例,每个证书的签发命令都不同,直接从部署界面COPY即可

acme.sh --issue -d *.zhangsan.org.cn  --dns dns_dp --server https://acme.freessl.cn/v2/DV90/directory/zhf8n20uk8nb5bt2oc4j

执行上述命令之后会在在~/.acme.sh目录下生成对应证书文件目录:'*.zhangsan.org.cn'。

到这里还没有结束,不同的Web服务器上使用的证书文件格式有所不同,以nginx为例还需要使用如下命令生成对应格式的证书文件和私钥文件。

 

acme.sh --install-cert -d *.zhangsan.org.cn \

--key-file       /data/ssl/zhangsan.org.cn_key.pem  \

--fullchain-file /data/ssl/zhangsan.org.cn_cert.pem \

执行上述命令后就会在/data/ssl目录下生成能在nginx中使用的证书文件和私钥文件了。

完成上述操作之后,到nginx配置文件中添加对应证书配置即可。

 

至此,仅仅实现了证书的签发,那么如何才能实现证书的续签呢?默认只有30天有效期。

实际上,在我们使用使用acme脚本签发证书的时候,会自动添加一条命令到crontab中,从而实现证书的续签操作。

 

# crontab -l

# 这条命令是自动添加的,所以不用动,通过定时任务的方式实现证书的自动续签

41 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

【参考】

https://freessl.cn/

https://www.zhihu.com/question/340572894 免费的SSL证书和收费的证书有什么区别?

https://www.jianshu.com/p/1a792f87b6fe Let's Encrypt 证书申请及配置

https://github.com/acmesh-official/acme.sh/wiki/Run-acme.sh-in-docker

https://www.laoliang.net/jsjh/technology/8898.html 2021年阿里云最新新手详细申请免费SSL(https)证书图解方法(流程)

https://blog.csdn.net/jiuyuefenglove/article/details/108625400 SSL证书申请最详细教程

https://zhuanlan.zhihu.com/p/174755007 33种免费获取SSL证书的方式

https://blog.csdn.net/ithomer/article/details/78075006 十大免费SSL证书:网站免费添加HTTPS加密

https://blog.fundebug.com/2018/07/06/apply-lets-encrypt-certificate/ 教你快速撸一个免费HTTPS证书

https://www.awaimai.com/2218.html 使用Let's Encrypt为网站加上HTTPS

https://coolshell.cn/articles/18094.html 如何免费的让网站启用HTTPS

https://yeaheo.com/post/nginx-lets-encrypt-ssl-certificate-config/ 免费申请 Let's Encrypt SSL 证书

https://blog.sprov.xyz/2019/04/25/apply-ssl-certificate-at-freessl/ 在 FreeSSL 上为你的域名申请免费 SSL 证书

https://cn.aliyun.com/product/cas 阿里云申请免费SSL证书

有话要说