Java 验证X509证书V3的过程

Java 验证X509证书V3的过程,java,certificate,x509certificate,Java,Certificate,X509certificate,我需要创建一个程序,通过验证签名来验证任何给定的X509证书版本3是否可信。为了做到这一点,我需要能够知道发行人的公钥谁签署了给定的证书。我知道如何使用getIssuerDN()方法输出颁发者信息,但我不知道的是当我只知道其名称时如何获取颁发者的公钥 到目前为止,我唯一的解决方案是为web上最常见的证书颁发机构维护一个公钥列表,并在其中搜索。虽然这个解决方案可行,但对我来说似乎不切实际。 因此,是否有另一种方法可以直接从证书中获取颁发者的公钥,然后完成验证过程 这是我获取发卡机构名称的代码,但不

我需要创建一个程序,通过验证签名来验证任何给定的X509证书版本3是否可信。为了做到这一点,我需要能够知道发行人的公钥谁签署了给定的证书。我知道如何使用getIssuerDN()方法输出颁发者信息,但我不知道的是当我只知道其名称时如何获取颁发者的公钥

到目前为止,我唯一的解决方案是为web上最常见的证书颁发机构维护一个公钥列表,并在其中搜索。虽然这个解决方案可行,但对我来说似乎不切实际。

因此,是否有另一种方法可以直接从证书中获取颁发者的公钥,然后完成验证过程

这是我获取发卡机构名称的代码,但不是它的公钥

    URL url = new URL("https link here!");
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.connect();

Certificate cert[] = con.getServerCertificates();
    X509Certificate x509cert = (X509Certificate) cert[0];
    String[] st= x509cert.getIssuerDN().toString().split(",");
    System.out.println("Issuer CN is: "+st[0].toString());
我需要创建一个程序,通过验证签名来验证任何给定的X509证书版本3是否可信。为了做到这一点,我需要能够知道发行人的公钥谁签署了给定的证书


不,不是你就是给你任务的人不懂PKI。这种想法是,您已经信任某些发行人,因为他们已经拥有证书,例如,在与JRE一起分发的cacerts文件中,因此也信任他们的公钥。如果要求您验证的证书可追溯到其中一个颁发者,并且它通过了所有其他验证,那么您可以信任它。仅通过公钥进行验证是不够的。

请考虑一下。直接从要使用该公钥进行检查的证书中提取公钥的安全性如何?好的,现在可以理解了。您的意思是,当我想验证用户证书的签名时,我可以使用插入符号文件吗?