2023最新acme自动申请ssl证书-HTTPS证书

安装acme.sh

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

把 acme.sh 安装到你的 home 目录下:~/.acme.sh/并创建 一个 bash 的 alias, 方便你的使用:

alias acme.sh=~/.acme.sh/acme.sh
echo 'alias acme.sh=~/.acme.sh/acme.sh' >>/etc/profile

安装过程中会自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。

00 00 * * * root /root/.acme.sh/acme.sh --cron --home /root/.acme.sh &>/var/log/acme.sh.logs

===============================================================
申请证书
acme.sh 实现了 acme 协议支持的所有验证协议. 一般有两种方式验证: http 和 dns 验证。


http 方式需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证. 然后就可以生成证书了.

acme.sh  --issue  -d gatj.com -d *.gatj.com  --webroot  /www/wwwroot/gatj.com/
只需要指定域名, 并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用.
如果你用的 apache服务器, acme.sh 还可以智能的从 apache的配置中自动完成验证, 你不需要指定网站根目录:

acme.sh --issue  -d gatj.com   --gatj.com
如果你用的 nginx服务器, 或者反代, acme.sh 还可以智能的从 nginx的配置中自动完成验证, 你不需要指定网站根目录:

acme.sh --issue  -d gatj.com  --nginx
注意, 无论是 apache 还是 nginx 模式, acme.sh在完成验证之后, 会恢复到之前的状态, 都不会私自更改你本身的配置. 好处是你不用担心配置被搞坏。
该类型的配置有一个缺点, 你需要自己配置 ssl 的配置, 否则只能成功生成证书, 你的网站还是无法访问https. 但是为了安全, 你还是自己手动改配置吧.
如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 acme.sh 还能假装自己是一个webserver, 临时听在80 端口, 完成验证:

acme.sh  --issue -d gatj.com   --standalone
================================================================

DNS方式
这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证。
这种方式的缺点是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。


创建文件
cd /root/.acme.sh/
为DNS提供信息,提交给域名解析
acme.sh --issue -d 9.gatj.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

获取TXT解析
_acme-challenge.9.gatj.com
HV_JR9dTtXuQArjTsm9q-pOU5gPmmNGMu8t63H3ZTG0

再次执行,获取证书
acme.sh --renew  -d 9.gatj.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please


证书的使用

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

Nginx/Tengine服务器安装SSL证书
vim /usr/local/nginx/conf/nginx.conf

vim /etc/nginx/nginx.conf 
================
    server {
        listen 443;
        server_name 9.gatj.com;
        ssl on;
        root html;
        index index.html index.htm;
        ssl_certificate   /www/server/panel/vhost/cert/clsn.io/9.gatj.com.cer;
        ssl_certificate_key  /www/server/panel/vhost/cert/clsn.io/clsn.key;
        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;
        location / {
            root html;
            index index.html index.htm;
        }
    }

你可能感兴趣的:(运维,服务器,html)