0

我正在尝试为谷歌市场应用程序创建证书。我正在尝试实现一个接口http://code.google.com/p/step2/source/browse/code/java/trunk/common/src/main/java/com/google/step2/xmlsimplesign/TrustRootsProvider.java ?r=383

我的源代码是

public class AppEngineTrustsRootProvider implements TrustRootsProvider {

  private static final String CERT_FILE = "/cacerts.bin";

  private final Collection<X509Certificate> certs;

  @SuppressWarnings("unchecked")
  public AppEngineTrustsRootProvider() {

    try {
      ObjectInputStream in =
          new ObjectInputStream(AppEngineTrustsRootProvider.class.getResourceAsStream(CERT_FILE));
      certs = (Collection<X509Certificate>) in.readObject();
    } catch (IOException e) {
      throw new RuntimeException(e);
    } catch (ClassNotFoundException e) {
      throw new RuntimeException(e);
    }
  }

  public Collection<X509Certificate> getTrustRoots() {
    return certs;
  }
}

我阅读了这篇文章,其中使用 openssl 或 keytool 我们可以在 .cert 文件或 .der 文件中生成证书,但如何在 .bin 文件中获取证书列表。这是一个示例代码片段,我无法弄清楚如何在 .bin 文件中获取证书列表。请帮忙

4

1 回答 1

0

如果我正确理解您的问题,您正试图将一组证书放在一个文件中。这通常通过 KeyStore 文件完成,该文件可以有多种格式。两种流行的格式是 JKS 和 PKCS12。您可以使用 Javakeytool命令或openssl创建密钥库。

然后以编程方式,您可以将密钥库文件加载到 Java KeyStore对象中。从那里您可以使用该aliases()方法检索 KeyStore 中的所有别名。然后您可以使用该isCertificateEntry(alias)方法遍历每一个,如果为真,则将生成的证书添加getCertificate(alias)到集合中,您将在方法结束时返回该集合。在上面的 KeyStore 链接中有一些示例代码用于从文件中加载 KeyStore。

请注意,cacertsJRE 安装中存在的文件实际上是 JKS 密钥库。

于 2013-09-03T07:38:47.377 回答