acme.sh 来给网站升级 HTTPS

acme.sh 来给网站升级 HTTPS

Linux 5年前 3661 0

acme.sh 实现 acme 协议,可以从 letsencrypt 生成免费的证书。

安装步骤

  • 安装 acme.sh
  • 生成证书
  • copy 证书到 nginx/apache 或者其他服务
  • 更新证书
  • 更新acme.sh
  • 出错调试

1.安装 acme.sh

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

安装过程不会污染已有系统任何功能和文件

2.生成证书

acme.sh --issue -d domain.com --webroot /home/www/html

如果你用的 apache 服务器, acme.sh 还可以智能的从 apache 的配置中自动完成验证, 你不需要指定网站根目录:

acme.sh --issue  -d domain.com   --apache

Nginx

acme.sh --issue  -d domain.com   --nginx

注意, 无论是 apache 还是 nginx 模式, acme.sh在完成验证之后, 会恢复到之前的状态, 都不会私自更改你本身的配置. 好处是你不用担心配置被搞坏, 也有一个缺点, 你需要自己配置 ssl 的配置, 否则只能成功生成证书, 你的网站还是无法访问https. 但是为了安全, 你还是自己手动改配置吧.

3. copy/安装证书

acme.sh  --installcert  -d  <domain>.com   \
        --key-file   /etc/nginx/ssl/<domain>.key \
        --fullchain-file /etc/nginx/ssl/fullchain.cer \
        --reloadcmd  "service nginx force-reload"

一个小提醒, 这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload)

Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/<domain>.cer,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误

如果没有自动生成配置文件的话,自己去加,这里我用自己的例子

cd /etc/nginx/site-available
vi domain
server
{
    listen    80;
    server_name    domain.com;
    root    /var/www/html/public;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
                try_files $uri /index.php =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
    }

    listen 443 ssl http2;
    ssl_certificate /etc/nginx/ssl/fullchain.cer;
    ssl_certificate_key /etc/nginx/ssl/<domain>.key;
}

4.更新证书

自动更新

5.更新 acme.sh

手动升级

acme.sh --upgrade

自动升级

acme.sh  --upgrade  --auto-upgrade

关闭自动更新

acme.sh  --upgrade  --auto-upgrade 0

6.出错调试

acme.sh  --issue  .....  --debug 

原文: http://yiqiao.me/articles/6/acmesh-to-upgrade-website-to-https

版权声明: 自由转载-非商用-非衍生-保持署名 (创意共享3.0许可证)