2017-05-11 27 views
0

我正在創建一個Android應用程序,應用程序應該向服務器發送POST請求。不幸的是,服務器正在使用自簽名證書。所以我必須創建一個PKCS12密鑰庫,它將包含CA證書,並使我的應用程序使用該密鑰庫。Java keytool不會解析我的CA證書的擴展

要創建這樣一個密鑰,我目前使用下面的命令:

keytool -import -trustcacerts -alias my-alias -file cacert.pem 
-keystore mykeystorefile -storetype PKCS12 

不幸的是,密鑰庫不起作用。 (更多關於SSL握手失敗。)

當我檢查使用此命令的密鑰庫:

keytool -list -v -keystore mykeystorefile 

我在這個名單的最後注意到一個奇怪的線。

#8: ObjectId: 2.5.29.18 Criticality=false 
Unparseable IssuerAlternativeName extension due to 
java.io.IOException: No data available in passed DER encoded value. 

0000: 30 00            0. 



******************************************* 
******************************************* 

Keytool無法解析擴展名,該擴展名是CA證書的一部分。

我對LetsEncrypt的CA證書也一樣,它工作得很好。

我很樂意爲任何關於如何解決這個問題的指針。

謝謝。

編輯:我目前使用的keytool是java-8-openjdk的一部分。

編輯2:因此,檢查CA證書後,發行人替代名稱擴展沒有任何價值。想知道是否有辦法如何跳過這些擴展?

回答

1

無法跳過證書上的任何內容。

如果髮卡行替代名稱爲空,那麼生成該證書的任何人都會產生錯誤。如果它是自簽名證書,則發行人備用名稱和主題備用名稱具有相同的值。如果它由任何CA簽署,CA的主題備用名稱將放入最終用戶的「發行人備用名稱」中。

您可能需要向他們詢問正確的CA證書。