同时拥有:%CATALINA_HOME%和%JAVA_HOME%。
CATALINA_HOME=d:\tomcat
JAVA_HOME=D:\Program Files\Java\jdk1.6.0_26
为我们的证书颁发机构生成CSR ..
"%JAVA_HOME%\bin\keytool.exe" -genkey -alias "test.domain.local" -keyalg RSA -sigalg SHA256withRSA -keysize 2048 -keystore "C:\NewCert\keystore.ks" -dname "CN=test.domain.local, OU=IT, O=Company Name, L=AnyTown, ST=State, C=US" -storepass "APASSWORD" && "%JAVA_HOME%\bin\keytool.exe" -certreq -keyalg RSA -sigalg SHA256withRSA -alias "test.domain.local" -file "C:\NewCert\test.csr" -keystore "C:\NewCert\keystore.ks" -storepass "APASSWORD"
是的,我知道服务器名称:devtest.domain.local与test.domain.local的CSR不同。我也修改了windows hosts文件,但仍然无法正常工作。
然后,我将test.csr发送到我们的证书管理员并收到了一个名为:test.cer的文件
让我们导入证书:
"%JAVA_HOME%\bin\keytool.exe" -importcert -file "C:\NewCert\test.cer" -keystore "C:\NewCert\keystore.ks" -alias "tomcat" -storepass "APASSWORD"
编辑文件D:\ tomcat \ conf \ server.xml,我们有:
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="200" scheme="https" secure="true"
keystoreFile="C:\NewCert\keystore.ks" keystorePass="APASSWORD"
clientAuth="false" keyAlias="tomcat" sslProtocol="TLS" />
然后重新启动Apache Tomcat for Windows ..
网站出现正常.. http://localhost/manager/html
让我们看一下端口8443:https://localhost:8443/manager/html 我们无法提取基于SSL的网页。我也试过端口443也没有成功。自签名证书不是一种选择 - 我们在审计时停止了。
发现错误,见下文..
-Djavax.net.debug=ssl,handshake
事实上,我已经添加了我们的自定义服务器选项:
-Xms1g
-Xmx6g
-XX:PermSize=256m
-XX:NewSize=256m
-XX:MaxNewSize=256m
-XX:MaxPermSize=256m
-XX:+AggressiveHeap
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-verbose:gc
-Dcom.sun.management.jmxremote.port.8086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dhttps.proxyHost=10.10.10.10
-Dhttps.proxyPort=8080
-Djavax.net.debug=ssl,handshake
进行了一些挖掘,并在我们的stdout日志中找到了以下内容。
*** ClientHello, TLSv1
RandomCookie: GMT: 1409089044 bytes = { <REMOVED_COOKIE> }
Session ID: {}
Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_RSA_EXPORT1024_WITH_RC4_56_SHA, SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA]
Compression Methods: { 0 }
Extension renegotiation_info, renegotiated_connection: <empty>
***
http-8443-exec-1, fatal error: 40: no cipher suites in common
javax.net.ssl.SSLHandshakeException: no cipher suites in common
http-8443-exec-1, SEND TLSv1 ALERT: fatal, description = handshake_failure
http-8443-exec-1, WRITE: TLSv1 Alert, length = 2
http-8443-exec-1, fatal: engine already closed. Rethrowing javax.net.ssl.SSLHandshakeException: no cipher suites in common
http-8443-exec-1, called closeOutbound()
http-8443-exec-1, closeOutboundInternal()
Using SSLEngineImpl.
Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
http-8443-exec-2, READ: SSLv3 Handshake, length = 67
发现这篇文章 - 似乎正是我所需要的 - Tomcat 7 getting SSLv2Hello is disabled error when trying to make client server ssl authntication
谢谢!
答案 0 :(得分:1)
keyAlias="test.domain.local"
。keyPass=<password>
。日志目录中的任何日志文件中真的没有错误/警告/致命消息吗?应该有一个。
答案 1 :(得分:0)
Juraj - 我给了你功劳,因为我没有完成我的研究。无论如何,我暂时关闭了:
-Dhttps.proxyHost=10.10.10.10
-Dhttps.proxyPort=8080
因为我认为这可能会混淆本地证书。我必须重新打开它,因为我们有供应商连接并且必须从它们收集数据。
在帖子中,Tomcat 7 getting SSLv2Hello is disabled error when trying to make client server ssl authntication
我正在测试响应者建议的内容:
sslProtocol="TLS"
sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2,SSLv2Hello"
由于本周我是随叫随到的人,我会花一些时间来解决这个问题,让大家知道我何时获得解决方案。 感谢。
答案 2 :(得分:0)
问题在于SSL存在大量漏洞。不支持SSL的服务器不应接受SSL格式的hello,并且任何服务器都不应接受非TLS连接作为安全。有些供应商比其他供应商更容易抵御漏洞,但问题是您是否想要牺牲您的安全性以容纳其他人这样做。
RC4最近被发现不如之前想象的那么安全,而且你的客户提供了一堆出口套件。这一切都让我感到灾难等待发生。牢牢掌握您在服务器上允许的密码套件,以及您想要使用的密码套件。这就是进行风险分析的地方。考虑一下您接受哪些牺牲以容纳客户。