去年11月底开始着手使用https来代替http,提高安全性,同时也能避免网络运营商的广告。由于用的阿里云的全家桶(ECS+域名+CDN+OSS+直播等),正好看到阿里云上有免费的SSL证书,虽然有一年的期限,但想着先上了再说,一年以后,也许就全免费了呢。这一年期间,使用阿里云的免费证书也是各类坑,首先不知道每一个帐户只有20个(去年这个时候是连说明都没有的,不留工单问,没人知道),就一个劲的申请,结果浪费了不少(好像是说审核关闭的,仍是吊销的,也占用1个指标,我去)。nginx
今年9月份的时候,微信公众号端又要开发一些东西,就新搭了服务器,可是不想去折腾阿里云的免费SSL证书了。正好,let's的免费证书的工具也比去年有更新,不少浏览器都支持了,听说明年还支持泛域名,因此,就考虑用这个啦。至于其余的签发商更安全啊,更有名啊,更屌B啊,好比说加密算法之类更牛啊等,这些就不考虑了,反正let's的目前彻底够用了,又不是每天有几百万的资金经过项目流动(流汗)。至于let's一次签发90天的问题,一个crontab就解决。web
1)安装let's(基于centos,其余系统大同小异)算法
yum install epel-release cd /data/certificate wget https://dl.eff.org/certbot-auto --no-check-certificate chmod +x ./certbot-auto ./certbot-auto -n
说明,./certbot-auto -n只是用来安装依赖包的,也能够跳过直接到下面的生成证书的步骤,国内VPS或服务器上使用的话建议先修改成国内的pip源。centos
2)生成证书
首先要将相应的域名,解析到服务器。(如本例中的www.chen.net)
单域名生成证书:浏览器
./certbot-auto certonly --email email@email.com --agree-tos --no-eff-email --webroot -w /data/web/www -d www.chen.net
多域名单目录生成单证书:(即一个网站多个域名使用同一个证书)安全
./certbot-auto certonly --email email@email.com --agree-tos --no-eff-email --webroot -w /data/web/www -d www.chen.net -d help.chen.net
多域名多目录生成一个证书:(即一次生成多个域名的一个证书)bash
./certbot-auto certonly --email email@email.com --agree-tos --no-eff-email --webroot -w /data/web/www -d www.chen.net -d help.chen.net -w /data/wwwroot/web -d www.chen.cn -d chen.cn
3)结果服务器
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.chen.net/fullchain.pem. Your cert will
expire on 2018-02-15. To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:微信
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le网络
就是生成成功。
4)配置nginx
注意图中红色部分,请使用 fullchain.pem(不是chain.epm),替换掉原来阿里云下载的pem,不然的话,在安卓端,会出现打开空白的问题。
5)配置crontab
* * * */1 * /data/certificate/certbot-auto renew --disable-hook-validation
6)在阿里云上,OSS和CDN的配置上,选择直接输入证书内容替换原来直接选择的阿里云证书,就能够了。
注意事项:
一、由于默认环境是不容许访问以"."开头的隐藏文件及目录的,因此访问http://abc.com/.well-known/acme-challenge/**** 这个连接的话返回403错误,因此必需要将对应虚拟主机配置文件里的
location ~ /\.
{
deny all;
}
这段配置删掉或注释掉或在这段配置前面加上
location ~ /.well-known {
allow all;
}
以上配置代码,而后重启nginx。