给网站添加https

开启https这里使用了免费的Let’s Encrypt,开源万岁,感谢!
直接使用 Let’s Encrypt 官网推荐的自动部署脚本Certbot,步骤如下:


前往:https://certbot.eff.org/,选择你的服务器和系统。
我用的是Nginx和centos 6.8

 

安装
由于您的操作系统似乎没有打包版本的Certbot,因此您应该使用我们的certbot-auto脚本来获取副本:

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

certbot-auto接受与certbot相同的标志; 它会安装所有自己的依赖项并自动更新客户端代码。
Certbot的DNS插件可用于从Let’s Encrypt的ACMEv2服务器中自动获取通配符证书,但您的操作系统尚不可用。这应该很快就会改变,但如果你不想等,你现在可以通过在Docker中运行Certbot来使用这些插件 , 而不是使用这个页面上的说明。

 

开始使用 – 获取证书

  1. 白痴全自动:
    $ sudo ./path/to/certbot-auto –nginx
    Certbot有一个Nginx插件,它在许多平台上都受支持,并且安装了证书。运行此命令将为您获得证书,并让Certbot自动编辑您的Nginx配置以便为其提供服务。如果您感觉更保守,并且想手动更改Nginx配置,则可以使用certonly 子命令:
  2. 半自动,后期需要自己修改nginx
    $ sudo ./path/to/certbot-auto –nginx certonly
    ./certbot-auto certonly –email youemail@vpser.net –agree-tos –no-eff-email –webroot -w /home/wwwroot/www.vpser.net -d www.vpser.net -d bbs.vpser.net
    ./certbot-auto certonly –email sam@madebylink.com –agree-tos –no-eff-email –webroot -w /home/wwwroot/www.vpser.net -d www.vpser.net -d bbs.vpser.net
    ./certbot-auto certonly –email sam@madebylink.com –agree-tos –no-eff-email –webroot -w /home/wwwroot/smartstovefan.com -d smartstovefan.com -w /home/wwwroot/madebylink.com -d www.madebylink.com -d madebylink.com -w /home/wwwroot/linsipeng.com -d www.linsipeng.com -d linsipeng.com -w /home/wwwroot/wisedry.com -d www.wisedry.com -d wisedry.com 

    mkdir -p /home/wwwroot/smartstovefan.com/.well-known/acme-challenge
    echo -n “Testing webroot acme challenge” > /home/wwwroot/smartstovefan.com/.well-known/acme-challenge/test
    curl -ikL http://smartstovefan.com/.well-known/acme-challenge/test
    chown -R nginx:nginx “/home/wwwroot/smartstovefan.com”
    ./certbot-auto certonly –email sam@madebylink.com –agree-tos –no-eff-email –webroot -w /home/wwwroot/smartstovefan.com -d smartstovefan.com
    注意事项:
    1、因为默认LNMP的虚拟主机里是禁止 . 开头的隐藏文件及目录的,所以访问http://abc.com/.well-known/acme-challenge/**** 这个链接的话返回403错误,所以必须要将对应虚拟主机配置文件里的
    location ~ /\.
    {
    deny all;
    }
    这段配置删掉或注释掉或在这段配置前面加上
    location ~ /.well-known {
    allow all;
    }

    以上配置代码,然后重启nginx。

 

Nginx设置:

把监听的80端口删掉,替换成以下:

listen 443 ssl;   #lnmp1.3+版本默认支持http2,可以加上http2,lnmp1.2版本默认支持spdy,可以加上spdy
server_name www.vpser.net;     ##这里是你的域名
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.vpser.net;            #网站目录
ssl_certificate /etc/letsencrypt/live/www.vpser.net/fullchain.pem;    #前面生成的证书,改一下里面的域名就行
ssl_certificate_key /etc/letsencrypt/live/www.vpser.net/privkey.pem;   #前面生成的密钥,改一下里面的域名就行
SSLCertificateChainFile /etc/letsencrypt/live/www.vpser.net/chain.pem; #Apache 2.2版本需要加入该中间证书,否则浏览器可能不信任
ssl_ciphers “EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5”;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;

 

重启nginx,生效

lnmp nginx reload


 

自动更新

cerrbot的续期比原来的更加简单,因为证书只有90天,所以建议使用crontab进行自动续期:

crontab 里加上如下规则:0 3 */5 * * /root/certbot-auto renew –disable-hook-validation –renew-hook “/etc/init.d/nginx reload” 这样每5天就会执行一次所有域名的续期操作。当然时间也可以自行进行调整,建议别太频繁,因为他们都有请求次数的限制,如果需要强制更新可以在前面命令上加上 –force-renew 参数。

 

Certbot可以配置为在证书过期之前自动更新证书。自从让我们将证书最后加密90天后,最好利用此功能。您可以通过运行以下命令来测试证书的自动续订:

$ sudo ./path/to/certbot-auto renew –dry-run

如果这似乎工作正常,您可以通过添加运行以下命令的cron作业或systemd计时器来安排自动续订:

./path/to/certbot-auto renew

 

注意:
如果您正在设置cron或systemd作业,我们建议您每天运行两次(在您的证书到期续约或撤消之前,它不会执行任何操作,但定期运行它可以让您的站点保持在线状态案例a让我们加密发起的撤销是由于某种原因发生的)。请在一小时内为您的续订任务选择一个随机分钟。

一个cron作业的例子可能是这样的,它会在每天中午和午夜运行:

0 0,12 * * * python -c ‘import random; import time; time.sleep(random.random() * 3600)’ && ./path/to/certbot-auto renew

 


 

本文内容引用自以下帖子和部分官方文件,感谢大神们:

免费SSL证书Let’s Encrypt(certbot)安装使用教程

免费SSL安全证书Let’s Encrypt安装使用教程(附Nginx/Apache配置)

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注