生成X.509证书列表并将其存储在.bin文件中

时间:2013-09-02 14:11:53

标签: openssl certificate google-apps google-oauth google-sso

我正在尝试为Google marketplace app创建证书。我正在尝试实现一个接口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文件中的证书列表。请一些帮助

1 个答案:

答案 0 :(得分:0)

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

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

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