使用Let's Encrypt实现全栈https

前言

最近想把自己的小网站全面支持https协议,奈何囊肿羞涩,所以就搜寻免费证书。阿里和腾讯两家的免费证书貌似都只支持一个域名,最后发现开源的Let’s Encrypt免费而且可以支持多域名,并且2018年还会增加通配符配置,因此就选择使用Let’s Encrypt来让自己的小站全面拥抱https。

如何使用Let’s Encrypt

简单来说,使用Let’s Encrypt来https化网站,需要一下几个步骤:
1. 安装certbot,Let’s Encrypt使用certbot工具来管理证书
2. 申请并下载证书
3. 配置nginx
4. 自动重置证书有效期,由于Let’s Encrypt证书有效期只有90天,所以需要实现自动更新脚本来保证证书有效。

1.安装certbot

最简单的安装方式是使用certbot-auto脚本,以Centos7为例,运行以下命令:

wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
./certbot-auto --help    

这时候可以看到certbot的命令帮助。

2.获取证书

Let’s Encrypt提供了一些插件来提供对Apache、Nginx等的便利操作,由于我的网站使用nginx,故在此以nginx插件来介绍Let’s Encrypt的使用。
使用以下命令来生成证书:

./certbot-auto --nginx --nginx-server-root /usr/local/nginx/conf -d domain.com -d blog.domain.com

该命令运行成功即可生成证书,并自动下载证书到/etc/letsencrypt文件夹下。注意,首次运行该命令时,会让你输入电子邮箱。--nginx是指使用nginx,--nginx-server-root参数是指定nginx配置文件路径,certbot工具默认的nginx配置文件路径是/etc/nginx

3.配置nginx

证书申请完毕,剩下的事情就是配置nginx了。
编辑nginx.conf配置文件,加入以下代码:

server{
    listen 80;
    server_name *.domain.com;
    error_page 497  https://$host$uri?$args;
    rewrite ^(.*)$  https://$host$1 permanent;
}
server {
    server_name  example.domain.com;
    listen 443 ssl;
    add_header X-Content-Type-Options nosniff;

    ssl_certificate /etc/letsencrypt/live/yourdomain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain/privkey.pem;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
}

Let’s Encrypt支持多域名配置,所以我在证书上添加了所有的网站域名。因此,我在nginx配置中,将http请求全部重定向到https。/etc/letsencrypt/live/yourdomain/fullchain.pem/etc/letsencrypt/live/yourdomain/privkey.pem都是第2步中,自动下载到服务器的证书文件。

4.配置自动更新证书

由于Let’s Encrypt仅有90天有效期,所以可以配置crontab定时任务来执行证书更新。
新建文件crontab-certbot-auto-renew,编辑文件,输入以下内容后保存:
11 1 * */2 * /home/certbot/certbot-auto renew
运行crontab crontab-certbot-auto-renew添加定时任务。
/home/certbot/certbot-auto路径是第一步中下载的certbot工具所在路径。

certbot一些命令

./certbot-auto certificates查看所有的证书
./certbot-auto revoke --cert-path /etc/letsencrypt/live/CERTNAME/cert.pem撤销证书
./certbot-auto renew更新证书

你可能感兴趣的:(学习杂记)