WSO2-emm:如何创建与 Android 兼容的 BKS 文件?

WSO2-emm: How can i create a BKS file that is compatible with Android?

我正在配置wso2-emm,我卡在的步骤是android configuation,正如教程中所说:

If the SSL certificate is self signed, use the CA certificate PEM file that is generated for iOS to create a BKS file that is compatible with Android

我按照有关 iOS 的说明进行操作,但它创建的是 .jks 文件,而不是 android 所需的 .bks 文件。 我尝试使用 Portecle 将 .jks 文件转换为 .bks,但出现以下错误:

java.security.UnrecoverableKeyException : Cannot recover key.

如何创建与 Android 兼容的 BKS 文件?

一个问题是读取私钥的密码错误。您是否为密钥库和密钥输入使用了相同的密码?

另一个问题可能是 BouncyCastle 库在几年前更改了 BKS 文件格式 - 因此您需要旧的 Bouncycastle 版本。

Android 使用可以由 KeyStore Explorer 创建的旧 BKSv1。

请按照以下步骤操作:第 2 步到第 8 步https://docs.wso2.com/display/EMM110/iOS+Server+Configurations#iOSServerConfigurations-step2

之后,您可以使用以下命令生成 BKS 文件:

keytool -noprompt -import -v -trustcacerts -alias 'openssl x509 -inform PEM -subject_hash -noout -in ca_cert.pem' -file ca_cert.pem -keystore emm_truststore.bks -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath bcprov-jdk16 -146.jar -storepass 'wso2carbon'

注意:文件夹中需要有bcprov-jdk16-146.jar才能生成上面的bks文件

生成后,将 emm_truststore.bks 复制到 Android res/raw 文件夹。在 android 源代码 CommonUtilities.java 中,将 SERVER_PORT 更改为 9443 并将 SERVER_PROTOCOL 更改为 https://

我认为使用 Portecle 无法将 jks 文件直接转换为 bks 格式。但是您可以使用生成的密钥文件和 pem 文件来获取 iOS 的 CA 证书。为此,您需要使用 Portecle 创建一个新的 BKS 格式的密钥库,然后导入密钥对的 pem 文件,然后再导入密钥文件。