在网页上操作,验证对域名的所有权之后,就可以申请到证书,下载证书文件,上传到服务器,将证书路径配置到Web服务器的配置文件里
使用的工具是:https://github.com/acmesh-official/acme.sh
全程使用root身份
su cd ~ git clone https://github.com/acmesh-official/acme.sh.git cd ./acme.sh ./acme.sh --install -m mail@gzher.com # 安装过程中,做了3件事情 # 1. 配置了计划任务 root@wikihost-us:~/acme.sh# crontab -l 5 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null # 2. 定义了acme.sh的别名 root@wikihost-us:~# cat ~/.bashrc ... . "/root/.acme.sh/acme.sh.env" # 3. 把文件复制到了目标目录(~/.acme.sh) root@wikihost-us:~# ls -a # 重启命令提示符后就可以使用了 root@wikihost-us:~# acme.sh -h
http方式需要在你的网站根目录下放置一个文件,来验证你的域名所有权
所以需要指定网站的根目录
acme.sh --issue -d wiki.gzher.com -w /var/www/DokuWikiStick/dokuwiki acme.sh --issue -d lib.gzher.com -w /var/www/library # 这一步会自动在网站根目录创建文件,申请成功后会自动删除,也不会修改Apache的配置文件
注意:
安装证书之前,需要先能访问到网站。这个时候网站没有证书,所以不能开启HTTPS。所以先用HTTP的形式开启网站,能用HTTP协议访问到网站,才能继续申请证书。等证书都申请好了之后,再开启HTTPS
因为WebDav服务器不是直接开放访问的,所以使用这种方式进行验证
# 在域名服务商处获取的API Key export GD_Key="xxx" export GD_Secret="xxx" # 验证并申请证书 acme.sh --issue --dns dns_gd -d dav.gzher.com # 这一步会自动增加TXT记录,通过验证后就可以申请到证书,后续临时添加的这个TXT也会被清理掉 # API Key会被保存下来 root@wikihost-us:~# cat ~/.acme.sh/account.conf # 所有域名的证书申请完成后,查看列表 root@wikihost-us:~# acme.sh --list
清理之前(通过其他方式,比如手动放过去的)安装的旧证书,修改Apacha配置文件,修改证书路径
# 证书文件主要是3项 SSLCertificateFile xxx/cert.pem SSLCertificateKeyFile xxx/key.pem SSLCertificateChainFile xxx/fullchain.pem # 将证书安装到指定位置,对于Apache acme.sh --install-cert -d wiki.gzher.com \ --cert-file /etc/ssl/com.gzher.wiki/cert.pem \ --key-file /etc/ssl/com.gzher.wiki/key.pem \ --fullchain-file /etc/ssl/com.gzher.wiki/fullchain.pem \ --reloadcmd "/sbin/service apache2 force-reload" # 要确保reloadcmd这个命令是可以正常执行的 # 查看已经安装的证书信息 acme.sh --info -d wiki.gzher.com [Sat Apr 1 17:17:24 UTC 2023] The domain 'dav.gzher.com' seems to have a ECC cert already, lets use ecc cert. DOMAIN_CONF=/root/.acme.sh/dav.gzher.com_ecc/dav.gzher.com.conf Le_Domain=dav.gzher.com Le_Alt=no Le_Webroot=dns_gd Le_PreHook= Le_PostHook= Le_RenewHook= Le_API=xxx Le_Keylength=ec-256 Le_OrderFinalize=xxx Le_LinkOrder=xxx Le_LinkCert=xxx Le_CertCreateTime=1680367709 Le_CertCreateTimeStr=2023-04-01T16:48:29Z Le_NextRenewTimeStr=2023-05-30T16:48:29Z Le_NextRenewTime=1685465309 Le_RealCertPath=/etc/ssl/com.gzher.dav/cert.pem Le_RealCACertPath= Le_RealKeyPath=/etc/ssl/com.gzher.dav/key.pem Le_ReloadCmd=/sbin/service apache2 force-reload Le_RealFullChainPath=/etc/ssl/com.gzher.dav/fullchain.pem
root@wikihost-us:~/acme.sh# ./acme.sh --list Main_Domain KeyLength SAN_Domains CA Created Renew cv.gzher.com "ec-256" no ZeroSSL.com 2024-09-11T00:07:15Z 2024-11-09T00:07:15Z dav.gzher.com "ec-256" no ZeroSSL.com 2024-03-26T00:08:04Z 2024-05-24T00:08:04Z lib.gzher.com "ec-256" no ZeroSSL.com 2024-09-22T00:05:30Z 2024-11-20T00:05:30Z wiki.gzher.com "ec-256" no ZeroSSL.com 2024-09-22T00:05:51Z 2024-11-20T00:05:51Z root@wikihost-us:~/acme.sh# acme.sh --remove -d dav.gzher.com # 删除 [Thu Oct 10 15:13:48 UTC 2024] The domain 'dav.gzher.com' seems to have a ECC cert already, lets use ecc cert. [Thu Oct 10 15:13:48 UTC 2024] dav.gzher.com is removed, the key and cert files are in /root/.acme.sh/dav.gzher.com_ecc [Thu Oct 10 15:13:48 UTC 2024] You can remove them by yourself.