Java如何安装https证书

news2025/1/17 3:55:41

Java为什么需要证书?

出于安全的考虑,很多网站都使用https 协议,而要访问一个https 的站点则需要一个证书文件,这些证书文件由CA (Certificate Authority) 颁布, 各站点将这些认证过的证书放在各自的服务器上, 终端用户使用浏览器访问这些站点的时候,浏览器端安装了这些证书就可以和服务器进行安全的沟通了。
以上机制实现原理是: 数字证书是权威认证机构认证的站点的公钥, 站点把公钥给用户, 自己拥有私钥,通过公私钥的机制进行加密传输。
关于公私钥,数字证书可以参考:公钥、私钥、数字签名和数字证书的概念及解密 , https 证书可以参考:
https证书相关概念

这里重点要说明的是, 客户端需要使用证书文件访问服务端资源, 也就是说, 如果想访问一个https 的站点, 需要使用这个站点的公钥进行访问, 因为内容是加密的。

浏览器做为一种客户端,支持查看、下载和安装站点的证书的功能, 以Chrome 浏览器为例, 可以下载站点的证书, 详细可以参考:
如何在浏览器中下载网站的https证书

介绍了这么多, 你可能会问,这和本文有什么关系呢? 也就是Java和证书有什么关系呢?

Java语言提供了访问http以及https 的API, 很多基于Java 的应用都需要访问https 的资源, 比如:

  • Maven 从中央库(https://repo.maven.apache.org/maven2/)获取依赖
  • Jenkins在线安装插件(https://plugins.jenkins.io/)
    这些都是https 站点, 也都是需要对应的证书才能访问。如果没有证书, Java 会抛出如下的异常:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path

Java的证书管理机制

浏览器提供了查看证书文件的功能, 可以很容易的看到安装了多少证书以及每个证书的颁发机构, 有效日期等,比如在Chrome 中查看的证书信息如下图:
在这里插入图片描述

这些证书是保存在使用的机器中的, 现在有一个问题, Java能读到本地机器的这些证书吗? 答案是Java有自己单独的证书管理机制。

JRE的安装目录jre\lib\security 中有一个 cacerts 文件, 将这个名字拆开来看 ca + certs , 就是CA机构颁发的证书,JRE安装的时候这个里面默认会包含一些常用的证书, 不包含在里面的证书站点需要单独安装。
在这里插入图片描述

需要特别说明的是: JDK的安装目录也有一个JRE目录, 所有JDK安装之后, 其实是有两个JRE目录, 也就是会有两个cacerts 文件。这样可能遇到的问题是, 开发而言,一般使用JDK 下面的Java, 但是一般使用的时候吗可能使用到JRE下面的Java,所以,安装证书的时候, 保险起见, 是将证书同时安装到这两个证书库文件中。

Java 证书安装步骤

Java提供了keytool 工具, 用于将证书导入到Java 的证书库文件中。 首先的第一步是在浏览器端把证书下载下来, 这里以导入Maven 中央库的证书为例,使用Chrome下载证书。

  1. 在浏览器输入Maven 中央库地址: https://repo.maven.apache.org/maven2/

  2. 点击地址栏 左侧的小锁按钮,在弹出的下拉单中选择 “连接时安全的” 菜单,如下图:

在这里插入图片描述

  1. 点击 “证书有效“
    在这里插入图片描述

  2. 在弹出窗口中进入 ”详细信息“的标签页, 点击下方的“导出”按钮后, 选择一个本地的下载路径之后进行下载, 这里下载到 C盘的cert 目录, 证书文件名是:mvnrepo.crt
    在这里插入图片描述

好了, 证书导出完成了, 接下来是把证书导入Java 的证书库文件,这里的Java安装目录是: C:\Program Files\Java

  1. 在命令终端执行如下命令: keytool -import -trustcacerts -alias mvnrepo -file c:\\cert\mvnrepo.crt -keystore "C:\Program Files\Java\jdk1.8.0_131\jre\lib\security\cacerts" -storepass changeit
  • alias 是这个证书在证书库的别名, 也就是唯一标识符。 这个名字需要唯一, 如果已经存在的话, 需要把旧的删除才能导入。
  • keystore 指定证书库文件的位置
  • storepass 证书库文件的密码, 默认是changeit
  1. 在命令终端执行如下命令: keytool -import -trustcacerts -alias mvnrepo -file c:\\cert\mvnrepo.crt -keystore "C:\Program Files\Java\jre1.8.0_211\lib\security\cacerts" -storepass changeit
    上面也讲到了安装JDK 之后会有两个JRE目录, 保险起见是两边都安装, 也可以直接把证书文件复制过去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/27065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度解析:为何在 SwiftUI 视图的 init 初始化器里无法更改 @State 的值?

问题现象 如下代码所示,我们希望用 “hopy” 初始化 ContentView 中的 secret 属性,但是最终 ContentView 显示时, secret 的值仍旧为默认值 “none” ! 为什么会出现这种情况呢? 其实答案就在 @State 包装器属性内部实现机制上,它比表面看起来要复杂那么一丢丢。 在本…

第十四届校模拟赛第一期(一)

“须知少时凌云志,自许人间第一流” 鄙人11月八号有幸参加学校校选拔赛,题型为5道填空题,5道编程题,总时间为4小时。奈何能力有限,只完成了5道填空和3道编程大题,现进行自省自纠,分享学习&#…

Unity | Cinemachine 2D 设置边界及错误记录

1 背景介绍 在使用大地图的项目中,通常需要摄像机跟随玩家移动,而且需要根据地图尺寸限制摄像机的边界 借助 Cinemachine 及其扩展组件 CinemachineConfiner 可以很方便的实现该功能,但这次遇见一个问题:运行时,当摄…

世界杯今日胜负预测(阿根廷VS沙特阿拉伯,丹麦VS突尼斯)

首先是今天开局的两场 阿根廷VS沙特阿拉伯————阿根廷胜 理由: 1、国家队世界男足排名第三 2、在今年阿根廷的近期战绩 3、经常关注世界杯的粉丝观点 4、抖音平台预测数据,截止时间14:46 丹麦VS突尼斯————丹麦胜 理由: 1、丹麦国…

CPT-CY3/CY5/CY7/CY7.5/花菁染料CY3/Y5/CY7/CY7.5/抗Trop-2 IgG抗体偶联顺铂的制备

小编今天给大家分享了CPT-CY3/CY5/CY7/CY7.5/花菁染料CY3/Y5/CY7/CY7.5/抗Trop-2 IgG抗体偶联顺铂的制备方法,一起来看看。 抗Trop-2 IgG抗体偶联顺铂的制备: 转染Trop-2质粒至293F细胞,利用Protein A亲和柱纯化,获得人源抗Trop-2 IgG抗体.酶联免疫吸附…

Qt Quick-PySide2使用qrc文件

Qt Quick中PySide2使用qrc文件、Controls2设置全局样式、VSCode任务。 使用步骤 创建一个 resource.qrc 文件 <RCC><qresource prefix"/"><file>qtquickcontrols2.conf</file><file>images/images.png</file></qresource&…

反射、类的加载时机、类加载过程的详细流程图

目录 一、反射 1、静态加载 2、动态加载 二、类加载的时机 三、类加载的流程图 四、类加载的三个阶段的详细解释 1.1 加载 1.2 连接 1、验证 2、准备 3、解析 1.3 初始化 一、反射 反射机制是java实现动态语言的关键&#xff0c;也就是哦天哪故宫反射实现类动态加载…

Linux安装Oracle19c(极简版)

Oracle下载oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpmoracle-database-ee-19c-1.0-1.x86_64.rpmOracle安装 cd /opt yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm yum -y localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm 环境变…

RHCE学习 --- 第八次作业(ansible)

RHCE学习 — 第八次作业&#xff08;ansible&#xff09; \ 一、基础环境&#xff1a; 采用一台centos7的主机为控制节点master&#xff0c;两台centos8的主机为受控节点&#xff08;node01&#xff0c;node02&#xff09; 三台主机均安装ansible并可以使用 三台主机有IP地…

My Sixty-seventh Page - 0-1背包问题理论 - By Nicolas

小尼在这里跟大家说明一下0-1背包问题的理论&#xff0c;首先我们需要认识一下什么是背包问题。小尼在这里拉一下代码随想录的代码&#xff0c;有兴趣的小伙伴也想把背包问题学好&#xff0c;可以去代码随想录看一看背包问题的讲解&#xff0c;也可以去B站看一看代码随想录对背…

java项目-第158期ssm仓库智能仓储系统_java毕业设计_计算机毕业设计

java项目-第158期ssm仓库智能仓储系统_java毕业设计_计算机毕业设计 今天分享的项目是《ssm仓库智能仓储系统》 该项目分为3个角色&#xff0c;管理员、员工、供应商。 员工角色登录后台&#xff0c;主要负责流水线工作&#xff0c;比如&#xff1a;查看供应商、 货物采购管理…

【计算机视觉OpenCV基础】实验一 图像预处理

实验一 图像预处理 计算机视觉OpenCV基础实验合辑&#xff08;实验1234扩展&#xff09; 资源下载地址&#xff1a; https://download.csdn.net/download/weixin_53403301 合辑&#xff1a;&#xff08;加在下载地址后面&#xff09; /87113581 讲义&#xff08;包括理论、图例…

MCE | 分子伴侣介导的自噬

自噬是细胞在外界环境因素的影响下&#xff0c;利用溶酶体&#xff0c;降解自身受损、变性大分子物质或者细胞器的自我消化过程。依据其发生途径&#xff0c;主要分为三种&#xff1a;巨自噬 (Macroautophagy)&#xff0c;微自噬 (Microautophagy) 和分子伴侣介导的自噬 (Chape…

MyBatis 缓存机制

文章目录一、一级缓存二、二级缓存1.cache 元素2.缓存命中率一、一级缓存 MyBatis 的一级缓存是 SqlSession 级别的缓存。如果同一个 SqlSession 对象多次执行完全相同的 SQL 语句&#xff0c;在第一次执行完成后&#xff0c;MyBatis 会将查询结果写入一级缓存中&#xff0c;此…

mysql中的binlog用法

binlog是什么 MySQL的二进制日志binlog可以说是MySQL最重要的日志&#xff0c;它记录了所有的DDL和DML语句&#xff08;除了数据查询语句select&#xff09;,以事件形式记录&#xff0c;还包含语句所执行的消耗的时间&#xff0c;MySQL的二进制日志是事务安全型的。使用mysqlb…

Kotlin语法学习(四)_空指针检查

空指针检查 空指针异常是一种不受编程语言检查的运行时异常,只能由程序员主动通过逻辑判断来避免,所以空指针异常往往比较容易出这个问题 可空类型系统 在Kotlin当中利用了编译时判空检查的机制几乎杜绝了空指针异常,Kotlin提供了一些列的工具,让我们能够轻松处理各种判空情…

Verilog 随机数及概率分布

随机数 Verilog 中使用系统任务 $random(seed) 产生随机数&#xff0c;seed 为随机数种子。seed 值不同&#xff0c;产生的随机数也不同。如果 seed 相同&#xff0c;产生的随机数也是一样的。可以为 seed 赋初值&#xff0c;也可以忽略 seed 选项&#xff0c;seed 默认初始值为…

130. 被围绕的区域

130. 被围绕的区域 给你一个 m∗nm * nm∗n 的矩阵 board &#xff0c;由若干字符 ‘X’ 和 ‘O’ &#xff0c;找到所有被 ‘X’ 围绕的区域&#xff0c;并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 实例1&#xff1a; 输入&#xff1a;board [[“X”,“X”,“X”,“X”],…

内容云筑底,火山引擎能否为企业添一把火?

在App里面再搭一个“今日头条”&#xff0c;让用户在自家的App里看图文、刷视频&#xff0c;这是很多企业都想干的一件事情。尤其是对于用户使用频率低的App而言&#xff0c;他们更需要依靠信息流内容加长用户停留时间&#xff0c;增加用户互动次数&#xff0c;进而留住用户&am…

神经网络和深度学习-梯度下降Gradient Descent

梯度下降 损失函数 绝大多数的机器学习模型都会有一个损失函数。比如常见的均方误差&#xff08;Mean Squared Error)损失函数&#xff1a; L(w,b)1N∑i1N(yi−f(wxib))2L(w, b)\frac{1}{N} \sum_{i1}^{N}\left(y_{i}-f\left(w x_{i}b\right)\right)^{2} L(w,b)N1​i1∑N​(y…