Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141731
  • 博文数量: 39
  • 博客积分: 993
  • 博客等级: 准尉
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-14 16:36
个人简介

https://github.com/dengdaiyemanren

文章分类

全部博文(39)

文章存档

2015年(1)

2012年(3)

2011年(27)

2010年(4)

2008年(4)

分类: 网络与安全

2011-01-13 14:52:45

步骤:
一、建立自己的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 -config openssl.cnf
(注意需要有openssl.cnf文件,apache的cnf/目录下有此文件)

3.生成x509证书,可以自已签名,用来做根证书;也可用其它证书来签名,生成根证书可以信任的证书.
openssl x509 -req -in root/root-req.csr -out root/root-cert.pem -signkey root/root-key.pem -days 365

4.根据root证书生成jks文件
keytool -import -v -trustcacerts -storepass password -alias root -file root/root-cert.pem -keystore root/root.jks

二.建立服务器端证书
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 -config openssl.cnf

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

三.建立客户端证书
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 -config openssl.cnf

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  

四.tomcat配置情况:

server.xml
  1. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
  2.                maxThreads="150" scheme="https" secure="true"
  3.                clientAuth="true"
  4.                keystoreFile="c:/data/server/server.p12"
  5.                sslProtocol="TLS"
  6.                keystoreType="PKCS12"
  7.                keystorePass="123456"
  8.                truststoreFile="c:/data/root/root.jks"
  9.                truststoreType="JKS"
  10.                truststorePass="password"
  11.     />

五.获取客户端的证书编号
index.jsp
  1. <%
  2.  java.security.cert.X509Certificate[] ca=(java.security.cert.X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate");
  3.  if(ca==null)
  4.  {
  5.         System.out.println("No cert info!");
  6.   } else
  7.  {
  8.           String serial=ca[0].getSerialNumber().toString();
  9.           System.out.println(serial);
  10.           String DN=ca[0].getSubjectDN().toString();
  11.           System.out.println(DN);
  12.       }
  13.  %>
六.效果:

则弹出可用的证书供选择。



阅读(543) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~