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

Openssl 生成X.509证书列表并将其存储在.bin文件中,openssl,certificate,google-apps,google-oauth,google-sso,Openssl,Certificate,Google Apps,Google Oauth,Google Sso,我正在尝试为google marketplace应用程序创建证书。我正在尝试实现一个接口 我的源代码是 public class AppEngineTrustsRootProvider implements TrustRootsProvider { private static final String CERT_FILE = "/cacerts.bin"; private final Collection<X509Certificate> certs; @Supp

我正在尝试为google marketplace应用程序创建证书。我正在尝试实现一个接口

我的源代码是

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;
  }
}
公共类AppEngineTrustsRootProvider实现TrustRootsProvider{
私有静态最终字符串CERT_FILE=“/cacerts.bin”;
私人最终收款证书;
@抑制警告(“未选中”)
公共AppengineTrustRootProvider(){
试一试{
ObjectInputStream输入=
新的ObjectInputStream(AppEngineTrustsRootProvider.class.getResourceAsStream(CERT_文件));
.readObject()中的证书=(集合);
}捕获(IOE异常){
抛出新的运行时异常(e);
}catch(classnotfounde异常){
抛出新的运行时异常(e);
}
}
公共集合getTrustRoots(){
退还证书;
}
}

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

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

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

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