使用Certbot免费将网站升级为支持https

类别:nginx  阅读:330  发布时间:Sun Nov 19 22:21:29 CST 2017

    Let’s Encrypt 是 一个叫 ISRG ( Internet Security Research Group ,互联网安全研究小组)的组织推出的免费安全证书计划。Certbot是Let’s Encrypt 项目发布的一个客户端。利用它可以完全自动化的获取、部署和更新安全证书。

    1.获取Cerbot客户端

wget 
chmod a+x ./certbot-auto

    2.配置nginx

    Certbot有两种方式生成证书。standalone方式和webroot方式。本文采用webroot方式生成证书,需要在nginx虚拟主机配置文件中添加一个location。用于Cerbot验证这个域名属于你。在你网站的server配置中添加如下location,注意替换你的域名。

#创建一个目录
mkdir -p /home/wwwroot/notejava.com
location ^~ /.well-known/acme-challenge/ {
   default_type "text/plain";
   root     /home/wwwroot/notejava.com/;
}

location = /.well-known/acme-challenge/ {
   return 404;
}

    3.重新加载nginx配置文件

sudo nginx -s reload

    4.生成证书

./certbot-auto certonly --webroot -w /home/wwwroot/notejava.com -d  notejava.com -d blog.notejava.com

    这个步骤可能会出现各种各样的问题,这里记录下安装过程中出现的问题。安装过程中提示:

OSError: Command /root/.local/share/letsencrypt/bin/python2.7 - setuptools pkg_resources pip wheel failed with error code 2

    由于不熟悉Python几经google,终于找到解决办法。https://bbs.vpser.net/thread-16024-1-1.html

apt-get purge python-virtualenv python3-virtualenv virtualenv
pip install virtualenv

    安装成功的话会提示Congratulations!并告知相关文件存放位置

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/notejava.com/fullchain.pem. Your cert
   will expire on 2017-02-019. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.

    5.nginx配置ssl

upstream blog_server {
    server 127.0.0.1:8002;
}

server {
    listen       80 default;
    server_name  blog.notejava.com;
    #rewrite ^(.*)$  https://$host$1 permanent;
    charset utf8;
    access_log  /var/log/nginx/blog.notejava.com.log;
    
    #ssl on;
    #此处配置ssl
    listen 443 ssl;
    ssl_certificate  /etc/letsencrypt/live/notejava.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/notejava.com/privkey.pem;
    #ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    #ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_pass       http://blog_server;
        proxy_set_header Host      $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #proxy_redirect http:// $scheme://;
        #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #include        fastcgi_params;
    }

    location ^~ /.well-known/acme-challenge/ {
        default_type "text/plain";
        root     /home/wwwroot/notejava.com/;
    }

    location = /.well-known/acme-challenge/ {
        return 404;
    }
}

    6.重新加载nginx配置文件

sudo nginx -s reload

    搞定,输入https://blog.notejava.com  跳转成功!

    尊重原创,本文参考:https://linuxstory.org/deploy-lets-encrypt-ssl-certificate-with-certbot/

关键字:Cerbot https ssl

© copyright 粤ICP备16108162号-1