acme+Let's Encrypt 5分钟搞定HTTPS免费证书

in 运维 with 0 comment

昨天建站第一天,今天才有时间捣鼓HTTPS,遂发现acme神器,不禁感慨现在配置服务器越来越简单了,各种便捷工具助你建站。

废话不多说,Github Neilpang/acme.sh 上参考安装过程,其中也有中文说明

安装acme.sh

安装很简单, 一个命令:

curl  https://get.acme.sh | sh

教程上说,这个指令做了三件事:

  1. 把 acme.sh 安装到你的 home 目录下,并创建 一个 bash 的 alias, 方便你的使用: alias acme.sh=~/.acme.sh/acme.sh
  2. 自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.
    但在操作实际过程中,发现并没有自动为你alias,可能跟我用root指令或者系统版本有关(CentOS 7),反正我还要执行一步:
    source .bashrc
    然后crontab 我用指令crontab -l 查看的确有创建,但是是否能够自动更新,还待考证。

生成证书

只需要指定域名, 并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用.

acme.sh  --issue -d www.gavinys.com  --webroot  /www/www.gavinys.com

安装证书

我用的是openresty,其实加上reloadcmd也没啥用,还是要去改配置文件后重新reload才会生效。

acme.sh  --installcert  -d  www.gavinys.com   \
--key-file   /usr/local/openresty/nginx/conf/ssl/www.gavinys.com/www.gavinys.key \
--fullchain-file /usr/local/openresty/nginx/conf/ssl/www.gavinys.com/fullchain.cer \
--reloadcmd  "openresty -s reload"

配置nginx

直接附上我的HTTPS配置,然后80端口做了强跳443,主要是添加了rewrite ^(.*)$ https://$host$1 permanent;

    server {
        listen 80;
        server_name www.gavinys.com;
        index index.php index.html;
        root /www/www.gavinys.com;
        rewrite ^(.*)$  https://$host$1 permanent;
        location / {
                index index.html index.php;
                 if (-f $request_filename/index.html){
                         rewrite (.*) $1/index.html break;
                 }
                if (-f $request_filename/index.php){
                         rewrite (.*) $1/index.php;
                }
                if (!-f $request_filename){
                         rewrite (.*) /index.php;
                }
        }

        location ~\.php$ {
                #try_files $uri /index.php =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
                access_log  logs/all.php.log main;
        }

}
server {
    listen 443;
    server_name www.gavinys.com;
    ssl on;
    ssl_certificate      /usr/local/openresty/nginx/conf/ssl/www.gavinys.com/fullchain.cer;
    ssl_certificate_key  /usr/local/openresty/nginx/conf/ssl/www.gavinys.com/www.gavinys.key;
    index index.php index.html;
    root /www/www.gavinys.com;

    location / {
            index index.html index.php;
            if (-f $request_filename/index.html){
                    rewrite (.*) $1/index.html break;
            }
            if (-f $request_filename/index.php){
                    rewrite (.*) $1/index.php;
             }
            if (!-f $request_filename){
                    rewrite (.*) /index.php;
             }
    }
    location ~\.php$ {
            #try_files $uri /index.php =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
            access_log  logs/all.php.log main;
    }
}

做完以上操作,执行

openresty -s reload

访问本站,即变成https小绿锁啦(当然记得将网站的资源全部设置成https,不然会显示不安全哦)~~

Responses