Tomcat 8 ERR_SSL_VERSION_OR_CIPHER_MISMATCH

时间:2016-02-21 19:17:52

标签: java ssl

我从ssl2buy购买了通配符SSL。将它安装在我的Tomcat 8 - server 2012服务器上,运行我的Java应用程序。在我安装证书后,我收到了以下错误消息:ERR_SSL_VERSION_OR_CIPHER_MISMATCH

支持叫我:

“密码和协议问题与SSL证书无关,关于协议和密码设置。您应该更新正确的密码安全设置。”

告诉我这个支持离线后我打开的机票没有得到答复:D所以也许有人可以帮助我。

这个步骤我用来创建jks文件:

keytool -genkey -alias ge.shemo -keyalg RSA -keystore shemo_wildcard

keytool -certreq -keyalg RSA -alias ge.shemo -file irakli.csr -keystore shemo_wildcard

keytool -importcert -file shemo_Wildcart.cer -keystore shemo_wildCard.jks -alias "ge.shemo"

有人可以告诉我我做错了什么吗?或者我需要改变什么?

已更新

我从一开始就开始了所有事情:

以下是我遵循的步骤。

  1. 从ssl2buy.com购买证书

  2. 生成了csr:

    keytool -keysize 3096 -genkey -alias *.shemo.ge -keyalg RSA -keystore tomcat8.keystore
    
  3. 传递:TesT123

    keytool -certreq -keyalg RSA -alias *.shemo.ge -file tomcat8.csr -keystore tomcat8.keystore
    

    生成的csr:

    -----BEGIN NEW CERTIFICATE REQUEST-----
    MIID4TCCAkYCAQAwZjELMAkGA1UEBhMCR0UxEDAOBgNVBAgTB3RiaWxpc2kxEDAOBgNVBAcTB3Ri
    aWxpc2kxDjAMBgNVBAoTBXNoZW1vMQ4wDAYDVQQLEwVzaGVtbzETMBEGA1UEAwwKKi5zaGVtby5n
    ZTCCAaUwDQYJKoZIhvcNAQEBBQADggGSADCCAY0CggGEAODEEKcJJ7AccanmeIIpAAG2ES6hCAIM
    eiFe7WfJtFydDvGAUS9DhKpwW1CtYT3i0vhmbYZxxGc5FK9bHYtHwPtV/Yhptqi+xzk1eFkZxcvo
    7dLNQGo73PfqPE1ikHrlyTffYB+/JEbBglxsem3tfjPpnb+SoiJ4sq5RFNB/Zm45etnlpdEnsRxC
    dAEIUXzCaCnfR6nB5547BMOqmqTJxwB/BRoYLDmZoloJ/PsPTMIruKo7SzMQAkCLZ0J+S24Ihfei
    95Y7n5XRxYdWOKBS5LUWJXpWEkiGmfP0ombV0l7YW2Fb/nJEjASLSNSliTE2yXRV4P8lT2BZbVL6
    8O5UMCexD6Xa33n4HMn94ZsfnQuZSHF0YWYK9No6Cs2Tc9F0OR3dQlOj1Xht9Q5vmg/6B/ooRaJB
    XmyJRPAxOe1WGzsr2ElbGu7CS9XMVY7VU+5fi3ojRbU1m0d7gLG6QEmuaR7Ti+wT28LUL44ezVtY
    bOGW3peXxgw/SKm18D4ue+ArWTgwFQIDAQABoDAwLgYJKoZIhvcNAQkOMSEwHzAdBgNVHQ4EFgQU
    BDAEJE34muDqTKxiUm30R+ZJW8cwDQYJKoZIhvcNAQELBQADggGEAHmu5dxjHgyh2BwDuqTN7l5t
    oa+lQBQxDZBtZpduAulm3a2Dt8qELy3VF3IZLa2bWrG/91zoZWJCgCLva9uq7Yq9aUtJau0CebnJ
    eWZ2XjiwJ/6ZvO12Y9Nc9oISFF9mswdXLOm7EHAXVfttRG4itgsNnTVziX2nynQPwN/1k9F4MysD
    dVeBRyoY1QctWW1rj3cuZdz+vs4x9uWd+Wew4+GPzicq4hkGBLhvARP1WP0yUoU9+s60l6oqqFPY
    prY/245XcXCEbiqtlMrnKFJ0quokpIgmb03ak1AyqDNTy6L1z1mKl3suQd0VR8TzLDEYp8j+lq3t
    usOhT4SDMp4fPRcBCfFlmjpvGZ2lWZ3ewadldxifbG/xC4mAyLHHj9Px+/sU44gQ6qOk2rhYGI16
    nsaHTADSYUfKOCzcZB7kPbG6rZojVLL8dpRNCfJdZWZXPRjMHBQWkdGaU6MbG2LUOKp5oB540QKX
    3I/QR6g8fgN4JCuzAjxxbxlG42y4N5hsWhnt2Q==
    -----END NEW CERTIFICATE REQUEST-----
    

    通过电子邮件收到证书。用fllowing代码创建名为tomcat8.cer的文件

    收到证书:

    -----BEGIN CERTIFICATE-----
    MIIFSzCCBDOgAwIBAgISESHnxxQ9Z9905TDRC/T5a1nPMA0GCSqGSIb3DQEBCwUA
    MEwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSIwIAYD
    VQQDExlBbHBoYVNTTCBDQSAtIFNIQTI1NiAtIEcyMB4XDTE2MDIyMjE1NDIwNVoX
    DTE3MDIyMDA3MzcyNFowODEhMB8GA1UECxMYRG9tYWluIENvbnRyb2wgVmFsaWRh
    dGVkMRMwEQYDVQQDDAoqLnNoZW1vLmdlMIIBpTANBgkqhkiG9w0BAQEFAAOCAZIA
    MIIBjQKCAYQA4MQQpwknsBxxqeZ4gikAAbYRLqEIAgx6IV7tZ8m0XJ0O8YBRL0OE
    qnBbUK1hPeLS+GZthnHEZzkUr1sdi0fA+1X9iGm2qL7HOTV4WRnFy+jt0s1Aajvc
    9+o8TWKQeuXJN99gH78kRsGCXGx6be1+M+mdv5KiIniyrlEU0H9mbjl62eWl0Sex
    HEJ0AQhRfMJoKd9HqcHnnjsEw6qapMnHAH8FGhgsOZmiWgn8+w9Mwiu4qjtLMxAC
    QItnQn5LbgiF96L3ljufldHFh1Y4oFLktRYlelYSSIaZ8/SiZtXSXthbYVv+ckSM
    BItI1KWJMTbJdFXg/yVPYFltUvrw7lQwJ7EPpdrfefgcyf3hmx+dC5lIcXRhZgr0
    2joKzZNz0XQ5Hd1CU6PVeG31Dm+aD/oH+ihFokFebIlE8DE57VYbOyvYSVsa7sJL
    1cxVjtVT7l+LeiNFtTWbR3uAsbpASa5pHtOL7BPbwtQvjh7NW1hs4Zbel5fGDD9I
    qbXwPi574CtZODAVAgMBAAGjggG2MIIBsjAOBgNVHQ8BAf8EBAMCBaAwSQYDVR0g
    BEIwQDA+BgZngQwBAgEwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFs
    c2lnbi5jb20vcmVwb3NpdG9yeS8wHwYDVR0RBBgwFoIKKi5zaGVtby5nZYIIc2hl
    bW8uZ2UwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
    PgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NybDIuYWxwaGFzc2wuY29tL2dzL2dz
    YWxwaGFzaGEyZzIuY3JsMIGJBggrBgEFBQcBAQR9MHswQgYIKwYBBQUHMAKGNmh0
    dHA6Ly9zZWN1cmUyLmFscGhhc3NsLmNvbS9jYWNlcnQvZ3NhbHBoYXNoYTJnMnIx
    LmNydDA1BggrBgEFBQcwAYYpaHR0cDovL29jc3AyLmdsb2JhbHNpZ24uY29tL2dz
    YWxwaGFzaGEyZzIwHQYDVR0OBBYEFAQwBCRN+Jrg6kysYlJt9EfmSVvHMB8GA1Ud
    IwQYMBaAFPXN1TwIUPlqTzq3l9pWg+Zp0mj3MA0GCSqGSIb3DQEBCwUAA4IBAQB6
    stii/rEwoUTd2dIqnwmYB6k6hH9Nn8VAsd1sLYNmK+LctDGLqc+uYyWcFbsDcWYA
    aVd8OtxFLZWjubvj/RH+qQAonPNj2Q7zdk5KW05EaMtezGLPiPq1KT2Zw83xj20y
    +lHRa+aZL7VoTgO0Ud86rpzKnVNHwG90k5HR9LtnsWNc56xzXOul/ws1d6gSGWi2
    YOkMrPaDwJst84+hxPOv9ZHXJNos6QmX8eJXlQfIeRcFwc5/A3ghCvMO0Z3NdYdu
    f7Lk92M/kPBz0aDgBSD9fH0lR1PcuPBDe972FwVieN7ynup2RVKPrpW13t1F2RmI
    Xyk5F2qTpY588dTiMihC
    -----END CERTIFICATE-----
    

    然后做了以下:

    keytool -import -alias root -keystore tomcat8.keystore -trustcacerts -file tomcat8.cer
    
    keytool -import -alias intermed -keystore tomcat8.keystore -trustcacerts -file tomcat8.cer
    
    keytool -importcert -file tomcat8.cer -keystore twix.jks -alias *.shemo.ge
    

    这是我的连接器:

     Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile ="C:\Program Files (x86)\Java\jdk1.7.0_79\bin\twix.jks"  keystorePass="TesT123"/>
    

    毕竟我重新启动服务器并仍然收到此错误:

    ERR_SSL_VERSION_OR_CIPHER_MISMATCH
    

2 个答案:

答案 0 :(得分:5)

让我试着对这个问题作一般性的解释:

服务器通常支持不同的SSL协议版本(SSLv3,TLS1.0,TLS1.1,TLS1.2)和一堆不同的密码。

在握手期间,客户端和服务器协商一个协议版本和一个要使用的密码。

如果存在不匹配,则表示您的服务器配置为仅支持TLS1.2,但您的客户端仅支持TLS1.0,或者客户端和服务器没有支持的单个密码。

我从未使用过Tomcat,但快速查看https://tomcat.apache.org/tomcat-8.0-doc/security-howto.html告诉我cipherssslProtocol="TLS"参数可能会引起您的兴趣:

  

sslEnabledProtocols 属性确定使用哪种版本的SSL / TLS协议。自2014年POODLE攻击以来,所有SSL协议都被认为是不安全的,并且在独立Tomcat设置中对此属性的安全设置可能是sslEnabledProtocols =" TLSv1,TLSv1.1,TLSv1.2"

     

密码属性控制用于SSL连接的密码。默认情况下,将使用JVM的默认密码。这通常意味着弱出口等级密码将包含在可用密码列表中。安全环境通常需要配置更有限的密码集。此属性接受用于包含/排除密码套件的OpenSSL语法。对于2014-11-19,使用独立的Tomcat 8和Java 8,可以通过使用sslEnabledProtocols属性(上面)仅指定TLS协议并排除非DH密码和弱/破解密码来实现Forward Secrecy。 Qualys SSL / TLS测试是配置这些设置的有用工具。

但是由于默认情况下它已经使用了非常保守/兼容的设置,我无法确定问题的根源在哪里,也许你在某处有一些全局设置覆盖。此外,您还没有提到您用于获取特定错误代码的客户端。也许只需删除import seaborn as sns %matplotlib inline import matplotlib.pyplot as plt import numpy as np tips = sns.load_dataset("tips") g = sns.jointplot("total_bill", "tip", data = tips[["total_bill", "tip"]].applymap(lambda x : -np.log10(x))) ,假设您的客户端仅支持SSLv3。

答案 1 :(得分:0)

@Nappy给出的答案是正确且非常有用的。但是,它不能解决我的问题,我得到了相同的错误消息,在我的情况下,这是由于未将私钥加载到我的密钥库中。因为我总是很难在Windows上的Tomcat上安装SSL证书,所以我找到了自己的解决方案,可能会对他人有所帮助。

因为我有一个包含私钥(* .pfx)的通配符证书。您可以只安装该证书,在server.xml中添加该证书的路径,然后将相应的密码添加到文件中。还添加一行以声明File和Pass之间的密钥库类型:

keystoreFile="C:\Users\Your\Certificate.pfx"
keystoreType="pkcs12"
keystorePass="Password123" sslProtocol = "TLS"  

对我来说,这比使用keytool将所有内容安装到Tomcat keystore更加容易。

希望这会有所帮助!