Centos7 使用Let‘s Encrypt 获取Https证书

简介:Let’s Encrypt 是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由 Mozilla、思科、Akamai、IdenTrust 和 EFF 等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由 HTTP 过渡到 HTTPS,目前 Facebook 等大公司开始加入赞助行列。

Let’s Encrypt 已经得了 IdenTrust 的交叉签名,这意味着其证书现在已经可以被 Mozilla、Google、Microsoft 和 Apple 等主流的浏览器所信任,你只需要在 Web 服务器证书链中配置交叉签名,浏览器客户端会自动处理好其它的一切,Let’s Encrypt 安装简单,使用非常方便。

一、获取Certbot客户端

# 下载 Certbot 客户端
$ wget https://dl.eff.org/certbot-auto

# 设为可执行权限
$ chmod a+x certbot-auto

二、申请证书

客户在申请 Let’s Encrypt 证书的时候,需要校验域名的所有权,证明操作者有权利为该域名申请证书,目前支持三种验证方式:

  • dns-01:给域名添加一个 DNS TXT 记录。
  • http-01:在域名对应的 Web 服务器下放置一个 HTTP well-known URL 资源文件。
  • tls-sni-01:在域名对应的 Web 服务器下放置一个 HTTPS well-known URL 资源文件。

注:申请通配符证书,只能使用dns-01的方式。

使用Certbot客户端申请证书通过一个linux命令就可以实现

./certbot-auto certonly  -d "*.xxx.cn" --manual --preferred-challenges dns-01  --server https://acme-v02.api.letsencrypt.org/directory

*.xxx.cn 替换为自己的域名即可。

在申请过程中按照提示选择,开始需要输入邮箱,中途需要添加DNS的TXT解析记录,在添加过之后保证TXT记录生效之后,回车确认,最后会输出

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/xxx.cn/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/xxx.com/privkey.pem
   Your cert will expire on 2018-08-20. 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

表示你证书申请成功。证书和密钥保存在 /etc/letsencrypt/live 目录下

三、nginx 配置 Let’s Encrypt 证书

nginx 配置如下

server {

listen 443 ssl;
server_name     test.51weker.cn;
root     /home/rock/wwwroot/test.51weker.cn;
ssl_certificate /etc/letsencrypt/live/test.51weker.cn-0001/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.51weker.cn-0001/privkey.pem;
ssl_dhparam /etc/ssl/certs/dhparams.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers  on;
location / {
 try_files $uri $uri/ /index.html;
 } 

}

ssl_dhparam 以及 ssl_ciphers 配置项可选,主要是为着网站的安全性考虑,加上之后安全性会大大的提升。

dhparams.pem 文件可以通过下面命令生成:

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

完成以上过程,你的网站就可以使用https访问。

四、自动续期 Let‘s Encrypt 获取的Https证书

1、编写自动化脚本更新 update.sh

#/bin/sh
#证书更新脚本
cd /
./certbot-auto renew
/usr/sbin/nginx -s reload

2、设为可执行权限

chmod a+x update.sh

3、Linux定时每月18号执行

30 4 18 * * /etc/letsencrypt/./update.sh

你可能感兴趣的:(Centos7 使用Let‘s Encrypt 获取Https证书)