通过Let’s Encrypt获取 https 免费证书

从Github签出Let’s Encrypt的源代码

git clone https://github.com/letsencrypt/letsencrypt

  如果系统没有安装git,https://www.cnblogs.com/lhbryant/p/6928894.html

进入本地源代码目录

cd letsencrypt
Let’s Encrypt提供多种认证方式,因为之前在VPS上有了HTTP的网站,所以这里采用了webroot的方式,其他方式请参考官方文档

主域名的认证

./letsencrypt-auto --debug certonly --webroot --email name@your_main_domain.com -d your_main_domain.com -d www.your_main_domain.com -w /var/www/your_main_domain.com

子域名的认证

./letsencrypt-auto --debug certonly --webroot --email name@your_main_domain.com -d subdomain.your_main_domain.com -w /var/www/your_main_domain.com/subdomain
然后在弹出的蓝底白字提示框中一路点击"OK"

注意如下问题

请将命令中的name, your_main_domain.com, subdomain替换成你自己的名字,域名以及子域名 因为Gentoo目前是在试验阶段,所以命令行加上--debug参数参数--email如果没有在命令行加上,会在随后弹出的对话框里提示你填写-w指定Web服务器网址内容放置的目录,请指定自己放置的目录

生成的证书放在/etc/letsencrypt/live/[网站域名]

文件名内容
cert.pem 服务端证书
chain.pem 浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书
fullchain.pem 包括了cert.pem和chain.pem的内容
privkey.pem 证书的私钥

一般情况下 fullchain.pemprivkey.pem 就够用了

Nginx配置

我使用的是 lnmp 的一键安装包,打开 /usr/local/nginx/conf/vhost/域名.conf 的文件,改成类似下面的设置。

server {
    listen    80;
    server_name    www.slinvent.com slinvent.com;
    return   301 https://$server_name$request_uri;
}

server
    {
        listen 443 ssl;
        #listen [::]:80;
        server_name www.slinvent.com slinvent.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/www.slinvent.com;
        ssl_certificate /etc/letsencrypt/live/slinvent.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/slinvent.com/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;

        ……
    }

其中return 301 https://$server_name$request_uri;是用来实现80端口到443端口的流量跳转的。
最后再执行:/etc/init.d/nginx reload 重新载入配置使其生效。

更新证书

./letsencrypt-auto renew




原文链接:https://www.jianshu.com/p/3cf4846e0dac

posted @ 2018-04-10 17:33  wang_shisan  阅读(593)  评论(0编辑  收藏  举报