免费的泛域名证书申请,以及证书格式转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了免费的泛域名证书申请,以及证书格式转换相关的知识,希望对你有一定的参考价值。
参考技术A 本博客针对的是泛域名证书申请(三个月)以及申请后的证书格式转换。申请的证书只有三个月有效期,到期可以续期。泛域名证书会包含一个主域名以及其所有的二级域名,或者某个二级域名对应的所有三级子域名,如:example.com 以及 .example.com或者xxx.example.com与 .xxx.example.com。
如果你只是想要一个单域名证书,可以选择华为或阿里提供的证书服务(1年)。以华为为例:在证书管理中–购买证书类型(DV Basic)–证书品牌(DigiCert) –证书类型(单域名证书) ;接着在证书列表里点击”申请证书”绑定你的域名,绑定过程中需要你添加一条TXT解析记录,用于域名所有权的验证。单域名的申请此处不做详细介绍。
找一台linux系统的主机,在上面执行:
该脚本需要访问github,由于国内的网络原因,可能需要执行多次才能成功,直到执行结果出现,如下图所示表示成功:
安装完后执行以下脚本申请证书:
执行后会拿到两条Domain&TXT value,将其添加到你的域名TXT解析中。
两条TXT解析添加完成后,将acme.sh脚本再次执行,这次在脚本后添加 --renew 参数:
申请完成的证书放置在~/.acme.sh/example.com/目录下:
申请完成后将证书配置到nginx服务:
在nginx.conf中配置启用ssl
在工作中经常会遇到的两类证书:jks与(pem/crt)。jks是JAVA KeyStore缩写,可以被java/tomcat等可识别的证书。而pem/crt则是apache、nginx、openssl可识别的证书。很多时候需要在两种格式之间转换。
需要用到epenssl以及java自带的keytool工具:
example.com.jks就是我们想要的能被java直接识别的证书啦~
将上面的段落另外为jks2crt.sh,并授予执行权限,chmod +x jks2crt.sh
./jks2crt.sh [证书路径] [证书自定义密码]
其他证书格式
PEM – Privacy Enhanced Mail,打开看文本格式,以”—–BEGIN…”开头, “—–END…”结尾,内容是BASE64编码,Nginx和Apache偏向于使用。
DER – Distinguished Encoding Rules,打开看是二进制格式,不可读,Java和Windows偏向于使用
CRT – CRT应该是certificate的三个字母,其实还是证书的意思,常见于类UNIX系统,有可能是PEM编码,也有可能是DER编码,大多数应该是PEM编码,可读的(cat)。
CER – 还是certificate,还是证书,常见于Windows系统,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码。
如何白嫖一个免费的泛域名SSL证书
前提
为了给个人博客提速,全部静态资源放到云上的对象存储中,并且加了CDN
,耗费了不少RMB
。新申请的域名也备案通过了,但是SSL
证书一般需要按年付款,看了下「鹅云」上最便宜的泛域名证书也裤头一紧:
毕竟至少是一年一付,金额也不算少(4块钱一天),感觉钱包压力有点大。于是通过多种搜索方式,找到了一种可行的白piao泛域名SSL
证书的方案,并且应用于已经备案好的个人博客域名上。最终子域名可以通过HTTPS
协议访问,效果如左下的图:
那么开始发车!
❝本文只适用于在鹅云上备案、解析的域名,已经把成功把
❞HTTPS
应用于鹅云的CDN
,其他云厂商没有进行试验,有兴趣的伙伴可以自行按照下文的思路重演。
安装ACME
目前使用量最大的免费SSL
证书就是Let’s Encrypt
,自2018-03
开始,Let’s Encrypt
官方发布上线了免费的SSL
泛域名证书,目前通过DNS
方式获取比较快,国内可以通过鹅云的DNSPod
域名API
或者猫云域名API
自动签发Let’s Encrypt
泛域名证书。因为鹅云使用的就是DNSPod
域名,并且鹅云和DNSPod的账号是打通的,可以使用wx
直接扫码登录。下文需要对鹅云和DNSPod
进行操作,为了简化证书申请过程,需要提前安装acme.sh。acme.sh
实现了acme
协议,可以从Let’s Encrypt
生成免费的证书,自动创建cron
任务, 每天零点自动检测所有的证书,如果发现证书快过期了,需要更新,则acme.sh
会自动更新证书,安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录中。
先进行依赖下载和更新。如果服务器是CentOS
系统,使用下面的命令:
yum update && yum install curl -y && yum install cron -y && yum install socat -y
如果服务器是Debian/Ubuntu
系统,则使用下面的命令:
apt-get update && apt-get install curl -y && apt-get install cron -y && apt-get install socat -y
接着使用下面的命令安装acme.sh
:
curl https://get.acme.sh | sh
如果控制台输出:
.....
Good, bash is found, so change the shebang to use....
OK
Install success!
说明acme.sh
安装成功。
注册并配置DNSPod的秘钥
如果使用了鹅云的服务,直接wx
扫码就可以登录DNSPod
,否则需要注册绑定。登录之后,点击账号中心的「密钥管理」:
然后命名并且创建一个密钥:
记得要保存好秘钥的ID
和Token
,后面的步骤需要用到这两个配置。
申请证书
申请好DNSPod
的秘钥,得到ID
和Token
之后,在服务器的环境变量中添加这两个值,执行命令:
export DP_Id='你的ID'
export DP_Key='你的Token'
例如:
export DP_Id='123456'
export DP_Key='xxxyyyzzz'
接着使用acme.sh
申请签发证书,执行命令:
~/.acme.sh/acme.sh --issue --dns dns_dp -d throwable.club -d *.throwable.club
这里throwable.club
是笔者的博客域名,如果需要颁发你自己的域名的SSL
证书,这里替换为你的域名即可。接着静静等待acme.sh
的脚本程序执行完毕,如果过程中没有发生其他意外,那么证书申请成功后的控制台日志如下:
证书文件会自动存放在/root/.acme.sh/域名
目录下,例如/root/.acme.sh/throwable.club
目录。查看/root/.acme.sh/throwable.club
目录的内容:
其中,「fullchain.cer
就是证书文件内容,而throwable.club.key
就是证书的私钥」。然后在鹅云的CDN
的HTTPS
配置中指定一下证书的配置即可:
提交后,CDN
会重新部署,数分钟之后就会生效。最后注意一下:
申请下来的泛域名
SSL
免费证书有效期只有3个月,但是acme.sh
每晚零点会自动检测证书的有效期并且进行续期。目前鹅云上的
CDN
如果使用了Let’s Encrypt
的证书,暂时不支持自动续期,需要手动续期,也就是每隔三个月要把/root/.acme.sh/域名
目录下的fullchain.cer
和域名.key
的内容更新到CDN
配置中提交刷新一下。
小结
Just enjoy yourself.
参考资料:
https://github.com/acmesh-official/acme.sh
互联网中的资料
(本文完 c-1-d e-a-20200814)
推荐:
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!
以上是关于免费的泛域名证书申请,以及证书格式转换的主要内容,如果未能解决你的问题,请参考以下文章