4

弾む城 1.48 を使用して、OCSP で証明書の検証を検証しています。それはうまくいきます。しかし、私は Ocsp Url を静的変数として使用しており、証明書から読み取りたいと考えています。URLは証明書に次のように書かれていますAuthority Info Access

[1]Authority Info Access
 Access Method=On-line Certificate Status Protocol (1.3.6.1.5.5.7.48.1)
 Alternative Name:
      URL=http://ocsp.mydomain

org.bouncycastle.asn1.x509.AuthorityInformationAccess証明書からオブジェクトを取得しました

byte[] octetBytes = certificate.getExtensionValue(X509Extension.authorityInfoAccess.getId());
ASN1InputStream octetStream = new ASN1InputStream(octetBytes);
byte[] encoded = X509ExtensionUtil.fromExtensionValue(octetBytes).getEncoded();
ASN1Sequence seq = ASN1Sequence.getInstance(ASN1Primitive.fromByteArray(encoded));
AuthorityInformationAccess access = AuthorityInformationAccess.getInstance(seq);

書き込みますAuthorityInformationAccess: Oid(1.3.6.1.5.5.7.48.1)が、そこから URL を取得できません

4

4 に答える 4

0

BouncyCastle X509CertificateHolder を使用します。

BouncyCastle 1.66、Java 8、および Lombok 値を使用して...

public static String getOcspUrl(final String certPEM) {                                                                                                                                                                                                                                                               
    val certHolder = toCertificateHolder(certPEM);                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                        
    val aiaExtension = AuthorityInformationAccess.fromExtensions(certHolder.getExtensions());                                                                                                                                                                                                                         
    val ocspUrl = Arrays.stream(aiaExtension.getAccessDescriptions())                                                                                                                                                                                                                                                 
          .filter(ad -> ad.getAccessMethod().equals(X509ObjectIdentifiers.id_ad_ocsp))                                                                                                                                                                                                                                  
          .map(ad -> ad.getAccessLocation().getName().toASN1Primitive().toString())                                                                                                                                                                                                                                     
          .findFirst();

    return ocspUrl.get();
}

public static X509CertificateHolder toCertificateHolder(final String certPEM) {                                                                                                                                                                                                                                       
    val parser = new PEMParser(new StringReader(certPEM));                                                                                                                                                                                                                                                   
    return (X509CertificateHolder) parser.readObject();                                                                                                                                                                                                                                                               
}
于 2020-12-04T22:16:36.217 に答える