小编典典

终于设法解决了所有问题,所以我会回答我自己的问题。这些是我用来解决特定问题的设置/文件;

该客户端的密钥库是一个PKCS#12格式文件包含

客户端的公共证书(在这种情况下,由自签名CA签名)

客户端的私有密钥

为了生成它,我使用了OpenSSL的pkcs12命令。

openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 -name "Whatever"

提示:确保获得最新的OpenSSL,而不是版本0.9.8h,因为这似乎存在一个错误,使您无法正确生成PKCS#12文件。

当服务器明确要求客户端进行身份验证时,Java客户端将使用此PKCS#12文件向服务器提供客户端证书。有关客户端证书认证协议实际工作原理的概述,请参见TLS上的Wikipedia文章(在此处还说明了为什么需要客户端的私钥)。

所述客户机的信任是直向前JKS格式包含该文件的根或中间CA证书。这些CA证书将确定您将被允许与哪些端点进行通信,在这种情况下,它将允许您的客户端连接到提供由信任库的CA之一签名的证书的任何服务器。

要生成它,您可以使用标准的Java键盘工具,例如;

keytool -genkey -dname "cn=CLIENT" -alias truststorekey -keyalg RSA -keystore ./client-truststore.jks -keypass whatever -storepass whatever

keytool -import -keystore ./client-truststore.jks -file myca.crt -alias myca

使用此信任库,您的客户端将尝试与所有提供由标识的CA签名的证书的服务器进行完整的SSL握手myca.crt。

上面的文件仅适用于客户端。当您还想设置服务器时,服务器需要自己的密钥和信任库文件。在此网站上可以找到有关为Java客户端和服务器(使用Tomcat)设置完全正常工作的示例的出色演练。

问题/备注/提示

客户端证书身份验证只能由服务器强制执行。

(重要提示!)当服务器请求客户端证书(作为TLS握手的一部分)时,它还将在证书请求中提供受信任CA的列表。如果您希望提供的用于身份验证的客户端证书没有被这些CA之一签名,则根本不会提供(我认为这是很奇怪的行为,但是我确定是有原因的)。这是导致我出现问题的主要原因,因为另一方未正确配置其服务器以接受我的自签名客户端证书,并且我们认为问题出在我端,原因是未在请求中正确提供客户端证书。

获取Wireshark。它具有出色的SSL / HTTPS数据包分析功能,将有助于调试和发现问题。-Djavax.net.debug=ssl如果您对Java SSL调试输出不满意,它类似于但更结构化(并且可以说)更易于解释。

完全有可能使用Apache httpclient库。如果要使用httpclient,只需用等效的HTTPS替换目标URL,然后添加以下JVM参数(与其他任何客户端相同,无论您要使用哪个库通过HTTP / HTTPS发送/接收数据) :

-Djavax.net.debug=ssl

-Djavax.net.ssl.keyStoreType=pkcs12

-Djavax.net.ssl.keyStore=client.p12

-Djavax.net.ssl.keyStorePassword=whatever

-Djavax.net.ssl.trustStoreType=jks

-Djavax.net.ssl.trustStore=client-truststore.jks

-Djavax.net.ssl.trustStorePassword=whatever

2020-03-01

java https 验证客户端证书_Java HTTPS客户端证书认证相关推荐

  1. java生成数字证书_java生成数字证书方法

    Java 中生成数字证书也很简单的. 1.创建证书 Java 中的 keytool.exe (位于 JDKBin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书 ...

  2. java 12306 证书_java加载证书,访问12306的https链接

    下载12306的证书,访问12306网站,下载12306的证书 导出证书 导出完成后,导入证书 查看是否导入 java中加载证书public static void main( String[] ar ...

  3. java无法验证证书_java – 如何解决“证书无效且无法用于验证此网站的身份”错误?...

    问题是,如何解决"证书无效且无法用于验证本网站的身份"错误? 以下是详细信息: 我有一个已经正常工作的签名小程序,直到我将Java更新为8u25(1.8.0_25-b18).现在, ...

  4. java 获取 客户端端口_Java获取客户端IP、端口等信息

    Java获取客户端IP.端口等信息.txt花前月下,不如花钱"日"下.叶子的离开,是因为风的追求还是树的不挽留?干掉熊猫,我就是国宝!别和我谈理想,戒了!Java获取客户端IP.端 ...

  5. java导入cer证书_java导入cer证书

    在项目开发中,有时会遇到与SSL安全证书导入打交道的,如何把证书导入java中的cacerts证书库呢? 其实很简单,方法如下: 每一步:进入某个https://www.xxx.com开头的网站,把要 ...

  6. java类验证和装载顺序_java类加载机制,你会了吗?

    什么是类加载机制呢? java虚拟机将编译后的class文件加载到内存中,进行校验.转换.解析和初始化,到最终的使用.这就是java类加载机制: 下面就开始今天的内容: 1.类加载的生命周期:加载(L ...

  7. java usbkey数字证书_Java创建数字证书

    BouncyCastle下载: 链接:http://pan.baidu.com/s/1vrcL4    密码:6i27 package com.what21.security05; import ja ...

  8. java类验证和装载顺序_java中类的加载顺序介绍(ClassLoader)

    转自:http://blog.csdn.net/eff666/article/details/52203406 1.ClassNotFoundExcetpion 我们在开发中,经常可以遇见java.l ...

  9. java类验证和装载顺序_Java类加载机制实现流程及原理详解

    前言 我们知道,Java项目编译后会生成许许多多的class文件,class文件保存着类的描述信息.虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转化解析和初始化,最终形成可以被虚 ...

最新文章

  1. schedule和scheduleUpdate
  2. 笔记-项目风险管理-风险应对
  3. 微电网日前优化调度 。算例有代码(2)
  4. input change获取改变之前的值和改变之后的值_科技改变游戏:玩家使用氛围灯追踪角色资源变化...
  5. matlab矩阵 0,matlab zeros初始化为0矩阵
  6. UTF-8中的BOM-带还是不带?
  7. python输出回文字符串_程序,用于计算我们可以在Python中使用字符串字符进行的独特回文数...
  8. 基于Xilinx FPGA实现PCIE2.0接口
  9. 元宇宙是个啥?送4本科普好书
  10. mysql timediff 时间相减_leetcode题库-sql练习精讲系列--十、日期时间函数的使用
  11. php记住用户名功能,php使用cookie实现记住用户名和密码实现代码
  12. 新手教学--(常用的存储过程)
  13. HTML+CSS【超浪漫的表白网页代码】不会编程也能制作送给女朋友的表白网站 (1)
  14. mysql 通讯录的实现_mysql中文排序并实现仿手机通讯录
  15. 繁凡的对抗攻击论文精读(一)CVPR 2019 基于决策的高效人脸识别黑盒对抗攻击(清华朱军)
  16. N33-Week 1-向日葵
  17. 两组数据的偏差率_析数据 察得失 明对策 促提高 —记东升一中2021级月考二成绩分析会...
  18. js中函数传参的问题
  19. c语言韦达定理求方程解,高一上韦达定理,高次,多元方程解法.doc
  20. Python字符串对齐方法(ljust()、rjust()和center())详解

热门文章

  1. php弹出窗口带确定按钮,javascript弹出窗口中增加确定取消按钮
  2. 解决 双网卡 不能上外网的问题
  3. BEGAN: Boundary Equilibrium Generative Adversarial Networks阅读笔记
  4. 罗素悖论催生现代模型论的诞生
  5. 纵然放弃20万年薪也要自立门户
  6. 干货 | 如何打造企业专属A/B平台?火山引擎DataTester开放平台技术揭秘
  7. 学习STM32单片机,从菜鸟到牛人就是这样简单
  8. 【单片机】超声波测距模块
  9. cas14510-06-6|8-羟基喹啉-2-甲醛|8-Hydroxyquinoline-2-carbaldehyde黄色结晶粉末
  10. GWAS学习笔记(一):质量控制(QC)