Tomcat6配置SSL的方法
来源:互联网 发布:mac唇膏专柜 编辑:程序博客网 时间:2024/05/02 05:03
因为做项目测试的时候,用到了https,所以现在需要在tomcat中配置SSL。
tomcat6配置双向认证
1、生成服务器端证书
- keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650
- <br>2、生成客户端证书 <br>
- keytool -genkey -keyalg RSA -dname "cn=sango,ou=sango,o=none,l=china,st=beijing,c=cn" -alias custom -storetype PKCS12 -keypass password -keystore custom.p12 -storepass password -validity 3650
客户端的CN可以是任意值。
3、由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。由于不能直接将PKCS12格式的证书库导入,我们必须先把客户端证书导出为一个单独的CER文件,使用如下命令,先把客户端证书导出为一个单独的cer文件:
- keytool -export -alias custom -file custom.cer -keystore custom.p12 -storepass password -storetype PKCS12 -rfc
然后,添加客户端证书到服务器中(将已签名数字证书导入密钥库)
- keytool -import -v -alias custom -file custom.cer -keystore server.jks -storepass password
4、查看证书内容
- keytool -list -v -keystore server.jks -storepass password
5、配置tomcat service.xml文件
- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
- maxThreads="150" scheme="https" secure="true"
- clientAuth="true" sslProtocol="TLS"
- keystoreFile="D:/server.jks" keystorePass="password"
- truststoreFile="D:/server.jks" truststorePass="password"
- />
clientAuth="true"表示双向认证
6、导入客户端证书到浏览器
双向认证需要强制验证客户端证书。双击“custom.p12”即可将证书导入至IE
7、修改应用的web.xml,使其自动启用SSL
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
tomcat6配置单向认证
1、生成服务器端证书
- keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650
2、由于是单向认证,没有必要生成客户端的证书,直接进入配置tomcat service.xml文件
- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
- maxThreads="150" scheme="https" secure="true"
- clientAuth="false" sslProtocol="TLS"
- keystoreFile="D:/server.jks" keystorePass="password"
- />
clientAuth="false"表示单向认证,同时去掉truststoreFile="D:/server.jks" truststorePass="password"这2个属性
PS:用https://localhost:8443测试,之前一直不成功,是因为配置的时候,用了eclipse启动的。之后虽然修改了server.xml文件,但是一直就是报异常,说connceted refused。后来将server删除,重新生成就可以了。
另附:双向认证的批处理文件,用记事本编辑,文件后缀改为.bat
set local_driver=%cd:~0,2%
set local_path=%cd%
keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650
keytool -genkey -keyalg RSA -dname "cn=sango,ou=sango,o=none,l=china,st=beijing,c=cn" -alias custom -storetype PKCS12 -keypass password -keystore custom.p12 -storepass password -validity 3650
keytool -export -alias custom -file custom.cer -keystore custom.p12 -storepass password -storetype PKCS12 -rfc
keytool -import -v -alias custom -file custom.cer -keystore server.jks -storepass password
keytool -list -v -keystore server.jks -storepass password
%local_driver%
cd %local_path%
pause
有一些其它的选项配置SSL协议。你可能需要增加或改变下面的属性值,取决于你开始对keystore的配置
clientAuth
如果想要Tomcat为了使用这个socket而要求所有SSL客户出示一个客户证书,置该值为true。keystoreFile
如果创建的keystore文件不在Tomcat认为的缺省位置(一个在Tomcat运行的home目录下的叫.keystore的文件),则加上该属性。可以指定一个绝对路径或依赖$CATALINA_BASE环境变量的相对路径。
keystorePass
如果使用了一个与Tomcat预期不同的keystore(和证书)密码(changeit),则加入该属性。keystoreType
如果使用了一个PKCS12 keystore,加入该属性。有效值是JKS和PKCS12。sslProtocol
socket使用的加密/解密协议。如果使用的是Sun的JVM,则不建议改变这个值。据说IBM的1.4.1版的TLS协议的实现和一些流行的浏览器不兼容。这种情况下,使用SSL。ciphers
此socket允许使用的被逗号分隔的密码列表。缺省情况下,可以使用任何可用的密码。algorithm
使用的X509算法。缺省为Sun的实现(SunX509)。对于IBM JVMS应该使用ibmX509。对于其它JVM,参考JVM文档取正确的值。truststoreFile
用来验证客户证书的TrustStore文件。truststorePass
访问TrustStore使用的密码。缺省值是keystorePass。truststoreType
如果使用一个不同于正在使用的KeyStore的TrustStore格式,加入该属性。有效值是JKS和PKCS12。
在Java中取得证书内容:
1
X509Certificate[] certChain=(X509Certificate[])request
2
.getAttribute(
"javax.servlet.request.X509Certificate"
);
3
int
len=certChain.length;
4
if
(len>
0
){
5
X509Certificate cert = (X509Certificate)certChain[
0
];
6
Principal subject = cert.getSubjectDN();
7
String certSubject = subject.getName();
8
}
- Tomcat6配置SSL的方法
- Tomcat6配置SSL的方法
- Tomcat6配置SSL的方法
- Tomcat6配置SSL的方法
- Tomcat6配置SSL的方法
- Tomcat6的SSL双项认证的配置方法
- Tomcat6.0 SSL的配置
- Tomcat6.0 SSL的配置
- tomcat6.0.1配置https,SSL的具体步骤
- tomcat6.0配置SSL
- tomcat6+SSL配置
- tomcat6配置ssl
- Tomcat6.0 SSL配置--配置https协议的站点
- tomcat6配置ssl双向认证
- windows下tomcat6.0的ssl快速配置
- Tomcat6和Tomcat7配置SSL通信的比较
- Tomcat6和Tomcat7配置SSL通信的比较
- Tomcat6.0中配置数据源的方法
- How to show Chinese character by using Perl?
- android sqlite数据库并发问题的详细描述和解决方案
- mysql引擎
- 应该知道的Linux技巧
- Hibernate操作没有主键数据表
- Tomcat6配置SSL的方法
- STM32固件库详解
- J2ME及其移植
- iOS遍历视图里的所有子视图
- 动态规划-时间规整算法
- Qt中各个widget前后位置的设置
- Linux各种包安装命令
- AIX中The largest dump device is too small的处理
- linux网络编程之 select()的模型