当前位置: 首页 > 知识库问答 >
问题:

Apache Tomcat for Windows SSL实现不工作

苏高峰
2023-03-14
  • 环境:Windows 2003 Server-64位
  • 服务器名称:devtest.domain.local
  • Apache Tomcat 6.0.36服务器-http://Tomcat.apache.org/(Windows)
  • 孙Java JDK:jdk1.6.0_26

同时定义%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主机文件,但仍然不能工作。

然后,我将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在尝试进行客户端服务器ssl验证时出现getting SSLv2Hello被禁用的错误

谢谢!

共有1个答案

终彬郁
2023-03-14
  1. 尝试对key、certreq和cert使用相同的别名(例如test.domain.local)。然后在server.xml中配置keyalias=“test.domain.local”
  2. 使用KeyTool生成私钥时是否指定了密钥密码?尝试在server.xml中为https连接器指定keypass=

日志目录中的任何日志文件中真的没有错误/警告/致命消息吗?应该有一个。

 类似资料:
  • 我正在使用Spring Boot2实现使用Jersey的REST实现。我无法将资源类注册为Jersey实现的一部分。我收到一个编译器错误。 错误:

  • 问题内容: 可以说我有一个叫做Guice服务的服务,这是它的构造函数 我的代码曾经使用枚举创建它 而且我必须在某处进行工厂实施。像这样 现在,我想使用Guice,我想我想使用FactoryModuleBuilder。 如果我对IPayment的了解不止一种,该怎么办? (例如,CardPayment,CashPayment) 适用于一个 .implement(IPayment.class, Cas

  • 我使用的是Spring数据JPA1.10.11。释放 我有一个基础存储库,所有其他存储库都会扩展它。这部分有效。 我还想为一些要扩展的存储库声明一个自定义接口。所以我声明了一个接口和一个“Impl”类: 然后,我创建一个现有的工作存储库来扩展这个新接口: 注意:此存储库在扩展TestRepository之前工作,但是在如上扩展之后,应用程序上下文将无法以错误开始: 配置如下所示: 我觉得我一直在遵

  • 我试图在C中实现正弦函数,但我得到了奇怪的结果。下面是我用来计算正弦的三个函数:

  • 我是使用谓词的新手,不确定我是否正确理解了它。我有一个抽象的类,其中每小时和薪水员工是分开创建的。我的问题依赖于我的类,我不确定如何检查它是否是每小时员工并返回真或假。 我需要为以下所有条件创建不同的谓词: 所有员工,仅每小时一次,仅限工资和全职。 到目前为止,我只是想先让“仅每小时”谓词正常工作,然后再找出剩下的谓词。我不确定在“p”后面加什么来检查它是哪种类型的员工。我目前拥有的是: 我还有一

  • 我正在使用 netbeans 并从数据库生成实体类。我所有插入和更新实体的合并调用都运行良好,但是当我尝试删除实体时,它不会将其从数据库中删除,也不会引发异常。有人可以帮我解决。我的代码如下: AbstractFacade.java AccountEntity.java DealerEntity.java