今天我尝试升级运行 DAVmail 网关的服务器。在之前的安装中,我使用 openjdk-8-jre-headless 没有任何问题。现在我升级到 18.04 并安装了 openjdk-11-jre-headless,但出现以下错误:
davmail.exception.DavMailException: Exchange login exception: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
如果我再次降级到 openjdk-8-jre-headless(并清除版本 11),错误就会消失。
我使用“Let's encrypt”创建必要的证书 - 这会是个问题吗?例如,新的 ISRG 证书已包含在内,但 DST 证书不再存在?我检查了 /usr/share/ca-certificates 并找到了两个 CA 证书,但我不知道 Java 密钥库的内容是否相同,也不知道这个密钥库是否被使用,因为我通过davmail.ssl.keystoreType=PKCS12
和提供了一个 PKCS12 文件davmail.ssl.keystoreFile=/etc/davmail/certs.p12
。顺便说一下,这个包包含Let's Encrypt Authority X3
证书以及我自己的证书和私钥。
有任何想法吗?
答案1
看起来你受到影响了错误 1739631
这解决BUG的方法对我有用的是:
编辑 /etc/java-9-openjdk/security/java.security 文件。找到 keystore.type = pkcs12 行并将其更改为 jks
删除 /etc/ssl/certs/java/cacerts 文件:
rm /etc/ssl/certs/java/cacerts
跑步
update-ca-certificates -f
答案2
使用 sudo 权限运行这些命令
set -ex; \
keytool -importkeystore -srckeystore /etc/ssl/certs/java/cacerts -destkeystore /etc/ssl/certs/java/cacerts.jks -deststoretype JKS -srcstorepass changeit -deststorepass changeit -noprompt; \
mv /etc/ssl/certs/java/cacerts.jks /etc/ssl/certs/java/cacerts; \
/var/lib/dpkg/info/ca-certificates-java.postinst configure;