Tag: x509certificate

如何获取服务器证书链,然后validation它在Java中是否有效和可信

我需要与远程服务器创建Https连接,然后检索并validation证书。 我建立了良好的连接: try { url = new URL(this.SERVER_URL); HttpURLConnection con = (HttpURLConnection) url.openConnection(); HttpsURLConnection secured = (HttpsURLConnection) con; secured.connect(); } 但似乎getServerCertificateChain()方法未定义类型为HttpsURLConnection 。 那么如何检索服务器证书链? 我的理解是getServerCertificateChain()应返回一个X509Certificate对象的数组,并且该类具有可用于查询证书的方法。 我需要validation: 证书有效且值得信赖, 根据证书序列号检查证书吊销列表分发点 确保它没有过期 检查证书中的URL是否与另一个(我已经检索过)匹配。 我迷路了,真的很感激任何帮助!

来自CA的PKCS12 Java密钥库和java中的用户证书

我最近负责用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 所以从证书我转移到键。 但是使用这些证书(我也获得了CA证书),我只能访问公钥,而不是私钥。 如果我试图像这样添加公钥… java.security.cert.Certificate[] chain = {CACert}; ks.setKeyEntry(“SomeAlias”, userCert.getPublicKey().getEncoded(), chain); 我明白了…… java.security.KeyStoreException: Private key is not stored as PKCS#8 […]

在没有BouncyCastle的情况下用Java创建X509证书?

是否可以在不使用Bouncy Castle X509V * CertificateGenerator类的情况下巧妙地创建Java代码的X509证书?