我正在尝试为我们的服务器配置SSL。现在,我确保crt文件密码与密钥库(.jks密码)相同。但是,每当我将crt文件作为别名tomcat或root导入时(我只能使用其中一个,因为只有一个crt文件),我得到ssl_error_no_cypher_overlap
。
我无法找到任何导入一个证书的指南,该证书不会抱怨它是一个自签名证书而且一个证书没有ssl_error_no_cypher_overlap
错误。
这些是我的文件
domainname.ca-bundle
,.crt
,.csr
,.key
,.p12
,domainname.jks
,
这是我给出的命令:
keytool -import -trustcacerts -alias root -file domainname.crt -keyalg RSA -keystore domainaname.jks
连接器:
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="200" compression="force"
compressionMinSize="1024" scheme="https" secure="true" clientAuth="false" sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1" sslProtocol="TLS" URIEncoding="utf-8"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"
keystoreFile="domain.jks" keystorePass="pass" />
任何帮助都会很好。非常感谢。
答案 0 :(得分:0)
SSL / TLS服务器必须具有证书WITH MATCHING PRIVATE KEY 和链证书(如果适用)。单个证书本身,甚至几个证书是不够的。先做
keytool -list -v -keystore $d.jks
并查找PrivateKey条目(不是trustedCert条目)。如果存在,请查看证书以确定它们是否是您想要的证书。如果它们不是所需的证书,但您的.crt和捆绑文件中确实有所需的证书,那么请描述.crt的内容,特别是捆绑文件,我们可以找出如何使用他们来修复.jks。特别是,有两种格式通常用于单个证书,有几种用于CA“捆绑”;如果你在记事本或者vi这样的编辑器中打开文件,第一行是-----BEGIN something-----
,后面是几乎所有字母和数字的块,然后是----END same----
,也许更多相同,发布一些事情;如果它们看起来是所有随机字符,并且您至少在前64个字节后有一个十六进制转储工具,或者如果您有OpenSSL或任何其他ASN.1(二进制)解析器可用的结果。如果根本没有私钥,这个.jks就没用了;丢弃并继续。
您的.key
文件听起来可能包含私钥,但有几十种不同的格式标记为.key
,并且此文件的可用格式不太可能。如果在p12中关键不方便,我们可以回过头来看。
您的.p12
文件几乎肯定包含私钥和一些证书,但不一定包含所需的证书。 (从技术上讲,PKCS#12标准允许没有私钥的文件,但创建PKCS#12的所有常用工具都不会这样做。)要查看您现在拥有的内容,请执行
keytool -list -v -keystore $d.jks -storetype pkcs12
如果它是您想要的,Tomcat(和Java / JSSE)实际上可以直接使用pkcs12作为密钥库来代替JKS:只需为其设置keystoreFile
和keystorePass
并添加{ {1}}。或者,您可以使用
keystoreType="pkcs12"
如果.p12包含私钥但错误的证书,则有两种方法:
首先将pkcs12转换为JKS,然后将证书修复为JKS;现在这与我的第一段相同:JKS包含私钥但错误的证书
如果您拥有或获得OpenSSL,请使用它将pkcs12“解压缩”为单独的私钥和证书文件,将错误的证书文件替换为正确的证书文件,然后重新构建新的pkcs12。这将使您回到我的第四段:pkcs12与正确的证书,您可以使用或转换为JKS并使用它。
答案 1 :(得分:0)
我尝试了您的连接器属性(使用协议进行了一些更改)
protocol="org.apache.coyote.http11.Http11NioProtocol"
truststoreFile="domainaname.jks"
truststoreType="JKS" truststorePass="123456"
每件事都很好
变化:
keytool -importkeystore -destkeystore mykeystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias myservercert
您是否在密钥库中导入私钥?
{
"GetIPAResult": "{\"Data\":[{\"Name\":\"Pan1\",\"Email\":\"abc@example.com\"},{\"Name\":\"Pan2\",\"Email\":\"xyz@example.com\"}]}"
}