2009年4月14日星期二

为Tomcat添加https

其实这个主题网上一搜可以找到很多答案,但是我看过后总是觉得没有表达清楚。

这个过程其实很简单,步骤如下:
1.生成自己的证书
先运行命令:

%Java_home%\bin\keytool -genkey -alias tomcat -keyalg RSA
上面的命令默认生成一个.keystore文件在用户主目录下,也可以在后面加上-keystore filepath参数,由filepath来指定.keystore文件的位置。
运行命令时会需要输入很多信息,根据提示输入即可,需要注意的是密码部分,
上面的过程中最后需要你输入一个密码,要保证和最先输入的一样,否则无法使用,另外需要在Tomcat的配置文件server.xml中配置你的密码,这个见第二部分。
这样生成的证书是没有经过认证机构sign的,网上有提供免费试用的certificate的站点,如Rapidssl(http://www.rapidssl.com/index.htm),它可以认证你的证书,这样浏览器就不会弹出证书不可信的警告了。至于怎么让它认证自己的证书可以参照认证机构的向导。
2.为Tomcat添加https
需要将tomcat目录下的conf目录下的server.xml中的定义https连接的connector启用即可。如下:
<-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<!--
<Connector
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"/>
-->
如果你的.keystore文件在不在你的用户主目录中,你需要加上属性
keystoreFile="yourpath/.keystore"
另外你还需要制定生成.keystore文件时所用的密码,如下:
keystorePass="yourpass"
所以配置好的<Connector>应该像这样:
<-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->

<Connector
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
keystoreFile="yourpath/.keystore" keystorePass="yourpass"
clientAuth="false" sslProtocol="TLS"/>

OK,大功告成,启动Tomcat,就可以用https连接了,注意的是url格式变了,不再是http://localhost:8080/而是https://localhost:8443/,另外要指明的是使用https对客户端和服务器端来说都是透明的,浏览器和web服务器已经把加密解密的过程完成了,看起来和使用普通的http一样,只是url变了而已。
参考Tomcat的官方文档的SSL配置:http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
--
Be yourself.

0 评论: