我正在使用最新的jetty和jdk,它应该支持像TLS_DHE_DSS这样的DSA密码套件....所以我使用DSA算法生成了证书文件和密钥对,将其上传到我的服务器,然后重新启动了我的服务器,服务器启动成功。但在那之后,我无法使用任何浏览器打开该服务器的任何页面。我看到的只是页面上的错误消息:ERR_SSL_VERSION_OR_CIPHER_MISMATCH。
有人可以帮我吗?对于DSA码头有什么问题吗?
答案 0 :(得分:1)
没有必要发送堆栈溢出和github issues(我们注意两者)
对于keytool / keystore中的DSA,您不能将其用于SSL / TLS(Jetty,Java甚至各种SSL / TLS协议版本本身都不支持.DSA只是一种签名/验证算法,它不需要SSL / TLS所需的加密/解密/密钥交换。
将RSA用于密钥库并指定SHA256算法(或更高版本),位大小为4096(或更高)。
转储您的启动并查看为什么您感兴趣的密码被禁用。
$ cd /path/to/my/jettybase
$ java -jar /path/to/jetty-dist/start.jar jetty.server.dumpAfterStart=true
查找SslContextFactory
树和Cipher Suites
分支。
Disabled
部分将列出每个禁用的密码套件,并指出特定密码套件的禁用位置。
你会看到......
JreDisabled
这意味着JVM本身已将其禁用。ConfigExcluded
表示您的${jetty.base}
配置已将其禁用。无论哪种方式,您都需要查看文档中的Enabling / Disabling Specific Cipher Suites,了解如何设置它以满足您的特定需求。
答案 1 :(得分:0)
我在OpenNMS中遇到与嵌入式Jetty类似的问题。Wireshark capture showing Ciphers offered by the browser
据我所知,浏览器提供的内容与Jetty支持的内容之间有多种常见的密码和TLS版本,但Jetty拒绝使用上述不匹配的密码错误消息进行连接。所有三个主要浏览器似乎都因Fatal Hanshake(TLS1.2)故障而失败。但是,使用非FQDN主机名创建主机/域名不匹配允许用户设置站点例外并将TLS设置为"成功"使用TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA和TLS v1.2。因此,似乎密码不是问题所在。握手中的其他东西导致Jetty失败,并且浏览器将响应误解为密码不匹配。
从Jetty post-start dump:
| | += SslContextFactory@629464ad(file:///opt/opennms/etc/jetty.keystore,file:///opt/opennms/etc/jetty.keystore) trustAll=false
| | | +- Protocol Selections
| | | | +- Enabled (size=3)
| | | | | +- TLSv1
| | | | | +- TLSv1.1
| | | | | +- TLSv1.2
| | | | +- Disabled (size=2)
| | | | +- SSLv2Hello - ConfigExcluded:'SSLv2Hello'
| | | | +- SSLv3 - JreDisabled:java.security, ConfigExcluded:'SSLv3'
| | | +- Cipher Suite Selections
| | | +- Enabled (size=42)
| | | | +- TLS_DHE_DSS_WITH_AES_128_CBC_SHA
| | | | +- TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
| | | | +- TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
| | | | +- TLS_DHE_DSS_WITH_AES_256_CBC_SHA
| | | | +- TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
| | | | +- TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
| | | | +- TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
| | | | +- TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
| | | | +- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
| | | | +- TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
| | | | +- TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
| | | | +- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
| | | | +- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
| | | | +- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
| | | | +- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
| | | | +- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
| | | | +- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
| | | | +- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
| | | | +- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
| | | | +- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
| | | | +- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
| | | | +- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
| | | | +- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
| | | | +- TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
| | | | +- TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
| | | | +- TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
| | | | +- TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
| | | | +- TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
| | | | +- TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
| | | | +- TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
| | | | +- TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
| | | | +- TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
| | | | +- TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
| | | | +- TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
| | | | +- TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
| | | | +- TLS_EMPTY_RENEGOTIATION_INFO_SCSV
| | | | +- TLS_RSA_WITH_AES_128_CBC_SHA
| | | | +- TLS_RSA_WITH_AES_128_CBC_SHA256
| | | | +- TLS_RSA_WITH_AES_128_GCM_SHA256
| | | | +- TLS_RSA_WITH_AES_256_CBC_SHA
| | | | +- TLS_RSA_WITH_AES_256_CBC_SHA256