【问题标题】:WSO2-emm: How can i create a BKS file that is compatible with Android?WSO2-emm:如何创建与 Android 兼容的 BKS 文件?
【发布时间】:2019-06-26 15:15:51
【问题描述】:

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

如果 SSL 证书是自签名的,请使用 CA certificate PEM file that is generated for iOS 创建一个兼容的 BKS 文件 安卓

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

java.security.UnrecoverableKeyException : Cannot recover key.

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

【问题讨论】:

    标签: ssl wso2 wso2-emm


    【解决方案1】:

    请按以下步骤操作:步骤 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://

    【讨论】:

    • 感谢@Chatura,我按照说明进行操作,但是当我运行最终命令时出现此错误:Illegal option: x509
    • 您在生成密钥时可能做错了什么。我已经测试过它并且它有效。请重复这些步骤并确保您没有收到任何错误。
    • 我重复这些步骤,但我得到了同样的错误。这是我使用 ir resault 完成的步骤的 [链接](ceit.aut.ac.ir/~9031020/CA certificate PEM file.docx)。教程第 8 级(我的第 7 级)中的密钥库密码和密钥库密钥密码有什么区别
    • 我运行此命令而不是 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',但是当我尝试将项目导出为 Android 应用程序时,我得到 Invalid keystore format
    • 请参考文档,我已经在答案中提到,请确保证书颁发机构 (CA) 和注册机构 (RA) 证书应创建为文档中提到的版本 3 证书跨度>
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 我使用 Portecle v1.7 和相同的密钥库和密钥入口密码!
      猜你喜欢
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      相关资源
      最近更新 更多