| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 解决JDK访问https域名证书校验失败问题 -> 正文阅读 |
|
[网络协议]解决JDK访问https域名证书校验失败问题 |
背景在Java代码里面访问https域名的url进行通信时,经常会遇到下面的一个异常:
PKI介绍公钥基础设施 PKI 《Public Key Infrastructure》, 是指使用公钥加密在网络上实现信息安全交换的设置。此设置依赖于通信参与方之间建立的信任。这种信任基于由称为证书颁发机构 (CA) 的中立且受信任的机构颁发的数字证书。 在Java的安全架构图中,如下所示: 在oracle官网,关于PKI编程,也有详细的介绍:https://docs.oracle.com/javase/10/security/java-pki-programmers-guide.htm#JSSEC-GUID-650D0D53-B617-4055-AFD3-AF5C2629CBBF 在Java里面PKI相关的操作类和接口称做:Java Certification Path API,用于处理认证路径,也称为认证链。如果证书路径满足某些验证规则,它可以用于安全地建立公钥到主题的映射,里面包括特定于算法的类,用于根据 PKIX 标准构建和验证 X.509 认证路径。 PKIX 标准由 IETF PKIX 工作组开发,如果验证失败,就会出现上面的我们熟悉的那个异常:
X.509科普X.509是密码学里公钥证书的格式标准。X.509证书已应用在包括TLS/SSL在内的众多网络协议里,同时它也用在很多非在线应用场景里,比如电子签名服务。X.509证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构CA的签名,也可以是自签名) X.509还附带了证书吊销列表和用于从最终对证书进行签名的证书签发机构直到最终可信点为止的证书合法性验证算法。X.509是ITU-T标准化部门基于他们之前的ASN.1定义的一套证书标准 问题原因到这里想必大家已经能够知道上述异常的出现的原因了,大多数时候,都是因为我们的客户端JDK里面,没有添加服务端签发的数字证书(涵盖证书,公钥等信息)而造成的,知道了原因之后,解决方法也很简单,使用JDK自带的一些证书管理工具,来把我们服务侧签发的证书加入JDK自带的cacerts信任库即可。 解决方法首先,我们需要获取到服务端的证书文件,这个一般是xxx.pem或者xxx.cer文件,然后通过JDK自带的keytool工具来管理证书: 查看证书:
查看证书内容:
添加证书:
注意:changeit是默认的密码 删除证书:
通过上面几个命令,来把数字证书加入JDK信任库就可以解决证书校验失败问题。 总结https提供了一种更加安全的通信协议,实际开发中会经常遇到在编程代码中操作访问https url相关的网络编程,这样不可避免的就会遇到文章中描述的问题,通过本文的学习,相信可以做到知其然并知其所以然了,关于https协议安全通信是一个复杂的话题,里面涉及知识颇多,后面有空再总结一篇https原理相关的文章 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:25:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |