acme.sh 申请免费 SSL 证书,免 DNS TXT 校验

1、安装 acme.sh

# 切换到 root 用户下,如果已经在了则忽略
sudo su

# 安装
curl https://get.acme.sh | sh -s email=my@example.com

# 配置环境变量
echo 'alias acme.sh=~/.acme.sh/acme.sh' | tee -a ~/.bashrc
source ~/.bashrc

acme.sh 默认安装在 ~/.acme.sh/ 目录。安装的时候建议切换到 root 账号下安装,不是说普通用户不行,而是申请证书的时候,acme.sh 会修改 Web 服务器的配置(申请完成后会自动还原),如果普通用户没有配置修改权限,就可能导致申请失败。切换到 root 可以避免很多问题。

2、生成证书

acme.sh --issue -d jizhong.plus --nginx

以 nginx 为例,生成证书前要确保两件事情。

1、确保 nginx 是启动的,服务器开放了 80 端口
2、确保申请证书域名的 http 指向是可以访问的。以笔者申请的域名为例,要确保 http://jizhong.plus 是可以访问的

执行命令后 acme.sh 会自动修改域名对应的配置,在网站根目录下生成一个校验文件,这样就可以不用对域名做 TXT 解析验证了。这种方式的优势就是:开发者有 Web 服务器权限,但是没有域名管理权限(可能在其他人手里,操作起来很麻烦),使用这种方式可以方便的申请 SSL 证书。

3、安装证书

创建证书存储目录,以 Nginx 为例,放到 /etc/nginx/cert 目录

mkdir -p /etc/nginx/cert/jizhong.plus

安装

acme.sh --install-cert -d jizhong.plus \
--key-file       /etc/nginx/cert/jizhong.plus/key.pem  \
--fullchain-file /etc/nginx/cert/jizhong.plus/cert.pem \
--reloadcmd     "service nginx force-reload"

4、配置 https

在证书安装完成后,还需要修改 nginx 配置文件,监听 443 端口,并将 80 端口跳转到 443。

# /etc/nginx/conf.d/jizhong.plus.conf
server {
  listen 80;
  server_name jizhong.plus;
  return 301 https://$host$request_uri;
  # location / {
  #   root /opt/wwwroot/jizhong.plus;
  #   index index.html index.htm;
  # }
}

server {
     #SSL 默认访问端口号为 443
     listen 443 ssl; 
     #请填写绑定证书的域名
     server_name jizhong.plus; 
     #请填写证书文件的相对路径或绝对路径
     ssl_certificate /etc/nginx/cert/jizhong.plus/cert.pem; 
     #请填写私钥文件的相对路径或绝对路径
     ssl_certificate_key /etc/nginx/cert/jizhong.plus/key.pem; 
     ssl_session_timeout 5m;
     #请按照以下协议配置
     ssl_protocols TLSv1.2 TLSv1.3; 
     #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
     ssl_prefer_server_ciphers on;
     location / {
         root /opt/wwwroot/jizhong.plus;
         index  index.html index.htm;
     }
 }

重启 nginx 就可以使用 https://jizhong.plus 访问了,同时 http 会自动跳转到 https。

本博客采用 知识共享署名-禁止演绎 4.0 国际许可协议 进行许可

本文标题:acme.sh 申请免费 SSL 证书,免 DNS TXT 校验

本文地址:https://jizhong.plus/post/2024/11/acme.sh.html