CRL URLを指定して、X509CRLオブジェクトを取得したいと思います。以下はコードです、
private static X509CRL downloadCRLFromWeb(String crlURL) throws
MalformedURLException, IOException, CertificateException, CRLException {
URL url = new URL(crlURL);
InputStream crlStream = url.openStream();
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
return (X509CRL) cf.generateCRL(crlStream);
} catch (CRLException e) {
System.out.println("Caught exception: " + e.getMessage());
e.printStackTrace();
return null;
} finally {
assert crlStream != null;
crlStream.close();
}
この行return (X509CRL) cf.generateCRL(crlStream);
は、CRLException: Empty input
私が試したいくつかのURL(すべてではない)で生成されます。
以下はスタックトレースです、
java.security.cert.CRLException: Empty input
at sun.security.provider.X509Factory.engineGenerateCRL(X509Factory.java:397)
at java.security.cert.CertificateFactory.generateCRL(CertificateFactory.java:497)
at demo.pkcs.pkcs11.TryLDAP.downloadCRLFromWeb(TryLDAP.java:60)
at demo.pkcs.pkcs11.TryLDAP.main(TryLDAP.java:83)
また、読み取ったときにcrlStream
戻らない-1
ため、正確に「空」ではないことにも注意してください。この例外の正確な原因とその解決方法を教えてください。そして、X509CRL
この例外を取得したURLからオブジェクトを取得できるように、このコードを修正するにはどうすればよいですか?
例外をキャッチしたURLについては、次の手順で解決しました。
crlStream
するString
"-----BEGIN X509CRL-----\n"
し、"\n-----END X509CRL-----\n"
開始と終了の時crlStreamString
crlStreamString
直しますInputStream
以下は作業コードです、
InputStream crlStream = url.openStream();
String stream = IOUtils.toString(crlStream);
String tryPEM = "-----BEGIN X509CRL-----\n";
tryPEM = tryPEM.concat(stream);
tryPEM = tryPEM.concat("\n-----END X509CRL-----\n");
System.out.println(tryPEM);
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
return (X509CRL) cf.generateCRL(IOUtils.toInputStream(tryPEM));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加