Tomcat6配置使用SSL双向认证

,在用户登录时除了效验用户名密码,还需验证其数字证书。

相关资源:IBM developerWroks中国中的tomcat4中使用SSLjavaeye中的Acegi X.509双向认证 tomcat4中使用SSL中的异同:jdk1.4中已经包含JSSE

AcegiX.509双向认证中的异同:tomcat6配置文件多了SSLEnabled="true"属性。

1.生成CA证书。目前不使用第三方权威机构的CA来认证,自己充当CA的角色。

1.创建私钥 C:/OpenSSL/apps>openssl genrsa -out root/root-key.pem 1024

2.创建证书请求 C:/OpenSSL/apps>openssl req -new -out root/root-req.csr -key root/root-key.pem

3.自签署证书 C:/OpenSSL/apps>openssl x509 -req -in root/root-req.csr -out root/root-cert.pem -signkey

root/root-key.pem -days 3650

4.将证书导出成浏览器支持的.p12格式 C:/OpenSSL/apps>openssl pkcs12 -export -clcerts -in root/root-cert.pem -inkey

root/root-key.pem -out root/root.p12

 

2.生成server证书。

1.创建私钥 C:/OpenSSL/apps>openssl genrsa -out server/server-key.pem 1024

2.创建证书请求 C:/OpenSSL/apps>openssl req -new -out server/server-req.csr -key server/server-key.pem

3.自签署证书 C:/OpenSSL/apps>openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey

server/server-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650

4.将证书导出成浏览器支持的.p12格式 C:/OpenSSL/apps>openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey

server/server-key.pem -out server/server.p12

 

3.生成client证书。

1.创建私钥 C:/OpenSSL/apps>openssl genrsa -out client/client-key.pem 1024

2.创建证书请求 C:/OpenSSL/apps>openssl req -new -out client/client-req.csr -key client/client-key.pem

3.自签署证书 C:/OpenSSL/apps>openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey

client/client-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650

4.将证书导出成浏览器支持的.p12格式 C:/OpenSSL/apps>openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey

client/client-key.pem -out client/client.p12

 

4.根据root证书生成jks文件

C:/OpenSSL/apps/root>keytool -import -v -trustcacerts -storepass password -alias root -file root-cert.pem

-keystore root.jks

 

5.配置tomcat ssl,修改conf/server.xmltomcat6中多了SSLEnabled="true"属性。

keystorefile, truststorefile设置为你正确的相关路径

xml 代码

 

<connector secure="true" scheme="https" protocol="HTTP/1.1" port="8443"      

sslenabled="true" maxhttpheadersize="8192" maxthreads="150"      

minsparethreads="25" maxsparethreads="75" enablelookups="false"      

disableuploadtimeout="true" acceptcount="100" sslprotocol="TLS"      

clientauth="true" keystorefile="d:/path/bin/x509/server.p12"      

keystoretype="PKCS12" keystorepass="123456" truststorefile="d:/path/bin/x509/root.jks"    

truststoretype="JKS" truststorepass="123456"/>    

 

6.root.p12client.p12分别导入到IE中去(打开IE->;Internet选项->内容->证书)。

root.p12导入至受信任的根证书颁发机构client.p12导入至个人

7.访问你的应用http://ip:8443,如果配置正确的话会出现请求你数字证书的对话框。

8.jsp中取得符合x.509格式的证书

java 代码

 

<%      

        //获得certificate chain     

        X509Certificate[] ca=(X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate");     

      if(ca==null)     

      {     

        out.println("No cert info!");     

      } else {     

        String  serial=ca[0].getSerialNumber().toString();     

        String DN=ca[0].getSubjectDN().toString();       

      }     

      %>  

 

http://grandboy.javaeye.com/blog/179410

KeytoolOpenSSL生成和签发数字证书

转自: http://zhouzhk.javaeye.com/blog/136943

生成server端证书

1)生成KeyPair生成密钥对

keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass 123456  -storepass 123456 -keystore server_keystore

输入common name时,要和服务器的域名保持一致。

2)生成证书签名请求

keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file tomcat_server.csr -keypass 123456 -storepass 123456 -keystore server_keystore

3)CA私钥进行签名,也可以到权威机构申请CA签名。

   openssl ca -in tomcat_server.csr -out tomcat_server.crt -cert ca.crt -keyfile ca.key -notext -config openssl.cnf

  其中-notext表示不要把证书文件的明文内容输出到文件中去,否则在后面用keytool导入到keystore时会出错。

4)导入信任的CA根证书到keystore

   keytool -import -v -trustcacerts  -alias my_ca_root -file ca.crt -storepass 123456 -keystore server_keystore

5)CA签名后的server端证书导入keystore

keytool -import -v -alias tomcat_server -file tomcat_server.crt -storepass 123456 -keystore server_keystore

6)查看server端证书

   keytool -list -v -keystore server_keystore 

可以看到tomcat_server的证书链长度是2

 

生成client端证书

1)生成客户端CSR

   openssl genrsa -des3 -out tomcat_client.key 1024

openssl req -new -key tomcat_client.key -out tomcat_client.csr -config openssl.cnf

2)CA私钥进行签名,也可以到权威机构申请CA签名

openssl ca -in tomcat_client.csr -out tomcat_client.crt -cert ca.crt -keyfile ca.key -notext -config openssl.cnf

3)生成PKCS12格式证书

openssl pkcs12 -export -inkey tomcat_client.key -in tomcat_client.crt -out  tomcat_client.p12

4)使用Keytool列出pkcs12证书的内容:

   keytool -rfc -list -keystore tomcat_client.p12 -storetype pkcs12

 

--------------------------------

keytool可以导出.p12后缀名的个人证书吗?

好像不行,keytool产生的证书是JKS编码的

除了keytool,还有很多方法可以完成对keystore里面证书的操作!

比如

1、用KeyTool结合pkeytool导出私钥和证书,然后用openssl将私钥和证书合并成p12格式,具体命令请参考pkeytoolopenssl帮助

2、图形工具portecle,直接导出p12格式

3KeyTool GUI 1.6,图形界面

4keystore explorer,需要付费

etc.

 

--------------------------------------------

如何用TomcatOpenssl构建HTTPS双向认证环境(HTTPS客户端认证)

 

文章出处:http://www.diybl.com/course/4_webprogram/jsp/jsp_js/200855/113649.html

 

--------------------------------------------

[OpenSSL示例]HTTPS中间人攻击

http://hi.baidu.com/52hack/blog/item/b27f52af5d3881f3fbed50d9.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值