免费证书Let’s Encrypt的申请和使用

交代一下背景,PHP学习网之前一直在使用阿里云的CA证书,今年到期重新申请后告诉我,我的域名有违规关键字“hp”,擦擦的这也叫违规,看到了阿里云给的解决办法,一是换个域名,二是付费买一个证书(对于屌丝来说,这是个梦)。但是做为一个技术人员,还能被这玩意难住,通过搜索查找,找到如下几类:

1、Let’s Encrypt:免费,快捷,支持多域名(ACME v2 现已正式支持通配符证书),三条命令即时签署+导出证书。缺点是暂时只有三个月有效期,到期需续签。

2、StartSSL免费DV证书:不推荐!

3、Comodo PositiveSSL:便宜,单年9美刀,如果签三年大概每年4至5美刀。可签署ECC SSL证书。

4、RapidSSL:单年签署价格同PositiveSSL,并没有什么优缺点。

5、沃通(Wosign)免费DV证书:不推荐!

经过考虑,果断选择第一个。

acme.sh 方式获取证书

1、获取acme.sh

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

如下所示,表示安装成功啦

注:安装完后若是提示,命令没有找到,可以执行

source ~/.bashrc

2、获取证书

acme.sh,可以帮我们自动配置DNS,无需我们在去后台自己设置。请选去后台获取 app_key和app_Secret (点此获取)然后执行以下脚本

# 替换成从阿里云后台获取的密钥
export Ali_Key="viphperkey"
export Ali_Secret="viphperSecret"
# 换成自己的域名
acme.sh --issue --dns dns_ali -d viphper.com -d *.viphper.com

这里是通过线程休眠120秒等待DNS生效的方式,所以至少需要等待两分钟

当出现此时,代表证书已经下载到了你的服务器中,在目录 /root/.acme.sh/viphper.com中。

第一次成功之后,acme.sh会记录下App_Key跟App_Secret,并且生成一个定时任务,每天凌晨0:00自动检测过期域名并且自动续期(省去了三个月到期手动续费的麻烦)。

到此证书已经下载到服务器中的,下面说一下如何使用。

先将证书copy到需要使用到目录,一般会copy到nginx 目录下面,用下面的命令:

acme.sh  --installcert  -d  <domain>.com      
--key-file   /etc/nginx/ssl/<domain>.key
--fullchain-file /etc/nginx/ssl/fullchain.cer
--reloadcmd  "service nginx force-reload"

(一个小提醒, 这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload)

nginx配置

listen 443 ssl http2;
#listen [::]:443 ssl http2;
server_name www.viphper.com viphper.com;
index index.html index.htm index.php default.html default.htm default.php;
root  /www/www.viphper.com;
ssl on;
ssl_certificate cert/fullchain.cer; #根据自己实际的更改
ssl_certificate_key cert/viphper.com.key; #根据自己实际的更改

上面只列出了主要的配置部分,请根据实际更改。

作者:PHP学习网,本文 免费证书Let’s Encrypt的申请和使用 版权归作者,免费文章欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
编辑精选

发表评论