如何使用CRT和PEM文件在SSLcat中实现ssl(SSL_ERROR_NO_CYPHER_OVERLAP)

时间:2017-12-07 13:13:40

标签: tomcat ssl ssl-certificate tomcat7 tomcat8

我收到了来自供应商的ssl文件--2个crt文件和一个pem文件。有人可以给出如何在Tomcat 7中使用这些文件实现ssl的步骤吗?

我实现了以下步骤将ssl文件存储到keystore

keytool -import -alias root -keystore tomcat.jks -trustcacerts -file tomcat.pem 
keytool -import -alias comodo1 -keystore tomcat.jks -trustcacerts -file root.crt
keytool -import -alias comodo2 -keystore tomcat.jks -trustcacerts -file int.crt

在Tomcat中的行下面配置

<Connector port="443" protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https" secure="true" clientAuth="false"
sslProtocol="TLS" keystoreFile="/opt/tomcat.jks"
keystorePass="password"/>

还尝试用 org.apache.coyote.http11.Http11NioProtocol 替换上述协议,但仍然没有在浏览器上工作我得到以下错误消息。有人可以帮我这个。

An error occurred during a connection to XXXX:8443. Cannot communicate securely with peer: no common encryption algorithm(s). Error code: SSL_ERROR_NO_CYPHER_OVERLAP

3 个答案:

答案 0 :(得分:2)

请运行以下命令并确认密钥库中是否存在 privatekeyEntry

keytool -list -v -keystore&lt;密钥库文件路径&gt;

enter image description here

如果此条目不可用,则密钥库文件不能用于SSL加密。

答案 1 :(得分:0)

安装根证书时,应使用root.crt而不是tomcat.pem(我认为这是您的中间证书)。

我已按照以下步骤在tomcat 8上安装和配置SSL。

  1. 生成的密钥库运行命令:

    keytool -keysize 2048 -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore

    通过运行命令生成csr文件:

    keytool -certreq -keyalg RSA -alias tomcat -file yourCSR.csr -keystore tomcat.keystore

    在www.godaddy.com上提交CSR请求

  2. 一旦我的请求获得批准,goDaddy就会颁发证书。我已按照以下步骤操作(goDaddy将此指令与cert文件一起发送)。 通过运行以下命令安装根证书:

    <强> keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file [name of the root certificate]

    运行以下命令安装中间证书:

    keytool -import -alias intermed -keystore tomcat.keystore -trustcacerts -file [name of the intermediate certificate] 我的中级证书以.pem

    结尾

    通过运行以下命令将已颁发的证书安装到密钥库中:

    <强> keytool -import -alias tomcat -keystore tomcat.keystore -trustcacerts -file [name of the certificate]

    最后,我将以下内容添加/修改为server.xml并重新启动tomcat服务器。 **

    <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
       maxThreads="150" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS" keystoreFile=".mykeystore" keystorePass="xxxxxx"
       ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,
       TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,
       TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA" />
    

    **

答案 2 :(得分:0)

我需要对tomcat.keystore文件有所了解。

1.在生成CSR密钥之前,我看到tomcat.keystore中的内容列表,它包含具有所有者和发行者详细信息的PrivateKeyEntry条目。(所有者和发行者包含信息CN,OU,L,ST等我在创建时输入的相同细节tomcat.keystore。现在,如果我在tomcat配置,直到这里将工作,因为自签名证书将显示在我的浏览器发行人详细信息中。我同意这一点。

2.将所有证书(godaddy)导入我的tomcat.keystore之后,如果我看到列表,我可以看到其他条目,例如:来自godaddy的所有者和发行者的trustedCertEntry。但是在该列表中,PrivateKeyEntry显示Issuer为“XXX”,在创建tomcat.keystore时输入。我不认为发行人的名字是Godaddy.i我不确定我在哪里做错了。

现在配置并从浏览器启动tomcat后,问题名称显示“XXX”与我在创建密钥时输入的内容相同。即使导入所有godaddy证书后也不知道为什么它没有显示问题作为godaddy in brower ?