Windows 10 + Jenkins 2.4 安装插件时https 的证书问题及解决

本篇面临与解决的问题

本篇是在 Windows 10中安装Jenkins 2.414.1 , 在安装完成之后安装一些需要的插件, 可以在浏览器端安装插件的时候, 总是不成功, 控制台报以下错误:

 SEVERE  h.model.UpdateCenter$DownloadJob#run: Failed to install antisamy-markup-formatter
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:146)at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:127)at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)
Caused: sun.security.validator.ValidatorException: PKIX path building failedat java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)at java.base/sun.security.validator.Validator.validate(Validator.java:264)at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132)at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:638)
Caused: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

一句话, 还是 https 证书的问题。

之前有总结一篇如何解决这个问题, 参考:
Jenkins 在Windows下插件无法安装问题解决

但是,按照这个方式处理之后,问题还是依旧。

难道是证书导入的不对吗?
使用SSLPoke 查看Java是否能访问插件的 https, 发现都是正常的, 命令如下:

java SSLPoke updates.jenkins.io 443
java SSLPoke get.jenkins.io 443

返回都是:

Successfully connected

也就是说, 证书导入之后, Java访问是正常的, 但是Jenkins 却无法下载插件。

是因为Jenkins无法找到证书库吗, 于是在启动的时候使用 javax.net.ssl.keyStore 指定证书库文件, 命令如下:

java -Djavax.net.ssl.keyStore="C:\Program Files\Java\xx\lib\security\cacerts" -storepass changeit  -jar jenkins.war

问题还是依旧,于是想着:
是否可以让Jenkins 忽略证书访问呢? 使用 hudson.model.DownloadService.noSignatureCheck 参数设置下载的时候忽略证书:如下:

java -Dhudson.model.DownloadService.noSignatureCheck=true -jar jenkins.war

实验结果: 失败。

解决方案

在启动的后台终端看到如下一条提示:

Caused: java.io.IOException: Failed to download from https://updates.jenkins.io/download/plugins/cloudbees-folder/6.848.ve3b_fd7839a_81/cloudbees-folder.hpi (redirected to: https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/cloudbees-folder/6.848.ve3b_fd7839a_81/cloudbees-folder.hpi)

看这条的意思是: 从官方下载失败了, 重定向到清华大学的镜像。这时脑海闪过一个死马当成活马医的想法, 导入 清华大学的镜像的证书试试:

  1. 在浏览器打开 https://mirrors.tuna.tsinghua.edu.cn/
  2. 下载证书
  3. 导入证书
  4. 到Jenkins中安装插件

惊喜出现了, 竟然可以了。 下载的插件文件位于:C:\Users\xxx.jenkins\plugins。安装完成就可以使用, 不需要重启。

本篇相关的环境搭建

  • JDK 17 ,OpenJDK,下载地址: https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_windows-x64_bin.zip
  • Jenkins 2.414.1,长期支持版本。

Jennkins从 Jenkins 2.357 和 LTS 2.361.1版本之后需要JDK 11 或者JDK 17之上的版本。
这里的JDK是解压版,不需要安装, 解压后将目录jdk-17.0.2 复制到C:\Program Files\Java 下,如果机器有其他版本的Java, 复制后的目录结构如下:
在这里插入图片描述

修改JAVA_HOME 以及Path 环境变量, 使机器使用 JDK 17, 也可以临时设置,需要注意的是Path默认会有一个值 C:\Program Files (x86)\Common Files\Oracle\Java\javapath, 修改Java版本的时候要注意这个。

本篇相关的JDK, Jenkins 以及常用插件可以通过以下地址一键下载:

https://download.csdn.net/download/oscar999/88354562

Jenkins 安装成功后的页面如下:

在这里插入图片描述

关于内部根证书

在企业环境中,经常需要使用根证书对外部证书进行包装和签名,来创建所谓的“代理证书”或“包装证书”。这些证书提供了额外的验证和安全性,可以增加一层来自企业内部的信任。

在这种设置中,一般情况的流程如下:

  1. 创建或引入企业根证书:企业首先需要有一个被内部服务器、设备和用户所信任的根证书。这可以是自签名的,也可以是从商业或公开的认证颁发机构购买的。

  2. 创建证书签名请求(CSR):对于需要签名的外部证书,您需要先创建一个与该证书相关联的 CSR。这通常涉及到输入一些相关信息,例如您的组织和服务器的名称、位置等。

  3. 使用根证书签名 CSR:然后,您可以使用您的企业根证书签名 CSR,创建一个新的服务器证书。这个新的证书是原来的外部证书的“包装版”,它现在包含了来自您的企业的签名。

  4. 在服务器上使用新的证书:最后,您可以在您的服务器上使用这个新的被签名的证书,代替原先的外部证书。

证书的验证

内部根证书所签发的其他证书需要进行以下步骤:

  1. 检查证书链: 首先检查证书的签名链是否完整。一个证书应该能够在证书链中向上追溯到其签发的根证书。在一个浏览器环境中,它会自动执行这个过程。

  2. 验证根证书: 根证书需要被特定应用或操作系统信任。如果根证书是内部私有证书,那么它同样需要被手动安装在受信任的根证书存储中。

  3. 检查证书的有效期: 检查证书是否在有效期内。证书都有一个开始日期和一个到期日期,并且仅在这段时间内有效。

  4. 查找证书撤销列表(CRL)或者在线证书状态协议(OCSP): 证书可能在它的有效期内被撤销。验证过程需要检查证书是否已被撤销。

  5. 验证证书的使用目的: 验证证书是否被用于它被设计的用途。例如,服务器证书必须用于 SSL/TLS 通信。

具体的验证步骤可能因环境和具体的需求来变化。在编程环境中,这些验证步骤可能需要自己去实现,或者是使用第三方库来完成。在浏览器和操作系统环境中,这些步骤通常是自动进行的。

自有根证书可能的问题

使用自有的根证书,并发现无法正常访问外部站点,这可能由多个原因导致:

代理或防火墙设置: 你的网络可能有一个代理服务器或防火墙,这些可能需要特殊证书来建立安全连接。如果你的设备没有安装正确的证书,可能不能访问外部网站。你可能需要联系你的IT部门来获取并安装正确的证书。

证书权限: 有可能你的根证书或者中间证书并不允许你的设备访问外部资源。你可能需要检查你的根证书的权限设置,或者联系你的IT部门寻求解决办法。

证书链问题: 如果你的证书链有问题,可能会阻止你的设备成功的对外部网站进行TLS握手。这可能是因为证书链缺失,或者你的企业的根证书没有正确的签名外部资源的证书。

这里可能的问题就是本篇开篇遇到的问题了。



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

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

相关文章

润和软件HopeStage与华宇信息TAS应用中间件完成产品兼容性互认证

近日,江苏润和软件股份有限公司(以下简称“润和软件”)HopeStage 操作系统与北京华宇信息技术有限公司(以下简称“华宇信息”)TAS应用中间件软件完成产品兼容性测试。 测试结果表明,企业级通用操作系统Hope…

成都优优聚美团代运营具备专业团队!

美团代运营是美团旗下的一项服务,旨在帮助商家解决运营难题,提升业务效率和销售额。美团代运营的优势在于多方面,以下将详细介绍。 首先,美团代运营拥有庞大的流量入口。作为中国领先的消费服务平台,美团拥有海量的用户…

字符函数和字符串函数(C语言进阶)

字符函数和字符串函数 一.求字符串长度1.strlen 二.长度不受限制的字符串函数介绍1.strcpy2.strcat3.strcmp 前言 C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中。 字符串常量适用于那…

百度SEO优化技巧大揭秘(提高网站排名的必备SEO技术)

SEO优化技术介绍: SEO优化技术是指通过对网站的结构、内容、链接等方面进行优化,提高网站在搜索引擎中的排名,从而增加流量、提升品牌知名度和销售额。目前,在众多搜索引擎中,百度占据了国内搜索引擎市场的主导地位&a…

React(react18)中组件通信04——redux入门

React(react18)中组件通信04——redux入门 1. 前言1.1 React中组件通信的其他方式1.2 介绍redux1.2.1 参考官网1.2.2 redux原理图1.2.3 redux基础介绍1.2.3.1 action1.2.3.2 store1.2.3.3 reducer 1.3 安装redux 2. redux入门例子3. redux入门例子——优…

电子电子架构——AUTOSAR信息安全机制有哪些(下)

电子电子架构——AUTOSAR信息安全机制有哪些(下) 我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人们会在生活中不断攻击你。他们的主要…

Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解

1. 准备工作 本文的前后端分离项目,技术框架是: Springboot Vue Maven SVN Redis Mysql Nginx JDK 所以首先需要安装以下: 在腾讯云服务器OpenCLoudOS系统中安装jdk(有图详解) 在腾讯云服务器OpenCLoudOS系统…

SVN的基本使用

一、SVN介绍 SVN(Subversion)是一个开源的版本控制系统,它专门用于管理文件和目录的变更。SVN 提供了一种集中式的版本控制方案,其中有一个中央仓库存储所有文件的历史记录和变更。 SVN使用方式相对简单,可以通过命令…

Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化...

原文链接:http://tecdat.cn/?p23689 本文探索Python中的长短期记忆(LSTM)网络,以及如何使用它们来进行股市预测(点击文末“阅读原文”获取完整代码数据)。 相关视频 在本文中,你将看到如何使用…

DAZ To UMA⭐二.设置DAZ导出的形态键 和 Daz贴图位置

文章目录 🟧 形态键介绍及在Unity3D中的用途1️⃣ Daz中的形态键2️⃣ Blender 中的形态键3️⃣ 形态键在Unity中的作用🟩 设置DAZ导出的形态键1️⃣ 找到要导出的形态键名称2️⃣ 打开导出面板3️⃣ 设置导出规则举例 : 导出身体Morphs举例:导出嘴部Morphs🟦 获取模型纹…

浅析工具dirpro v1.2源码

文章目录 前言源码分析dirpro.pystart.pybackup.pyrely.pyresults.pyend.py 前言 工具简介 dirpro 是一款由 python 编写的目录扫描器专业版,操作简单,功能强大,高度自动化 自动根据返回状态码和返回长度,对扫描结果进行二次整理…

VLAN聚合简介

定义 VLAN聚合(VLAN Aggregation,也称Super VLAN)指在一个物理网络内,用多个VLAN(称为Sub-VLAN)隔离广播域,并将这些Sub-VLAN聚合成一个逻辑的VLAN(称为Super-VLAN)&…

【linux进程(一)】深入理解进程概念--什么是进程?PCB的底层是什么?

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 Linux进程 1. 前言2. PCB初认…

一文读懂Llama 2(从原理到实战)

简介 Llama 2,是Meta AI正式发布的最新一代开源大模型。 Llama 2训练所用的token翻了一倍至2万亿,同时对于使用大模型最重要的上下文长度限制,Llama 2也翻了一倍。Llama 2包含了70亿、130亿和700亿参数的模型。Meta宣布将与微软Azure进行合…

iOS16新特性:实时活动-在锁屏界面实时更新APP消息 | 京东云技术团队

简介 之前在 《iOS16新特性:灵动岛适配开发与到家业务场景结合的探索实践》 里介绍了iOS16新的特性:实时更新(Live Activity)中灵动岛的适配流程,但其实除了灵动岛的展示样式,Live Activity还有一种非常实用的应用场景…

【Vue2.0源码学习】生命周期篇-模板编译阶段(template)

文章目录 1. 前言2. 模板编译阶段分析2.1 两种$mount方法对比2.2 完整版的vm.$mount方法分析 3. 总结 1. 前言 前几篇文章中我们介绍了生命周期的初始化阶段,我们知道,在初始化阶段各项工作做完之后调用了vm.$mount方法,该方法的调用标志着初…

【跟小嘉学习区块链】二、Hyperledger Fabric 架构详解

系列文章目录 【跟小嘉学习区块链】一、区块链基础知识与关键技术解析 【跟小嘉学习区块链】一、区块链基础知识与关键技术解析 文章目录 系列文章目录[TOC](文章目录) 前言一、Hyperledger 社区1.1、Hyperledger(面向企业的分布式账本)1.2、Hyperledger社区组织结构 二、Hype…

UML六大关系总结

UML六大关系有:继承、关系、聚合、组合、实现、依赖。分为通过图和代码总结这些关系。 1、继承 继承(Inheritance):表示类之间的继承关系,子类继承父类的属性和方法,并可以添加自己的扩展。 继承&#x…

【Spring Boot】Spring Boot源码解读与原理剖析

这里写目录标题 前言精进Spring Boot首选读物“小册”变“大书”,彻底弄懂Spring Boot全方位配套资源,学不会来找我!技术新赛道,2023领先抢跑 前言 承载着作者的厚望,掘金爆火小册同名读物《Spring Boot源码解读与原理…

Windows11 手把手教授开放端口

首先在控制面板点击“系统与安全”,找到防火墙 然后点击“windows defender”打开防火墙 点击左侧目录栏中“高级设置” 点击“入站规则”,再点击新建入站规则(开放端口有开放入站端口与开放出站端口之分,这里讲入站端口的开放…