3

次の方法で、Java を使用して与えられた証明書を検証しようとしています。

        try{
        FileInputStream fr = new FileInputStream(pathtoCertificate);
        CertificateFactory cf =   CertificateFactory.getInstance("X509");
        X509Certificate c = (X509Certificate) 
                            cf.generateCertificate(fr);
        System.out.println("++++Certificate Verification++++++++");
        PublicKey pk = c.getPublicKey();
        c.verify(pk);....//63
System.out.println("++This certificate is VALID++");
    .....

    }
    catch(CertificateException e){
                e.printStackTrace();
                System.out.println("Certificate is Invalid");
            }

ただし、次のエラーが発生し続けます

java.security.SignatureException: Signature does not match.
    at sun.security.x509.X509CertImpl.verify(Unknown Source)
    at sun.security.x509.X509CertImpl.verify(Unknown Source)
    at Main.printCertificate(Main.java:63)
    at Main.main(Main.java:41)

証明書ファイル (確認する必要があります)、秘密鍵 (上記のファイルに対応)、および CA からの証明書のみが提供されています。私はJavaセキュリティにまったく慣れていません。したがって、証明書ファイルを確認する方法についての考えは素晴らしいでしょう。

4

1 に答える 1

3

さて、私はついにそれを理解しました。将来ここにたどり着くかもしれない人々のために。エラーがスローされた理由は、私の場合の証明書がself signed. したがって、CA によって発行された証明書 (Q で述べたように) を使用して、公開鍵を検証するだけで済みました。残りは同じままでした。

于 2013-04-05T21:54:58.793 に答える