Zimbra Certbot LetsEncrypt
我已经在不同域的单独服务器上安装了 LetsEncrypt SSL 证书,没有出现任何问题。
我遵循了在该服务器上使用的相同程序来创建新服务器(Ubuntu 服务器 - 与其他服务器相同),一切正常,直到验证为止。
** Verifying '/opt/zimbra/ssl/letsencrypt/cert.pem' against '/opt/zimbra/ssl/zimbra/commercial/commercial.key'
140072965674304:error:0607907F:digital envelope routines:EVP_PKEY_get0_RSA:expecting an rsa key:crypto/evp/p_lib.c:474:
ERROR: Certificate '/opt/zimbra/ssl/letsencrypt/cert.pem' and private key '/opt/zimbra/ssl/zimbra/commercial/commercial.key' do not match.
我无法找到有关如何解决此问题的任何信息。
答案1
我发现了问题。在Zimbra的开源8.8.15版本中(我不知道对于版本9的付费程序是否仍然存在问题),Zimbra不理解ECDSA类型的SSL密钥。该代码专门寻找 RSA 密钥,如果不是 RSA 密钥,则验证将失败,即使验证实际上很好。
因此,如果使用此版本的 Zimbra,则在向 Let's Encrypt(可能还有其他提供商)发出 SSL 密钥请求时,需要指定 key-type = RSA。
不幸的是,我们花了很长时间才找到误导性信息(即密钥不匹配)。谢谢。 :)
答案2
我相信您的证书将升级到 ECDSA,因此需要使用 RSA 更新您的证书。
使用此命令进行更新
certbot certonly --standalone -d {your domain} --force-renewal --preferred-chain "ISRG Root X1" --key-type rsa
根账户
cd /etc/letsencrypt/live/{domain}/
cat isrgrootx1.pem.txt letsencryptauthorityx3.pem.txt chain.pem > combined.pem
cp * /opt/zimbra/ssl/letsencrypt/
chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/*
Zimbra 账户
cd /opt/zimbra/ssl/letsencrypt/
cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
/opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem combined.pem
/opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem combined.pem