Table of Contents

安装SSL证书


手动安装

在网页上操作,验证对域名的所有权之后,就可以申请到证书,下载证书文件,上传到服务器,将证书路径配置到Web服务器的配置文件里

使用acme.sh

使用的工具是:https://github.com/acmesh-official/acme.sh

全程使用root身份

安装acme.sh

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验证方式

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

DNS自动验证

因为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.