码迷,mamicode.com
首页 > Web开发 > 详细

ssl/https双向验证的配置与证书库的生成

时间:2015-03-14 13:53:53      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

1.SSL认证

不需要特别配置,相关证书库生成看https认证中的相关部分

2.HTTPS认证

一、基本概念

1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 
2.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址 
如果只是加密,我感觉单向就行了。 
如果想要用系统的人没有证书就访问不了系统的话,就采用双向

二、服务器配置:

打开Tomcat 根目录下的 /conf/server.xml 修改server.xml

客户端证书注册名称必须与域名一致,否则无法验证。

例如访问https://127.0.0.1:8443/Test必须使用名称为127.0.0.1的证书,

访问https://hepengfei:8443/Test必须使用名称为hepengfei的证书,

本机中域名解析修改文件是C:/WINDOWS/system32/drivers/etc/hosts

端口号改为8443,为自定义端口    访问https://127.0.0.1:8443/Test

端口号改为443,则为默认端口    访问https://127.0.0.1/Test

clientAuth="true"为双向认证      clientAuth="false"为单向认证 

使用密钥库文件和密码(自己使用的证书)  

信任密钥库文件和密码(含有客户端证书或其根证书)

<="" 1.1? sslenabled="true">maxThreads="150" scheme="https" secure="true"

clientAuth="true" sslProtocol="TLS"

keystoreFile="C:/Java/Tomcat/conf/keystore/server" keystorePass="080302"

truststoreFile="C:/Java/Tomcat/conf/keystoreserver/trust" truststorePass="080302" 

/>

三、证书的生成如下:
执行命令前先保证文件夹存在。例如:在c盘建立keystore文件夹
第一步:为服务器生成证书 

确定域名:本机中域名解析修改文件是C:/WINDOWS/system32/drivers/etc/hosts
使用keytool 为 Tomcat 生成证书和密钥库,假定目标机器的域名是“ hepengfei ”, keystore 文件存放在“ C:/keystoreserver ”,口令为“ 080302 ”,命令如下: 
keytool -genkey -v -keystore C:/keystoreserver -alias serverkey -keyalg RSA -validity 3650 -dname "CN=hepengfei,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 080302 -keypass 080302   

生成server.cer安装在客户端解决服务器信任问题:

keytool -export -keystore C:/keystoreserver -alias serverkey -file c:/keystoreserver.cer -storepass 080302   

第二步:为客户端生成证书 

(注意:个人证书的生成和使用比较特别,是分开的。先生成p12文件,然后导出cer文件,再将cer文件导入默认类型的keystore(JKS)文件)
这一步是为浏览器生成证书,以便让服务器来验证它。为了能将证书顺利导入至IE 和 Firefox ,证书格式应该是 PKCS12 ,因此,使用如下命令生成: 
keytool -genkey -v -keystore C:/keystoreuser.p12 -alias MyPC -keyalg RSA -storetype PKCS12 -validity 3650 -dname "CN=MyPC,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 080302 -keypass 080302   

服务器要信任客户端证书,就必须把客户端证书添加为服务器的信任认证。由于不能直接将 PKCS12 格式的证书库导入,我们必须先把客户端证书导出为一个单独的 CER 文件,使用如下命令: 

keytool -export -alias MyPC -keystore C:/keystoreuser.p12 -storetype PKCS12 -storepass 080302 -rfc -file C:/keystoreuser.cer   

接着,将C:user.cer导入到服务器的证书库,添加为一个信任证书: 

keytool -import -v -file C:/keystoreuser.cer -keystore c:/keystoreservertrust -alias user -storepass 080302  

 

输入“是”确认完成。
通过list 命令查看: 
keytool -list -keystore c:/keystore/servertrust -storepass 080302   

 

也可以考虑将服务器证书和服务器信任证书放到一个密钥库中

第四步:配置Tomcat 服务器 

打开Tomcat 根目录下的 /conf/server.xml ,修改如下: 

<="" 1.1? sslenabled="true">maxThreads="150" scheme="https" secure="true"

clientAuth="true" sslProtocol="TLS"

keystoreFile="C:/Java/Tomcat/conf/keystoreserver" keystorePass="080302"

truststoreFile="C:/JavaTomcat/conf/keystore/servertrust" truststorePass="080302" 

/>

详细解释见本节最前面介绍。

安装个人证书user.p12(密码:080302)和服务器证书server.cer
到这里启动tomcat,输入 https://hepengfei:8443/Test,就OK了。 

如果数字证书注册名称不是127.0.0.1,而是对应的一个hepengfei,

使用ip访问(https://127.0.0.1:8443/Test)可以进入选择数字证书界面(仿真格式): 

选择数字证书

    名称     颁发商

    MyPC     MyPC

    详细信息  查看证书

        确定   取消

注意点:

keytool -list -v -keystore user

使用的库要privateKeyEntry

信任的库要trustedCertEntry

ConvertKeystoreType.java用于转换密钥库类型(PKCS12与JKS格式证书库转换工具)

ssl使用其中四个密钥库

https使用server、servertrust、user.p12(安装到本地计算机)、server.cer四个

ssl/https双向验证的配置与证书库的生成

标签:

原文地址:http://blog.csdn.net/hepfei90/article/details/44258847

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!