admin

最新 Let’s Encrypt 永久免费 SSL/TLS 证书安装全过程
前言之前用过其他的免费 https 证书,很多都是失效了(安装完浏览器还是提示不安全),当时是在 Tomcat 上...
扫描右侧二维码阅读全文
13
2018/01

最新 Let’s Encrypt 永久免费 SSL/TLS 证书安装全过程

前言

之前用过其他的免费 https 证书,很多都是失效了(安装完浏览器还是提示不安全),当时是在 Tomcat 上配置证书,遇到各种坑爹问题。今天给新博客上了 Let's Encrypt 免费证书,感觉还是非常方便的。

介绍

官方地址:https://letsencrypt.org/

如果在网上搜索有关的安装教程,大多数都是使用 letsencrypt 这个脚本安装,但是按照教程下去,会发现没有生成证书文件,所以,可以说这个教程已经过时了。(修正:这个脚本如果没有生成的话就再次执行一次,在搬迁网站的时候发现 certbot 也会出现这种情况,再次执行就可以了)

最新的脚本,其实打开官方网址,点击 Get Started 就可以找到官方的安装脚本 certbot,下面是安装全过程。

安装

将脚本下载到本地
# git clone https://github.com/certbot/certbot.git

进入脚本目录 certbot,进行安装
# ./certbot-auto certonly --standalone --email admin@0o0.me -d 0o0.me -d www.0o0.me

安装完后会在 /etc/letsencrypt/live/0o0.me/ 下生成证书文件:

cert.jpg

配置证书,这里以 Nginx 为例

ssl_certificate /etc/letsencrypt/live/0o0.me/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/0o0.me/privkey.pem;

配置代码:

server {
    listen 443 ssl;
    listen [::]:80 ipv6only=on;

    root /usr/local/www/blog;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    server_name 0o0.me www.0o0.me;
    
    ssl_certificate /etc/letsencrypt/live/0o0.me/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/0o0.me/privkey.pem;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ /index.php?$query_string;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }
        location ~ \.php$ {
               try_files $uri /index.php =404;
               fastcgi_split_path_info ^(.+\.php)(/.+)$;
               fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
               fastcgi_index index.php;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               include fastcgi_params;
        }
}

至此证书就配置完成了。
如果想要 http 强制跳转到 https,可以加上如下配置:

server {
    listen 80;
    server_name 0o0.me www.0o0.me;
    index index.php index.html index.php index.htm;

    return      301 https://$server_name$request_uri;

    location ~ / {
        root /usr/local/www/blog;
        index index.php index.html index.php index.htm;
    }
}

Nginx 续费命令

./certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start"

总结

总的来说此次证书安装还算比较成功,虽然也踩了些坑,但也没有花费过多的时间。主要就是第一次找了前面说的那个过时的脚本发现并没有生成证书文件,后来到官网找到最新的脚本顺利安装成功,最后就是配置 Nginx 证书时 listen 没加 ssl 页面报了错,通过百度一搜才知道 listen 后面要加 ssl,不知道的就搜也是一种快速学习的办法,像配置这种东西不可能自己领悟得出来的,所以该搜的时候还是要搜,不要浪费时间。

Last modification:August 12th, 2018 at 05:58 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment