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

时间:2010-04-12 03:54:58

标签: ssl ubuntu ssl-certificate tomcat6

我主要关注此页:

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>

当我尝试运行我的webapp时,我遇到了这个:

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文件中的行注释掉,那么webapp工作正常。我在/ 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”存在问题(不确定我是否有这个或如何找出我是否这样做)。但是我仍然遇到同样的错误。

2 个答案:

答案 0 :(得分:5)

好吧,我是个白痴......

我的印象是netbeans正在为我重新启动我的服务器,因为eclipse曾经知道什么时候需要重启的文件被更改,它会为你重新启动服务器。显然netbeans没有这个功能。一旦我使用/etc/init.d/tomcat6中的脚本手动重启服务器,那么一切正常..

感谢您的帮助,无论如何,您的问题可以帮助我思考我可能遇到的其他问题。

答案 1 :(得分:1)

我刚刚在Ubuntu上使用vanilla Tomcat测试了相同的设置,并且:

  • 我生成了一个密钥库
  • 我取消注释server.xml中的SSL连接器并指向我的密钥库
  • 我在my-webapp的web.xml中添加了安全约束以强制使用SSL

访问https://localhost:8443/my-webapp只能在我的机器上运行(c)。

您是否使用正确的协议访问该应用程序,即https://(请注意https中的 s )?

顺便说一句,我建议在非SSL连接器中设置redirectPort=8443属性,以便将http://localhost:8080/my-webapp重定向到https://localhost:8443/my-webapp