簡體   English   中英

keytool keytool 錯誤:java.lang.Exception:輸入的不是 X.509 證書

[英]keytool keytool error: java.lang.Exception: Input not an X.509 certificate

嘗試將證書添加到密鑰庫,以便我可以在基於 Java 的應用程序中使用它。 這對我來說是一個新概念。

我有一個該站點的 .p7b 證書,我整理了一個 keytool 命令。 當我輸入時,提示我指定密碼,然后提示以下錯誤

keytool error: java.lang.Exception: Input not an X.509 certificate

任何人都可以提供見解嗎?

C:\Users\Desktop\>keytool -import -trustcacerts -file "service.site.com - SSL Cert.p7b" -keystore service.site.com.jks
Enter keystore password:
Re-enter new password:
keytool error: java.lang.Exception: Input not an X.509 certificate

您可以嘗試將密鑰轉換為 CER (X509),然后嘗試導入它:

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer

即使我試圖導入 .pem 文件,我也遇到了類似的問題。 該文件僅包含人類可讀形式的單個證書,並封裝在--BEGIN CERTIFICATE-- 和--END CERTIFICATE-- 中。 在 java 7(補丁 71)中,keytool 無法解析此類文件並拋出與您相同的錯誤。 一旦我刪除了文件的文本部分:

Certificate:
Data:
    Version: 3 (0x2)
    Serial Number: 11864724255945479761 (0xa4a7f7d949c31d11)
Signature Algorithm: sha1WithRSAEncryption
    Issuer: C=COM, ST=CA, O=Company, OU=ORG, CN=ORG/emailAddress=admin@company.org
    Validity
        Not Before: Jan  5 15:30:35 2015 GMT
        Not After : Jan  2 15:30:35 2025 GMT

它對我有用。

另請查看以下文章( https://myonlineusb.wordpress.com/2011/06/19/what-are-the-differences-between-pem-der-p7bpkcs7-pfxpkcs12-certificates/ ),因為它解釋了各種格式之間的差異並提供了如何從一種格式轉換為另一種格式的命令

使用 keytool 導入證書時,我遇到了同樣的錯誤。 從 Java 6 版本開始,keytool 增加了一項增強功能:即 keytool 可以合並和導入PKCS12 格式的密鑰庫。 我同意 tazarov 的回答,您需要轉換 PKCS#7 或 P7B 格式(基本上以 Base64 ASCII 格式存儲,文件擴展名為 .p7b 或 .p7c)。

在進入解決方案之前,我認為澄清一些概念是值得的。 我將從一本優秀的書中引用以下概念:Ivan Ristić 的防彈 SSL 和 TLS 版權所有 © 2015 Feisty Duck Limited。 版權所有。

PKCS#7 證書 一種為傳輸簽名或加密數據而設計的復雜格式,在 RFC 2315 中定義。它通常帶有 .p7b 和 .p7c 擴展名,可以根據需要包含整個證書鏈。 Java 的 keytool 實用程序支持這種格式。

二進制 (DER) 證書 包含原始形式的 X.509 證書,使用 DER ASN.1 編碼。

ASCII (PEM) 證書 包含一個 base64 編碼的 DER 證書,其中 -----BEGIN CERTIFICATE----- 用作標題, -----END CERTIFICATE----- 作為頁腳。 通常每個文件只有一個證書,盡管某些程序根據上下文允許多個證書。 例如,Apache Web 服務器要求服務器證書單獨放在一個文件中,所有中間證書放在另一個文件中。

解決方案

獲取和轉換:

 openssl s_client -showcerts -connect "service.site.com - SSL Cert.p7b":443 </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM