KeyStoreException:此密钥库不支持探测,必须使用指定类型加载

KeyStoreException: This keystore does not support probing and must be loaded with a specified type

我在尝试通过终端将 .crt 证书添加到现有密钥库时遇到此错误。我正在使用 Linux Ubuntu 18.04LTS 和 Java 11

我尝试运行这个命令:

$ keytool -import -alias ca -file my_certificate_file_name.crt -keystore my_truststore_file_name

并且还尝试 运行 不使用别名:

$ keytool -import -file my_certificate_file_name.crt -keystore my_truststore_file_name

问题是 Android 使用了另一种名为 "BKS" 的信任库。有问题的命令与 "JKS" 类型的信任库相关。

$ keytool -importcert -v -trustcacerts -file "your_cert_file" -alias ca -keystore "your_truststore.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "path_to_bcprov-jdk16-145.jar" -storetype BKS -storepass your_password

此外,还需要下载"bcprov-jdk16-145.jar"个文件。 你可以从 Maven 仓库中做到这一点:https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk16/1.46

在终端中执行上述命令后,"BKS" truststore 已成功创建。