从 openjdk-8-jre 切换到 openjdk-11-jre - 未找到信任锚

从 openjdk-8-jre 切换到 openjdk-11-jre - 未找到信任锚

今天我尝试升级运行 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的方法对我有用的是:

  1. 编辑 /etc/java-9-openjdk/security/java.security 文件。找到 keystore.type = pkcs12 行并将其更改为 jks

  2. 删除 /etc/ssl/certs/java/cacerts 文件:rm /etc/ssl/certs/java/cacerts

  3. 跑步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; 

相关内容