2013-02-15 114 views
8

我希望当我导入SSL证书以激活Tomcat的6 HTTPS然后,我就在下面另有说明错误:java.lang.Exception的:输入不是X.509证书:keytool的错误

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

哪有我解决这个错误?

+1

[错误导入SSL证书:不是X.509证书](http://stackoverflow.com/questions/9889669/error-importing-ssl-certificate-not-an-x-509-certificate) – 2013-03-12 22:17:38

+0

[使用SSL和证书使用HttpClient]可能的重复(http://stackoverflow.com/questions/2774722/using-httpclient-with-ssl-and-certificates) – user1251007 2014-05-21 11:59:46

回答

6

我在尝试将.crt文件导入java密钥库时遇到过类似的问题。

我可以按以下步骤来解决这个问题:

生成PKCS12格式密钥库:

openssl pkcs12 -export -name <domain_name> -in <certificate_name>.crt -inkey <certificate_name>.key -out keystore.p12 

转换PKCS12密钥库:

,只要你想在下面两个命令输入密码java密钥库

keytool -importkeystore -destkeystore tomcat.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias <domain_name> 

检查您的证书在ke ystore:

keytool -list -v -keystore tomcat.jks 
4

我面临同样的问题,实际问题是行字符结束,证书文件不应包含行字符结束。解码后的字符串应该在一行中。

 Eg. if your cer file contains char like below 
-----BEGIN CERTIFICATE----- 
SSFDsdfsSDfsGSDFasdfSFADsdSDFSsdf 
FGHJFGHfghRTURTYUTRYyrtRTYTRYRTYR 
ASDFRTYRTrtyrtyRTryrTRYrtyrTYRYrt 
werWERWer#$%&EEFGERedfgre$%#dfg^# 
-----END CERTIFICATE----- 

将其更改为

-----BEGIN CERTIFICATE-----

SSFDsdfsSDfsGSDFasdfSFADsdSDFSsdfFGHJFGHfghRTURTYUTRYyrtRTYTRYRTYRASDFRTYRTrtyrtyRTryrTRYrtyrTYRYrtwerWERWer#$%& EEFGERedfgre $%#^ DFG#

-----END CERTIFICATE-----

没有多余的行或列。希望能帮助到你。