使用Tomcat设置SSL(自签名证书)

8

我主要参考了这个页面:

http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html

我使用以下命令创建密钥库:

keytool -genkey -alias tomcat -keyalg RSA -keystore /etc/tomcat6/keystore

并回答提示的问题。

然后我编辑了我的server.xml文件,并取消注释/编辑了这一行:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" 
           keystoreFile="/etc/tomcat6/keystore" 
           keystorePass="tomcat" />

然后我进入我的项目的web.xml文件,并将其添加到文件中。

     <security-constraint>
            <web-resource-collection>
                    <web-resource-name>Security</web-resource-name>
                    <url-pattern>/*</url-pattern>
            </web-resource-collection>
            <user-data-constraint>
                    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
            </user-data-constraint>
    </security-constraint>

当我尝试运行我的Web应用程序时,遇到了这个问题:
Unable to connect

Firefox can't establish a connection to the server at localhost:8443.

*   The site could be temporarily unavailable or too busy. Try again in a few
      moments.

*   If you are unable to load any pages, check your computer's network
      connection.

如果我注释掉我添加到web.xml文件的行,Web应用程序就可以正常工作。我的日志文件位于/var/lib/tomcat6/logs中,没有显示任何内容。我无法确定这是否是我的密钥库文件、server.xml文件或web.xml文件的问题…… 需要任何帮助。
我在Ubuntu上使用Tomcat 6。
编辑:我将我的server.xml更改为
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" 
           keystoreFile="/etc/tomcat6/keystore" 
           keystorePass="tomcat" />

如果按照Tomcat教程建议,它被自动配置为"APR",可能会出现问题(我不确定我是否有这个配置,也不知道如何找到它)。然而,我仍然遇到了相同的错误。


现在先不要添加安全约束。首先让SSL部分正常工作。 - Pascal Thivent
我移除了安全约束,但没有任何变化,但在SSL工作之前,我会将其关闭。顺便说一下,这是我的整个server.xml文件的pastebin,以防有所帮助。它除了当我取消注释SSL部分时没有改变。http://pastebin.com/yVRiNHi7 - Daniel
2个回答

5

好吧,我是个傻瓜...

我以为netbeans会自动重启我的服务器,因为eclipse曾经知道哪些需要重新启动的文件已经被修改了,并且它会自动为你重启服务器。显然,netbeans没有这个功能。一旦我手动使用/etc/init.d/tomcat6脚本重新启动了服务器,一切都正常了。

无论如何,谢谢你的帮助,Pascal,你的问题让我想到了可能会遇到的其他问题。


你帮助我理解了如何在Tomcat上进行配置,谢谢 :) - ufk

1

我刚刚在Ubuntu上使用原版Tomcat测试了相同的设置,并做了以下操作:

  • 生成了keystore
  • 取消了server.xml中的SSL连接器注释,然后指向了我的keystore
  • my-webappweb.xml中添加了安全约束,以强制使用SSL

现在,在我的机器上访问https://localhost:8443/my-webapp就可以了(c)。

你是不是要使用正确的协议来访问应用程序,也就是说,使用https://(注意https中的s)?

顺便提一下,建议在非SSL连接器中设置redirectPort=8443属性,这样http://localhost:8080/my-webapp就会被重定向到https://localhost:8443/my-webapp


@Danny 我稍后会尝试使用打包版本的Tomcat。 - Pascal Thivent
没有防火墙运行。我安装的所有软件都是通过Synaptic软件包管理器安装的。我认为问题涉及到某个自动设置,这个设置基于我安装的某个不典型的软件包。我无法弄清楚那可能是什么。(顺便说一下,请查看我原始帖子底部的编辑) - Daniel
新的浏览器默认不显示协议,所以 HTTPS 让我有些困惑。感谢您的提醒。 - Richard Ayotte

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接