Jenkins 在Windows下插件无法安装问题解决

本篇是解决Jenkins在某些机器下无法进行在线插件安装的问题。

关于Jenkins在Windows 的安装启动可以参考:
Jenkins 新版本及插件在Windows下的安装

问题
Windows 10 系统下, Jenkins 2.7 之上的版本在线安装插件是失败, 在以下页面中会出现红色的错误标志。

在这里插入图片描述

点击具体错误详情, 会出现如下错误信息。

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

此外, 有时候会在插件管理页面出现一段红色的错误提示:

在这里插入图片描述

(注: 上图出现错误提示的页面, 非实际错误页面)

发生场景
发生的场景一般是:

  1. 老版本的Jenkins一般不会出现, 较新版本会出现
  2. 个人电脑安装正常,但是在某些单位内网电脑会出现。

原因及解析
从以上错误信息可以看出, 原因基本上是SSH 验证以及证书的原因。Jenkins 已经使用了https 的地址, 在插件管理的 “Advanced ” 标签页中可以看到:
在这里插入图片描述

也就是Jenkins插件在线获取的地址是: https://updates.jenkins.io/update-center.json。

Jenkins是使用Java实现的, Java在获取https 的时候会验证证书的有效性, 如果是非法的证书, 则不会下载相关的资源, 也就会报握手以及证书等错误信息。

解决方法

网络上搜素有多种解法, 看上去较多的有:

  • 方法1. 更换https 为 http, 也就是在“Advanced ” 标签页中修改https://updates.jenkins.io/update-center.json 为 http://updates.jenkins.io/update-center.json , 提交之后重启Jenkins。
  • 方法2, 切换资源的地址为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json , 使用清华大学提供的镜像资源地址。

不过, 笔者实验以上两种方法皆无效。 方法1 虽然可以解决 “Check Now”的错误信息, 但是实际下载资源的时候还是使用https, 方法2 更换资源地址, 还是没有解决证书的问题。

终极的解法是在Java添加证书的验证。

如何验证Java访问的站点时安全的

这里有一个Java的类SSLPoke , 使用其可以快速验证使用Java是否可以访问 某个https, 命令如下:

java SSLPoke updates.jenkins.io 443
  • updates.jenkins.io 是地址
  • 443 是https 的默认端口
    如果出现如下“Successfully connected”代表成功, 否则会报异常。 否则就有很大可能是需要安装证书。

在这里插入图片描述

如何快速安装证书呢?

这里也有一个Java类 InstallCert.java
先编译该类:
javac InstallCert.java
在执行安装证书:
java InstallCert updates.jenkins.io
该命令会在目录产生一个 jssecacerts 的证书文件, 将这个文件复制到jre的目录中, 比如:
C:\Program Files\Java\jre1.8.0_211\lib\security

Jenkins插件下载的重定位

安装完 updates.jenkins.io 的证书之后, 发现下载插件依旧会出错, 查看日志发现如下错误信息:

Caused: java.io.IOException: Failed to download from https://updates.jenkins.io/download/plugins/mailer/1.34/mailer.hpi (redirected to: https://get.jenkins.io/plugins/mailer/1.34/mailer.hpi)

从以上错误信息可以看出, 下载插件时会被重定位到https://get.jenkins.io/plugins, 所以也需要信任这个站点。

终极步骤

综合以上分析, 解决插件在线安装的步骤有:

  1. 下载 InstallCert.java 类, 并编译这个类 javac InstallCert.java
  2. 安装 updates.jenkins.io 站点的证书 java InstallCert updates.jenkins.io
  3. 安装 get.jenkins.io 站点的证书 java InstallCert get.jenkins.io
  4. 重启Jenkins

本篇介绍的所有资源及工具的下载地址

问题解决心得

  1. 善用日志
  2. 思考文本的根本原因,找准问题根源, 这个问题完全是Java的https访问的证书验证问题, 如果把焦点一直放在Jenkins本身,则就是缘木求鱼了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oscar999

送以玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值