交代一下背景,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; #根据自己实际的更改
上面只列出了主要的配置部分,请根据实际更改。
用户评论
这款Let’s Encrypt证书申请太简单了,几分钟就搞定了。
有15位网友表示赞同!
用了这个免费的Let’s Encrypt证书,网站速度感觉更有保障了。
有18位网友表示赞同!