关于https的双向认证详解tomcat+java实现交叉验证

本文深入解析HTTPS双向认证,介绍其在银行网银、金融支付等高安全场景的应用。通过Tomcat和Java,详细阐述了证书链、TLS认证过程,并提供了Java客户端和服务器端的示例代码,帮助理解并实现HTTPS双向认证。
摘要由CSDN通过智能技术生成

关于https的双向认证详解

原doc文档导出pdf

https://github.com/enderwsp/share4u/raw/master/%E5%85%B3%E4%BA%8Ehttps%E7%9A%84%E5%8F%8C%E5%90%91%E8%AE%A4%E8%AF%81%E8%AF%A6%E8%A7%A3tomcat%2Bjava%E5%AE%9E%E7%8E%B0%E4%BA%A4%E5%8F%89%E9%AA%8C%E8%AF%81.pdf

基本描述

Https是在基本的http通讯协议上增加的tls安全协议,tls安全协议需要ssl安全证书作为加解密要素,双向认证是指在客户端确认服务的是否可信任的单向认证基础上增加服务端的对客户端的认证。

主要内容

https通信协议

是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL

参见 百度https百科

tls安全协议

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密

参见 百度SSL

 

ssl安全证书

SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能

 

参见 百度ssl证书

证书链

证书链的描述,证书链的可信传递机制,以及根证书的来源和查看方式

 

证书格式

常见证书格式和转换

https://blog.csdn.net/justinjing0612/article/details/7770301

tls认证过程

SSL认证是指客户端到服务器端的认证。主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准,即所谓的单向认证

参见 百度ssl认证

其他内容

HTTPS实战之单向验证和双向验证

https://www.jianshu.com/p/119c4dbb7225

 

浅谈HTTPS(SSL/TLS)原理

https://www.jianshu.com/p/41f7ae43e37b

      

HTTPS通信中的身份认证机制

 

https://blog.csdn.net/bravegogo/article/details/60766773

 

SSL双向认证以及证书的制作和使用-https+客户端身份验证

https://blog.csdn.net/soarheaven/article/details/78784848

 

X - Certificate and Key management证书管理工具

https://hohnstaedt.de/xca/index.php

 

ssl证书相当于安全的钥匙,如果私钥外泄被恶意盗用,会存在安全问题

双向认证的常用场景

银行网银U盾使用

专业版登录支持U盾认证多重认证

资金动账类交易U盾再次认证确认客户端身份

金融支付工具安全数字证书

支付宝数字证书app下载安装可以提高app支付安全,支付额度

常用pc安装数字证书免除重复的其他安全校验

其他对通信安全有较高要求的都可以应用此https双向认证

主要成本在于向具有CA资质的机构申请有效的证书,非CA机构的自制根证书及证书链管理需要自行负责

https应用的使用示例

工具版本说明

本地操作系统版本:win10

本地tomcat版本9

本地java版本1.8

证书管理工具xca 2.1.2

Keytool界面工具1.6

http://enkj.jb51.net:81/201703/tools/keytool_jb51.rar

 

 

前提概要

客户端和服务端角色根据通信请求来确定,客户端和服务端需要保持支持一致的TLS安全协议版本

单向认证说明

 

单向认证首先需要申请制作证书链

 

 

 

对于客户端请求服务端,比较常见的客户端是指浏览网页使用的浏览器(chrome,IE,firefox等)以及移动客户端(ios或android app),服务端一般指客户端请求目标服务的服务提供者

 

双向认证Java的https客户端请求

Keystool工具使用

请参考网络使用说明

依照java的keytool命令界面化工具,生成java专有的jks格式容器文件

依赖包

<dependency>

            <groupId>org.apache.commons</groupId>

            <artifactId>commons-io</artifactId>

            <version>1.3.2</version>

        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->

        <dependency>

            <groupId>org.apache.httpcomponents</groupId>

            <artifactId>httpclient</artifactId>

            <version>4.5.9</version>

        </dependency>

 

Java client demo

package com.web.ssl.twoway.ssltwoway;



import com.web.ssl.twoway.ssltwoway.Constants;

import org.apache.commons.io.IOUtils;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值