用 Let’s Encrypt 使你的网站用上 https

作者: 凌越 | 来源:发表于2016-07-15 21:07 被阅读3645次
    006tNbRwgw1f5tq6hq9rnj309a02774g006tNbRwgw1f5tq6hq9rnj309a02774g

    在网上查找了不少资料之后终于弄好了 Let’s Encrypt 的 https 证书。

    Let's Encrypt

    Let's Encrypt是由EFF、Mozilla、Cisco、Akamai、IdenTrust与密西根大学研究人员共同创立的免费的凭证中心,目的在于推动全球所有的网站都使用HTTPS加密传输,并由非营利的网际网路安全研究组织Internet Security Research Group(ISRG)负责营运。
    我选择 Let's Encrypt 的原因之一就是因为证书是免费的。

    首次生成证书

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

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

    进入本地源代码目录

    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

    参考文章

    使用Let's Encrypt轻松实现站点https
    : http://www.jianshu.com/p/5575893df1ed
    Let’s Encrypt给你的网站穿上HTTPS的铠甲,防止http劫持
    : http://www.jianshu.com/p/ba2a384e89ec
    如何在Nginx上部署 Let's Encrypt 证书: http://bbs.qcloud.com/thread-12059-1-1.html
    免费SSL安全证书Let's Encrypt安装使用教程(附Nginx/Apache配置)
    : http://www.vpser.net/build/letsencrypt-free-ssl.html

    相关文章

      网友评论

        本文标题:用 Let’s Encrypt 使你的网站用上 https

        本文链接:https://www.haomeiwen.com/subject/yrnyjttx.html