我刚刚找到Let's Encrypt,同时寻找notorious StartSSL的替代方案,来管理我的DV SSL证书。由于LE证书是短期的,I'd like to使续订过程自动化。
我没有shell访问权限(只是cPanel),也没有来自我的托管服务提供商的内置LE支持,因此Certbot处于手动模式seems to be是唯一的出路。
我注意到了cPanel的/ssl/certs/
目录,其中包含我的所有证书。现在我正在考虑运行一个获取新证书并覆盖过期证书的PHP脚本的Cron作业,但我不确定这是否可行,因为我需要让Apache重新加载被覆盖的证书。有可能,使用PHP吗?
答案 0 :(得分:1)
免责声明。 Letsencrypt says:我们不建议使用此选项,因为它非常耗时,并且您需要在证书过期时每年重复几次。对于大多数人来说,最好从您的托管服务提供商处请求Let's Encrypt支持,或者如果他们不打算实施它,请切换提供商。
免责声明2。我实际上无法访问cPanel服务器,因此我无法对此进行测试。可能有错误。请让我知道,我会纠正它们。
$ certbot certonly --manual -d example.com --test-cert --staging
--test-cert --staging
)确保您的网络服务器显示以下内容: 在继续之前http://example.com/.well-known/acme-challenge/VnHBr_PVGfhu-jdX0NCKrgAcCeC9A-HVqFjMOUAf24Y:
VnHBr_PVGfhu-jdX0NCKrgAcCeC9A-HVqFjMOUAf24Y.0l4s1uvmfEFHST9EqeW_AnsdrM7GmE0joLEjRGruG-8
如果一切顺利,你应该有一个闪亮的新SSL证书。
/etc/letsencrypt/live/example.com/cert.pem
注意:我在上述说明中没有看到有关如何处理私钥的内容,但是this site提到"上传新的私钥" 链接到某处。无论你想把私钥放在哪里。
/etc/letsencrypt/live/example.com/fullchain.pem
)。将此文件的所有内容复制并粘贴到Ca Bundle(CABUNDLE)框中。成功安装证书后,cPanel应重新启动/重新加载Web服务器,以使证书生效。
改编自here。
答案 1 :(得分:0)
这里要解决两个问题。首先,如何获得证书。第二,如何配置Web服务器以使用它。对于两者,我有两种不同的解决方案。
假设您在自己的计算机上安装了certbot。我们还说,您可以通过SFTP访问您的网站空间。您可以使用sshfs挂载该Webspace并使用certbot自动获取证书:
#!/bin/sh
domain='example.org'
mkdir -p "/tmp/$domain"
sshfs "$domain:" "/tmp/$domain" -o nonempty
/opt/certbot/certbot-auto certonly --webroot -w "/tmp/$domain/public_html" -d "$domain"
# or later:
#/opt/certbot/certbot-auto renew
umount "/tmp/$domain"
现在您已获得或续订了证书。您可以使用Cpanel API将其安装在服务器上:
domain='example.org'
ledir="/etc/letsencrypt/live/$domain"
cabundle="$ledir/chain.pem"
crt="$ledir/cert.pem"
key="$ledir/privkey.pem"
cpanel_host='cpanel.example.com:2083'
cpanel_user=''
curl -u "$cpanel_user"\
"$cpanel_host/json-api/cpanel?cpanel_jsonapi_apiversion=2&cpanel_jsonapi_module=SSL&cpanel_jsonapi_func=installssl&cpanel_jsonapi_user=$cpanel_user"\
-d "domain=$domain" --data-urlencode "cabundle@$cabundle" --data-urlencode "crt@$crt" --data-urlencode "key@$key"
如果您使用自己的台式计算机,此解决方案可能不是完全自动化的。我喜欢这个解决方案,因为您不必在Web服务器上存储Cpanel帐户的管理员密码。您还可以控制证书获取过程和密钥。
有acme.sh并且有Acme PHP和其他允许您从服务器获取证书。我的托管服务提供商允许我运行cron作业,以便我可以运行acme.sh来获取证书。我不确定我是否也可以通过它访问Cpanel的uapi
命令行工具。否则,您可以使用具有libcurl支持的纯PHP应用程序来使用与上面相同的API调用来安装证书。那将是完全自动化的,但我还没有测试过。