Let's Encrypt免费SSL证书的申请及使用
SSL证书是一种数字证书,用于加密服务器和服务器之间以及服务器和用户之间传输的数据。搜索引擎对采用https方式的网站会给与更高的权重,此外象微信小程序等开发平台都需要SSL证书。
目前已经有一些服务商提供 免费SSL证书,如Let's Encrypt、FreeSSL(不支持自动续签)、七牛(不支持 DV 泛域名)、又拍云(不支持 DV 泛域名)等供网站认证使用。其中的Let's Encrypt(https://letsencrypt.org/), 是一个由非营利性组织 互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA),简单的说,就是为网站提供免费的 SSL/TLS 证书,提供的 免费SSL证书 有效期为90天,支持泛域名。Let's Encrypt 生成证书的工具很多,certbot 是官方推荐的签发工具,也可以通过在线服务申请,certbot具有renew功能,通过crontab和renew即可实现自动续签。
1.Certbot-auto下载
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
github地址:
https://github.com/certbot/certbot
2.申请SSL证书
方式1 单一域名注册
#--webroot 这种比较方便只会往网站根目录生成随机认证文件
./certbot-auto certonly --email xxx@sina.com --agree-tos --no-eff-email --webroot -w /data/wwwroot/wordpress -d ofuni.com -d www.ofuni.com
方式2 泛域名注册
./certbot-auto certonly --email admin@example.com -d *.ofuni.com -d ofuni.com --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
这种方法是通过DNS验证,一定要看清楚再下一步,其中有一步是给了你一个随机字符串,需要增加TXT子域名_acme-challenge,并将随机字符串放到TXT记录里。
这一步必须加好了且测试已经生效才能回车;测试方法,新开一个shell执行一下:dig -t txt _acme-challenge.example.com @8.8.8.8,如果在返回信息里包含了正确的随机字符串,则说明已经生效,这时回车即可.
证书生成好会放在/etc/letsencrypt/live里,以域名区分不同的证书.
3.nginx配置
在配置server处
listen 443 ssl; #listen 80
#增加以下部分
ssl_certificate /etc/letsencrypt/live/ofuni.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ofuni.com/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:1m;
ssl_stapling on;
ssl_stapling_verify on;
ssl_ciphers HIGH:!aNULL:!MD5;
#增加http自动转发配置
server{
listen 80;
server_name ofuni.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
4.自动更新
使用cerbot-auto renew更新证书
创建更新脚本
#!/usr/bin bash
cd /data/certbot
./certbot-auto renew
# 每隔60天执行一次
0 4 */60 * * sh /root/certbot-renew.sh >> /var/log/certbot-renew.log