0

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

 4 months ago
source link: https://www.cnblogs.com/nuccch/p/16483136.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

网络上关于如何签发免费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 *. \
--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.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证书


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK