RSA公開鍵を格納し、ユーザーが任意の鍵を使用して情報の短いストリームを暗号化できるようにするJavaアプリケーションがあります。このアプリケーションでは、ユーザーが新しいキー証明書をキーストアにインポートすることもできます。ファイルから証明書をロードするときは、エイリアスとして共通名(CN)を使用します。ここに問題があります:
CertificateFactory x509CertFact = CertificateFactory.getInstance("X.509");
X509Certificate cert = x509CertFact.generateCertificate(certificateInputStream);
String alias = cert.getSubjectX500Principal().getName();
assert alias.equals("CN=CommonName, OU=TestCo..."); // FAILS
assert alais.equals("cn=commonname, ou=testco..."); // PASSES
ファイル内のサブジェクト名に大文字と小文字が混在していることはわかっているので、その大文字と小文字を保持する必要があります。Java6のJCEからより柔軟なX.509サポートを取得する方法を知っている人はいますか?
BouncyCastle軽量APIの使用を検討しましたが、ドキュメントはほとんど存在しません。
編集:JDK6u11の使用java.securityのセキュリティプロバイダーのリストは次のとおりです。
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=com.sun.net.ssl.internal.ssl.Provider
security.provider.4=com.sun.crypto.provider.SunJCE
security.provider.5=sun.security.jgss.SunProvider
security.provider.6=com.sun.security.sasl.Provider
security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.8=sun.security.smartcardio.SunPCSC
security.provider.9=sun.security.mscapi.SunMSCAPI
security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
証明書:
-----証明書の開始----- MIIDHjCCAtugAwIBAgIESnr4OzALBgcqhkjOOAQDBQAwcjELMAkGA1UEBhMCVVMxFTATBgNVBAoT DEdlbWFsdG8gSW5jLjEnMCUGA1UECxMeU29sdXRpb25zIGFuZCBTcGVjaWFsIFByb2plY3RzMSMw IQYDVQQDExpGUkJCTHVuYUNyeXB0b1NlcnZlci0xLjAuMDAeFw0wOTA4MDYxNTM1MjNaFw0wOTEx MDQxNTM1MjNaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxHZW1hbHRvIEluYy4xJzAlBgNVBAsT HlNvbHV0aW9ucyBhbmQgU3BlY2lhbCBQcm9qZWN0czEjMCEGA1UEAxMaRlJCQkx1bmFDcnlwdG9T ZXJ2ZXItMS4wLjAwggG3MIIBLAYHKoZIzjgEATCCAR8CgYEA / X9TgR11EilS30qcLuzk5 / YRt1I8 70QAwx4 / gLZRJmlFXUAiUftZPY1Y + r / F9bow9subVWzXgTuAHTRv8mZgt2uZUKWkn5 / oBHsQIsJP u6nX / rfGG / g7V + fGqKYVDwT7g / bTxR7DAjVUE1oWkTL2dfOuK2HXKu / yIgMZndFIAccCFQCXYFCP FSMLzLKSuYKi64QL8Fgc9QKBgQD34aCF1ps93su8q1w2uFe5eZSvu / o66oL5V0wLPQeCZ1FZV466 1FlP5nEHEIGAtEkWcSPoTCgWE7fPCTKMyKbhPBZ6i1R8jSjgo64eK7OmdZFuo38L + iE1YvH7YnoB JDvMpPG + qFGQiaiD3 + Fa5Z8GkotmXoB7VSVkAUw7 / s9JKgOBhAACgYBHBBVNzuoXgpPFPkSN71rI MKkSIUAVE7iLagFCklCEvHlh1UxyRhCWNh / UazaJzHRZofWlVPRGmgtl + J6BJRJIDorPqt8FfifY fpbAbCQctMToFF5QqggumOlJozXyfV9eyYyNn + Y4yZDr8JKq70WX / S2M + Oo1 + SBJsXMTeDdfkDAL BgcqhkjOOAQDBQADMAAwLQIUA + VcqEYMHwXdKY4XC + oO / zF / pRkCFQCDKAS5HpSMazbZgToEEYft QFJSvw == -----証明書の終了-----