java应用tomcat实现https ssl安全连接的方法

时间:2022-01-04 13:51:11

 

在这开始之前,我们得先了解一下什么是https。

 

https (Secure Hypertext Transfer Protocol) = 安全超文本传输协议

 

https的特点是:

1.数据加密(SSL) = Secure Socket Layer

2.身份认证

当你的项目需要考虑安全性的时候,部分模块可以用到https。当然这些都得到CA注册,要钱钱的哦。

 

这里我想给大家介绍个不收费的。用JDK的keytool工具生成证书、然后在Tomcat下配置server.xml,就可以实现https,对传输的双向数据进行加密和解密。

 

 双向的加密解密过程:

java应用tomcat实现https ssl安全连接的方法

 

用Tomcat来配置SSL主要有下面这么两大步骤:

 

一、生成证书

 

1.在命令行下执行:

 

%Java_home%/bin/keytool -genkey -alias tomcat -keyalg RSA

 

在此命令中,keytool是JDK自带的产生证书的工具。把RSA运算法则作为主要安全运算法则,这保证了与其它服务器和组件的兼容性。

这个命令会在用户的home directory产生一个叫做" .keystore " 的新文件。在执行后,你首先被要求出示keystore密码。Tomcat使用的默认密码是" changeit "(全都是小写字母),如果你愿意,你可以指定你自己的密码。你还需要在server.xml配置文件里指定自己的密码,这在以后会有描述。

 

如果一切顺利,你现在就拥有了一个可以被你的服务器使用的有认证书的keystore文件。

 

二、配置tomcat

 

第二个大步骤是把secure socket配置在$CATALINA_HOME/conf/server.xml文件里。$CATALINA_HOME代表安装Tomcat的目录。一个例子是SSL连接器的元素被包括在和Tomcat一起安装的缺省server.xml文件里。它看起来象是这样:

 

$CATALINA_HOME/conf/server.xml

 

 

Connector元素本身,其默认形式是被注释掉的(commented out),所以需要把它周围的注释标志删除掉。然后,可以根据需要客户化(自己设置)特定的属性。一般需要增加一下keystoreFile和keystorePass两个属性,指定你存放证书的路径(如:keystoreFile="D:/shu/.keystore")和刚才设置的密码(如:keystorePass="123456")。

 

在完成这些配置更改后,必须象重新启动Tomcat,然后你就可以通过SSL访问Tomcat支持的任何web应用程序。只不过指令需要像下面这样:https://localhost:8888

 

更多详细资料,参考官方文档:http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html

http://www.javaeedev.com/blog/article.jspx?articleId=ff808081198fb524011993a9bb7a029a