【问题标题】:Configuring Tomcat to Use SSL配置 Tomcat 以使用 SSL
【发布时间】:2011-11-21 06:38:53
【问题描述】:

我的第一个问题 - 不使用数字证书就不能使用 https 吗? 我的第二个问题 - 我正在保护我的 Web 应用程序中的几个页面。于是添加了以下内容

<security-constraint>
    <web-resource-collection>
        ......
    </web-resource-collection>
    <auth-constraint>
        ......
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

我尝试运行应用程序,但启用了 ssl 的页面无法加载。所以我继续创建证书。在 server.xml 中添加以下内容?

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
       maxThreads="150" 
       scheme="https" 
       secure="true" 
       keystoreFile="C:\Program Files\apache-tomcat-7.0.11-windows-x86\apache-tomcat-7.0.11\.keystore" 
       keystorePass="johneipe"
       clientAuth="optional" 
       sslProtocol="TLS" />

我仍然无法访问这些页面,也无法访问https://localhost:8443。

【问题讨论】:

  • 它不适用于公共互联网应用程序。这是测试。
  • 另外我创建了密钥keytool -genkey -alias tomcat -keyalg RSA -validity 100并将.keystore文件复制到上述目录中。

标签: java jakarta-ee tomcat ssl https


【解决方案1】:

您使用什么格式的密钥库?我相信 Tomcat 配置中的默认值是 JKS,但如果您使用的是 PKCS#12(.p12 或 .pfx 扩展名),则需要指定它。
注意 keystoreType="PKCS12"。

<Connector port="1443"
           maxThreads="200"
           enableLookups="false" disableUploadTimeout="true"
           acceptCount="100" debug="0" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" SSLEnabled="true"
           keystoreFile="/opt/companyName/tomcat.keystore"
           keystoreType="PKCS12"
           keystorePass="password"
           ciphers="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA"
           URIEncoding="UTF-8"
       />

【讨论】:

  • 我必须使用默认设置。我没有更改任何设置,事实上我不知道这是什么意思..
  • 您是否在日志文件中看到任何错误,表明可能是什么问题?在日志目录中查找 catalina.err。
【解决方案2】:

将您的协议更改为 protocol="org.apache.coyote.http11.Http11Protocol"

这将解决问题。

【讨论】:

  • 为什么?指定 org.apache.coyote.http11.Http11Protocol 和 http/1.1 有什么区别?
  • @Kevin, value 'HTTP/1.1' 表示 Tomcat 将选择 SSL 实现。如果启用了 APR,则 Tomcat 更喜欢 APR 实现。但是属性 keystoreFiles、keystorePass 是为 JSSE 配置保留的。 value 'org.apache.coyote.http11.Http11Protocol' 表示你要使用JSSE实现,和你的配置一致。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
  • 2012-12-23
  • 2018-04-01
相关资源
最近更新 更多