美文网首页
HTTPS 最新免费配置攻略

HTTPS 最新免费配置攻略

作者: zhangdxchn | 来源:发表于2018-11-19 20:53 被阅读0次

    HTTPS 全新免费攻略(本文只针对Centos+Nginx)

    1.最简单的阿里云免费证书

    截止当前2018.11.19,阿里云DNS解析配置处可以直接申请免费SSL证书,但限制1年有效期,且每个域名下只能申请3个单域名,美其名曰测试专用。申请完成后,下载证书直接nginx配置即可。阿里云在云盾证书过期前会有通知提醒。
    阿里云证书购买那边怎么显示出免费的证书就不表了。

    2.Let's Encrypt + Certbot(手动验证)

    不想付费,又想随意申请免费证书,看这里官方文档

    1. 安装Certbot: yum install -y epel-release && yum install -y certbot(certbot 出现python相关的安装问题,参考附录【4】)
    2. Nginx 配置 Certbot 手动验证的路径
      在原 Nginx的 server 下添加以下配置
    server {
        ...
        location ^~ /.well-known/acme-challenge/ {
           default_type "text/plain";
           root     /usr/share/nginx/certbot;
        }
        location = /.well-known/acme-challenge/ {
           return 404;
        }
        ...
    }
    

    Certbot 会在/usr/share/nginx/certbot生成相应的验证文件并确认域名。

    1. Certbot 验证域名,成功后生成证书
    sudo certbot certonly --webroot -w /usr/share/nginx/certbot -d www.host.com
    

    请替换 [www.host.com] 成相应的域名。

    1. Nginx 配置证书
    server {
        listen       443 ssl;
        server_name  www.host.com;
    
        charset utf-8;
        access_log  /var/log/nginx/log/https_api.access.log  main;
    
        ssl_certificate   /etc/letsencrypt/live/www.host.com/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/www.host.com/privkey.pem;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ...
    }
    

    (Docker Nginx下的坑,因为Certbot 生成的证书是软连接文件,在配置证书路径的时候要包含 /etc/letsencrypt/ 整个路径,不然nginx启动时候找不到对应的证书,会报错SSL: error:02001002:system library:fopen:No such file or directory:...

    1. Certbot 自动更新, Let's Encrypt 的证书有效期只有3个月,不想服务器突然挂了,就配置好自动更新吧(注意nginx 要重启,不能重载nginx -s reload 只会坑死你,别问我怎么知道的。。。宕机半小时多吓死人了)。
    # 更新证书测试
    certbot renew --dry-run 
    # 验证证书过期时间
    openssl x509 -noout -dates -in /etc/letsencrypt/live/[www.host.com]/cert.pem
    
    # 定时更新证书,并重启nginx服务器(systemctl)
    crontab -e 
    
    # add
    0 2 1 * * /usr/bin/certbot renew --quiet && /bin/systemctl restart nginx
    
    # or docker
    # add
    0 2 1 * * /usr/bin/certbot renew --quiet && docker ps | grep 'nginx:latest' | awk '{print "docker restart " $1}' | sh
    

    参考:

    相关文章

      网友评论

          本文标题:HTTPS 最新免费配置攻略

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