Eclipse WTP:如何在Tomcat上启用SSL?

46
Eclipse WTP会创建自己的server.xml文件,该文件位于某个文件夹中,以配置您正在运行Web项目的Tomcat实例。如果您在服务器列表中双击服务器,则会出现一个漂亮的屏幕,使得配置 server.xml 文件的某些方面变得简单。
如何配置新连接以允许在端口8443上进行SSL连接?每当我手动编辑server.xml文件时,Eclipse都会使用配置页面中存储的设置覆盖我的更改,似乎没有办法从Eclipse提供的界面中添加新连接器。这可行吗?以下是我想添加的连接器:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    keystoreFile="D:\apache-tomcat-6.0.18\keystore\key.ssl" keystorePass="pass"
    clientAuth="false" sslProtocol="TLS" />

我从来没有运气好过,使用嵌入式Tomcat总是有奇怪的问题。直接在外部运行Tomcat实例要容易得多。 - matt b
4个回答

75
如果您已经创建了服务器,可以编辑它所复制的server.xml模板。如果您使用项目资源管理器,则在其他项目->服务器->Tomcat服务器名称->server.xml下找到。

5
太TM棒了。我花了太长时间盯着server.xml看,心里想:“我发誓我编辑过那个连接器,怎么回事?” - Matt Ball
只是给像我这样的新手提供额外的帮助 :p您还需要指定密钥库,如下所示:可以使用以下命令生成密钥库:keytool -genkey -alias mytomcatkey -keyalg RSA -keystore c:\mytomcatkeystore - Ahmad Nadeem
这个路径还存在吗?我也遇到了同样的问题。 - user9892866

32

以下是使其正常工作的步骤:
创建密钥库:

keytool -genkey -alias tomcat -keypass mypassword -keystore keystore.jks -storepass mypassword -keyalg RSA -validity 360 -keysize 2048

按照提示填写信息并完成后续步骤。
然后它会将一个keystore.key文件保存在您的主目录中。
要使其在eclipse中起作用:

<Connector port="8443" SSLEnabled="true"
        maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
        enableLookups="true" disableUploadTimeout="true"
        acceptCount="100" debug="0" scheme="https" secure="true"
        clientAuth="false" sslProtocol="TLSv1"
        keystoreFile="/home/myUsername/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf/keystore.key"
        keystorePass="mypassword" />

对于keystoreFile来说,您必须完全正确才能使其正常工作。 当Eclipse使用工作区元数据位置来运行Tomcat时,它会将一些文件复制到类似上面的路径中。 在OS X上,这将是:

/Users/<username>/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf/keystore.key
希望能帮到您。
更多参考:SSL/TLS配置HOW-TO在Apache Tomcat 7中:https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html

非常感谢您的工作。在Mac OSX上,如果您在主文件夹中生成密钥,则位置将类似于/Users/<username>/keystore.jks... - maths

4
我已经理解了。当你在服务器视图中右键单击并选择“新建>服务器”以创建一个新服务器时,Eclipse WTP会使用tomcat安装中的现有server.xml文件,并使用原始文件作为模板为你的项目创建新的server.xml文件。
如果在创建新服务器之前使用所需的配置修改原始server.xml,则会保留这些设置。
可惜Eclipse不允许事后添加这些类型的配置。

它确实可以,参见yincrash的答案。 - pablosaraiva

1
假设您已经拥有此帖子中提到的证书和密钥库,我找到了以下解决方案,可以配置Eclipse与启用SSL的服务器进行通信。当使用Tomcat配置工具时,您必须在“Java”选项卡、“Java Options”文本框中添加以下条目:
-Dbusinessobjects.orb.oci.protocol=ssl
-Dcertdir=c:\ssl
-DtrustedCert=c:\ssl\cacert.der
-DsslCert=c:\ssl\servercert.der
-DsslKey=c:\ssl\server.key
-Dpassphrase=c:\ssl\passphrase.txt

同样地,在Eclipse中,右键单击项目浏览器窗口中的服务器名称,点击Profile As | Profile Configurations | Arguments,然后将上述相同选项追加到"VM Arguments:"文本框中。这样就可以针对启用SSL的服务器运行和调试程序了。

Eclipse "VM Arguments:"文本框


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