我最近负责用Java模拟Apple产品(iPhone配置实用程序).我有点坚持的其中一个部分是关于Exchange ActiveSync的一部分.在那里,它允许您从钥匙串中选择一个证书作为您的EAS帐户的凭据.经过一些研究,我发现它实际上创建了一个PKCS12密钥库,插入了我选择的证书的私钥,并将其编码为XML.到目前为止还没什么大不了的.如果我使用Keychain Access创建一个.p12文件,它上传没有问题.但是当我尝试将其转移到Java时,我遇到了一个问题.
假设我将之前用过的.s12文件中的一个证书导出为.cer文件(这是我们期望在环境中获得的).现在当我将它上传到Java时,我得到一个Certificate对象,如下所示......
KeyStore ks = java.security.KeyStore.getInstance("PKCS12");
ks.load(null, "somePassword".toCharArray());
CertificateFactory cf = CertificateFactory.getInstance("X.509", new BouncyCastleProvider());
java.security.cert.Certificate userCert = cf.generateCertificate(new FileInputStream("/Users/me/Desktop/RecentlyExportedCert.cer"));
但是当我尝试......
ks.setCertificateEntry("SomeAlias", userCert);
我得到例外......
java.security.KeyStoreException: TrustedCertEntry not supported
因此,从证书中我转移到密钥上.但是使用这些证书(我也获得