ssl https双向验证的配置与证书库的生成
1.SSL认证
不须要特别配置,相关证书库生成看https认证中的相关部分
2.HTTPS认证
一、基本概念
1.单向认证,就是传输的数据加密过了,可是不会校验client的来源
2.双向认证,假设client浏览器没有导入client证书,是訪问不了web系统的,找不到地址
假设仅仅是加密,我感觉单向即可了。
假设想要用系统的人没有证书就訪问不了系统的话,就採用双向
二、server配置:
打开Tomcat 根文件夹下的 /conf/server.xml 改动server.xml
client证书注冊名称必须与域名一致,否则无法验证。
比如訪问https://127.0.0.1:8443/Test必须使用名称为127.0.0.1的证书,
訪问https://hepengfei:8443/Test必须使用名称为hepengfei的证书,
本机中域名解析改动文件是C:/WINDOWS/system32/drivers/etc/hosts
port号改为8443,为自己定义port 訪问https://127.0.0.1:8443/Test
port号改为443,则为默认port 訪问https://127.0.0.1/Test
clientAuth="true"为双向认证 clientAuth="false"为单向认证
使用密钥库文件和password(自己使用的证书)
信任密钥库文件和password(含有client证书或其根证书)
<Connector port="8443" protocol="HTTP/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/keystore/server/trust" truststorePass="080302"
/>
三、证书的生成例如以下:
运行命令前先保证目录存在。比如:在c盘建立keystore目录
第一步:为server生成证书
确定域名:本机中域名解析改动文件是C:/WINDOWS/system32/drivers/etc/hosts
使用keytool 为 Tomcat 生成证书和密钥库,假定目标机器的域名是“ hepengfei ”, keystore 文件存放在“ C:/keystoreserver ”,口令为“ 080302 ”,命令例如以下:
keytool -genkey -v -keystore C:/keystore/server -alias serverkey -keyalg RSA -validity 3650 -dname "CN=hepengfei,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 080302 -keypass 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安装在client解决服务器信任问题:
keytool -export -keystore C:/keystore/server -alias serverkey -file c:/keystore/server.cer -storepass 080302
keytool -export -keystore C:keystoreserver -alias serverkey -file c:keystoreserver.cer -storepass 080302
第二步:为client生成证书
(注意:个人证书的生成和使用比較特别,是分开的。先生成p12文件,然后导出cer文件,再将cer文件导入默认类型的keystore(JKS)文件)
这一步是为浏览器生成证书,以便让server来验证它。为了能将证书顺利导入至IE 和 Firefox ,证书格式应该是 PKCS12 ,因此,使用例如以下命令生成:
keytool -genkey -v -keystore C:/keystor/euser.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
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
server要信任client证书,就必须把client证书加入为server的信任认证。因为不能直接将 PKCS12 格式的证书库导入,我们必须先把client证书导出为一个单独的 CER 文件,使用例如以下命令:
keytool -export -alias MyPC -keystore C:/keystore/user.p12 -storetype PKCS12 -storepass 080302 -rfc -file C:/keystore/user.cer
keytool -export -alias MyPC -keystore C:keystoreuser.p12 -storetype PKCS12 -storepass 080302 -rfc -file C:keystoreuser.cer
接着,将C:user.cer导入到server的证书库,加入为一个信任证书:
keytool -import -v -file C:/keystore/user.cer -keystore c:/keystore/servertrust -alias user -storepass 080302
keytool -import -v -file C:keystoreuser.cer -keystore c:keystoreservertrust -alias user -storepass 080302
输入“是”确认完毕。
通过list 命令查看:
keytool -list -keystore c:/keystore/servertrust -storepass 080302
keytool -list -keystore c:keystoreservertrust -storepass 080302
也能够考虑将server证书和server信任证书放到一个密钥库中
第四步:配置Tomcat server
打开Tomcat 根文件夹下的 /conf/server.xml ,改动例如以下:
<="" 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:/JavaTomcat/conf/keystore/servertrust" truststorePass="080302"
/>
详解见本节最前面介绍。
安装个人证书user.p12(password: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双向验证的配置与证书库的生成的更多相关文章
- ssl/https双向验证的配置
1.SSL认证 不需要特别配置,相关证书库生成看https认证中的相关部分 2.HTTPS认证 一.基本概念 1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 2.双向认证,如果客户端 ...
- nginx配置https双向验证(ca机构证书+自签证书)
nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...
- linux:Nginx+https双向验证(数字安全证书)
本文由邓亚运提供 Nginx+https双向验证 说明: 要想实现nginx的https,nginx必须启用http_ssl模块:在编译时加上--with-http_ssl_module参数就ok.另 ...
- Java Https双向验证
CA: Certificate Authority,证书颁发机构 CA证书:证书颁发机构颁发的数字证书 参考资料 CA证书和TLS介绍 HTTPS原理和CA证书申请(满满的干货) 单向 / 双向认证 ...
- Https双向验证与Springboot整合测试-人来人往我只认你
1 简介 不知不觉Https相关的文章已经写了6篇了,本文将是这个专题的最后一篇,起码近期是最后一篇.前面6篇讲的全都是单向的Https验证,本文将重点介绍一下双向验证.有兴趣的同学可以了解一下之前的 ...
- iOS + Nodejs SSL/Https双向认证
移动互联网的大力发展,安全越来越重要. 什么是双向认证呢?双向认证就是client要验证server的合法性,同一时候server也要验证client的合法性. 这样两方都相互验证,提高安全性. 关于 ...
- https 双向验证
服务器配置 服务器秘钥 服务器公钥证书 ,客户端公钥证书 客户端配置 客户端秘钥+密码 服务器公钥证书 目前android验证ok,pc浏览器添加客户端秘钥证书 ,访问还是失败,待继续查找资 ...
- .net core https 双向验证
文章来自:https://www.cnblogs.com/axzxs2001/p/10070562.html 关于https双向认证的知识可先行google,这时矸接代码. 为了双向认证,我们首先得准 ...
- openfire的SSL双向认证增加android客户端证书库步骤
过程 需要新制作PKCS12证书库.CER证书.转换为androidBKS证书,最后把客户端的CER证书导入进im服务器的私钥库client.truststore,然后替换原证书. 新证书生成步骤 ...
随机推荐
- 前端project师,确定你的目标吧!无能的人才管他叫命运
导语: 你为自己定过一个不靠谱的目标,是20年前的事了吧. 长大你想干什么?你的回答是什么?现在实现了吗? 如今,你每天都坐在同一个格子间的同一个电脑前,会不会感到每天都像是在复印,感到前途是模糊的, ...
- 读书与写论文的引导书——leo鉴书60
我是专科直接考的研究生.在论文写作方面基本能够算是初级.MBA毕业那会儿要写论文,在网上找了不少这方面的书,<论文与治学>是当中之中的一个. 这本那时为应景儿卖的书,成了我之后学习与工作的 ...
- Eclipse用法和技巧十六:自动添加未实现方法2
前面一篇文章里面介绍了一种常见的自动添加未实现函数的方法.这里在顺便补充几个方法.第一个方法,看上去有点怪怪的: 步骤一:Source > Clean Up: 步骤二:选择cust ...
- java内存管理简析
作为java程序员,因为有虚拟机的自动内存管理,所以不需要再向C和C++程序员那样灾区写delete和free方法,但是java中是不是就不存在内存泄露问题呢,答案是否定的,java中一样存在内存泄漏 ...
- delphi json(CDS包含了Delta数据包)
在delphi中,数据集是最常用数据存取方式.因此,必须建立JSON与TDataSet之间的互转关系,实现数据之间通讯与转换.值得注意的是,这只是普通的TDataset与JSON之间转换,由于CDS包 ...
- jquery 下拉多选插件
Jquery多选下拉列表插件jquery multiselect功能介绍及使用 Chosen 替代样式表 Bootstrap Chosen
- Get Cordova Ready for Grunt and CoffeeScript
Cordova, Grunt and Coffee You may reference to below if you deside to work with coffee instead of Ja ...
- 重载(overload),覆盖/重写(override),隐藏(hide)
写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖/重写(override),隐藏(hide).在早期的C++书籍中,常常把重载(overload)和覆盖(override)搞错 ...
- HDU4712-----Hamming Distance------超级大水题
本文出自:http://blog.csdn.net/dr5459 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4712 题目意思: 海明距离:任意两个 ...
- Swift - 环形进度条(UIActivityIndicatorView)的用法
Swift中,除了条形进度条外,还有环形进度条,效果图如下: 1,环形进度条的基本属性 (1)Style: Large White:比较大的白色环形进度条 White:白色环形进度条 Gray:灰色环 ...