[英]Java SSL - Connect to secure Rest Service using pkcs12 (.p12) file
[英]CertificateChain is null when importing pkcs12 (.p12) client-certificate file in Java Keystore
我將帶有證書鏈的 client-ssl-certificate KeyPair 導出為 PKCS12 文件密鑰庫資源管理器。 我可以再次使用 KSE 加載這個 PKCS12 文件,並且密鑰對和證書鏈都在那里。 當我將它加載到 Java KeyStore 中時,我能夠訪問該密鑰,但證書鏈為空。
這是我的代碼:
final KeyStore instance = KeyStore.getInstance( "pkcs12" );
instance.load( new ByteArrayInputStream( bytes ), password );
instance.getKey(alias, password) => returns Key
instance.getCertificateChain(alias) => returns null
final KeyStore.ProtectionParameter param = new KeyStore.PasswordProtection( password );
final KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry) instance.getEntry( alias, param );
=> fails:
java.lang.NullPointerException: invalid null input
at java.security.KeyStore$PrivateKeyEntry.<init>(KeyStore.java:524) ~[na:1.8.0_202]
at sun.security.pkcs12.PKCS12KeyStore.engineGetEntry(PKCS12KeyStore.java:1311) ~[na:1.8.0_202]
at java.security.KeyStore.getEntry(KeyStore.java:1521) ~[na:1.8.0_202]
通過調試,我可以看到 PrivateKeyEntry 的構造函數是在鏈參數為 null 的情況下調用的:
我對此完全沒有解釋,也沒有在互聯網上找到任何信息。
我可以排除使用的別名和使用的密碼作為原因。
我會感謝有關此主題的任何提示。
提前致謝,
亞歷山大
正如你在這里看到的:
https://github.com/frohoff/jdk8u-jdk/blob/master/src/share/classes/java/security/KeyStore.java#L523
在以下三種情況之一中拋出異常:
為了確保鏈是問題,您可以使用以下方法激活調試
-Djava.security.debug=all
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.