Tomcat服务器配置https双向认证,使用JDK的keytool生成证书(适用于web、安卓、IOS)
Tomcat服务器配置https双向认证,使用JDK的keytool生成证书(适用于web、安卓、IOS)
一、原理
1.HTTP:平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的(明文),因此使用HTTP协议传输隐私信息非常不安全。
2.HTTPS:为了保证隐私数据能加密传输,采用SSL/TLS协议用于对HTTP协议传输的数据进行加密,也就是HTTPS。
二、说明
1.原因:因有些情况使用到HTTPS也就是SSL证书验证以便加密信息,所以使用证书
2.选择性:自签免费,不需要金额,CA的收费每年都要给钱的,具体多少没有关注
3.途径:有多种,本人找到了两种,一个的本篇文章叙述的JDK自带的。,还有一个是OPENSSL可以做的。这里不体现出来。
4.生成环境与工具:windows.jdk1.8,tomcat8
三、步骤
1.服务器证书
1.1进入到jdk中jre目录控制台中;
可以在jre文件中按住shift+鼠标右键打开控制台命令
或者cmd命令cd C:\Program Files\Java\jre1.8.0_91\bin
1.2.通过keytool命令生成服务端证书(库)
keytool -genkey -v -alias server -keyalg RSA -keystore G:\server.keystore -validity 36500
参数说明:G:\server.keystore:将名为server.keystore的证书保存到G盘目录下
-validity 36500:证书有效期,36500表示100年,默认值是90天
server:自定义证书名称
输入密钥库口令:keystore密码(假设使用123456)此密码是隐式性的,所以看不到
您的名字与姓氏是什么:必须是TOMCAT部署主机的域名或者IP[如:123456.com 或者 1192.168.0.1](就是你将来要在浏览器中输入的访问地址),
否则浏览器会弹出警告窗口,提示用户证书与所在域不匹配。在本地做开发测试时,应填入“localhost”。
其他的可以随意填写目前没有出现什么特别情况
输入 的密钥口令:直接回车.
2.客户端证书
2.1证书格式应该是PKCS12,以及jks模式。这第一个P12证书是给浏览器和IOS客户端验证用的,而安卓不能用keystore的密码库所以要生成jks然后通过工具转换成bks。
2.1.1以下是生产安卓端所用的jks文件
keytool -genkeypair -alias client -keyalg RSA -validity 36500 -keypass 123456 -storepass 123456 -keystore G:\client.jks
其中:-keypass 123456 表示密码是123456(转换时需要用到)其他的同上。
2.1.2生成p12文件
keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore G:\mykey.p12
相关信息同上,密码这边假设是123456
3.让服务器信任客户端证书
3.1由于不能直接将PKCS12格式以及jks格式的的证书库导入,必须先把客户端证书导出为一个单独的CER文件,使用如下命令: (下面要用到客户端证书密码“123456”)
P12生成cer
keytool -export -alias mykey -keystore G:\mykey.p12 -storetype PKCS12 -storepass 123456 -rfc -file G:\mykey.cer
jks 生成 cer
keytool -export -alias client -file G:\client.cer -keystore G:\client.jks -storepass 123456
3.2将证书导入到服务器的证书库中
p12转换的cer导入到server库中
keytool -import -v -file G:\mykey.cer -keystore G:\server.keystore
将jks转换的cer导入到server库中
keytool -import -v -alias client -file G:\client.cer -keystore G:\server.keystore -storepass 123456
4.双向验证
由于是双向SSL认证,客户端也要验证服务器证书。把服务器证书导出为一个单独的CER文件提供给客户端,使用如下命令:
keytool -keystore G:\server.keystore -export -alias server -file G:\server.cer
至此证书生成完成
3.证书的使用配置
3.1浏览器服务器配置
3.1.1服务器tomcat的配置
打开Tomcat根目录下的/conf/server.xml,找到Connector port="8443"配置段,修改为如下:
clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证
keystoreFile:服务器证书文件路径
keystorePass:服务器证书密码
truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书
truststorePass:根证书密码
浏览器输入https://192.168.0.1/8443 则会报无效证书或者链接不安(证书没有配置)
3.1.2双击“mykey.p12”导入客户端证书
再次使用浏览器访问服务端,浏览器会让我们选择使用的证书。
3.1.3.导入服务器公钥证书(server.cer)
由于是自签名的证书,为避免每次都提示不安全。这里双击server.cer安装服务器证书。
注意:将证书填入到“受信任的根证书颁发机构”
再次重新访问服务器,会发现没有不安全的提示了,同时浏览器地址栏上也有个“锁”图标,表示本次会话已经通过HTTPS双向验证。
3.2IOS配置
直接把P12文件 以及sever.cer文件给IOS开发人员就行了
3.3android配置实现 Portecle1.9
需要把jks转换成bks让安卓能识别验证步骤如下:
1.双击运行portecle.jar
此处输入的密码是你生成的bks文件时所用的密码(123456)
然后生成bks文件
这个密码是你给安卓人员的 他们要解析这个证书用的随机(123456)
最后提示SUCCESSFUL 表示成功
**重点:**由于生成生成功后需要保持的,文件名一定要加.bks结尾不然就直接生成了文件了,安卓识别不了
此时把.bks文件和sever.cer文件给安卓开发人员
最后强制tomcat走https
打开Tomcat安装目录中conf/web.xml文件,在最后面加上以下内容即可
CLIENT-CERT
Client Cert Users-only Area
SSL
/*
CONFIDENTIAL
四、其他相关说明
使用工具转换多次时会报异常这是因为如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制
解决方案:去官方下载JCE无限制权限策略文件。
jdk 5: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR
jdk6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
JDK7的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK8的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt
如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件
如果安装了JDK,还要将两个jar文件也放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件。
本文本人第一次编写,是叙述相关操作,不做任何说明,只是对自己所学所用的一个总结说明分享,其他人员参考时,引起法律法规情况,请自己谨慎考虑参考,如有意外,与本人无关。
本文在此编写感谢以下相关博主链接
https://blog.csdn.net/ldld1717/article/details/78593231
https://blog.csdn.net/u011084603/article/details/76143992
https://blog.csdn.net/u013938484/article/details/80455050
感谢三位博主分享。我是在前人的基础上总结一下。在此感谢。
Tomcat服务器配置https双向认证,使用JDK的keytool生成证书(适用于web、安卓、IOS)相关推荐
- 原 用Tomcat服务器配置https双向认证过程实战
什么是https? 百度百科足够解释它:http://baike.baidu.com/view/14121.htm 工具:keytool (Windows下路径:%JAVA_HOME%/bin/key ...
- tomcat实现https双向认证配置
Tomcat实现https双向认证配置 1.生成证书库 2.jks转p12 3.证书库导出cer文件 4.证书库生成证书请求 5.对证书请求进行签名 6.例子 6.1创建证书库 6.2导出根证书 6. ...
- tomcat实现https双向认证(在win10系统使用jdk1.8自带工具keytool)
tomcat实现https双向认证(在win10系统使用jdk1.8自带工具keytool) 以下操作我在D:\shiro-cas-ssl进行操作 使用win+R运行certmgr.msc可以查看证书 ...
- 【ssl认证、证书】SSL双向认证java实战、keytool创建证书
文章目录 概述 keytool示例 参考 相关文章: //-----------Java SSL begin---------------------- [ssl认证.证书]SSL双向认证和SSL单向 ...
- Tomcat下HTTPS双向认证配置以及客户端调用案例
1:生成服务器端的keystore和truststore文件 (1)以jks格式生成服务器端包含Public key和Private Key的keystore文件 keytool -genkey -a ...
- SSL--用Tomcat服务器配置https双向认证过程实战
http://blog.csdn.net/szzt_lingpeng/article/details/51248126
- https双向认证访问管理后台,采用USBKEY进行系统访问的身份鉴别,KEY的证书长度大于128位,使用USBKEY登录
最近项目需求,需要实现用USBKEY识别用户登录,采用https双向认证访问管理后台管理界面,期间碰到过一些小问题,写出来给大家参考下. 1:前期准备工作 USBKEY 硬件:我买的是飞天诚信 epa ...
- https双向认证訪问管理后台,採用USBKEY进行系统訪问的身份鉴别,KEY的证书长度大于128位,使用USBKEY登录...
近期项目需求,须要实现用USBKEY识别用户登录,採用https双向认证訪问管理后台管理界面,期间碰到过一些小问题,写出来给大家參考下. 1:前期准备工作 USBKEY 硬件:我买的是飞天诚信 epa ...
- kubernetes https双向认证-----ca认证
为什么写这个呢? 在没有了解k8s认证的时候干过一件蠢事,公司项目是通过bearer token进行权限认证的,当时一直在纠结这个token是哪儿来的,然后各种查询secret对比是否一样,最后找到了 ...
最新文章
- (转载)动态SLAM系统:VDO-SLAM!
- 【C 语言】二级指针案例 ( 字符串切割 | 返回 自定义二级指针 作为结果 | 每个 一级指针 指向不同大小内存 | 精准分配每个 一级指针 指向的内存大小 )
- 我的Android进阶之旅------gt;Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed....
- android 判断滑动方向,H5触摸事件判断滑动方向
- 逐步优化求解最大子序列和
- HALCON示例程序check_bottle_crate.hdev啤酒箱内酒瓶数检测
- vue项目 一行js代码搞定点击图片放大缩小
- 【华为云技术分享】漫谈LiteOS-端云互通组件-MQTT开发指南(上)
- 树莓派3B 开启串口
- java与spss交互_典型相关分析及其适用范围和spss操作(转)
- 支付分账如何助力B2B大宗商品交易?
- PHP file_get_contents函数详解
- 抖音、快手、B站的广告投放原理
- python怎么返回上一步操作_一步一步教你如何用python操作mysql
- 5分钟读懂UML类图
- rand()函数详解
- C# WPF 建立无边框(标题栏)的登录窗口
- java map key是否存在_java如何判断map集合中是否存在key?
- IOS实用功能-陀螺仪
- Unity中根据设备名称获取串口号
热门文章
- odbc建oracle dsn,Linux平台配置Oracle ODBC DSN的方法
- MIPI RAW和YUV常见图像格式的解析、格式转换和看图软件
- 使用ip小魔棒让外部网络访问内网中的资源
- 购买计算机如何选择CPU,怎么选购笔记本电脑CPU 选购笔记本电脑CPU方法【详解】...
- Arduino Mixly入门到精通教程
- STN向城域云网演进浅析
- 【今日CV 计算机视觉论文速览 第101期】Wed, 17 Apr 2019
- ArcGIS engine中Display类库——Display(一)
- [散分] 眼见为实?_眼见为实
- 千里眼-智行千里,眼见为实 源码分享