Jenkins HttpRequest插件如何开启类似curl -v的verbose模式查看SSL握手详情
Jenkins HttpRequest插件调试SSL握手问题说明
Jenkins HttpRequest插件没有提供和curl -v参数等价的内置verbose输出模式,默认无法直接打印完整的SSL握手交互、原始请求/响应报文这类底层调试信息。
插件自带的可调试手段
- 开启插件专属日志:进入Jenkins「系统管理」-「系统日志」,新增日志记录器,为
org.jenkinsci.plugins.httprequest路径设置日志级别为ALL,可以查看插件执行请求时的运行日志,但这部分日志不包含SSL握手阶段的证书校验、密钥协商等底层细节。 - 如果不需要排查握手细节,只是要解决自签名证书导致的请求失败问题,可以直接在步骤中添加
ignoreSslErrors: true参数跳过SSL证书校验,修改后的示例代码如下:
def response = httpRequest url: 'https://self-signed.badssl.com/', httpMode: 'GET', ignoreSslErrors: true, customHeaders: [[name: 'Content-Type', value: 'application/json']]
查看完整SSL握手细节的可行方案
如果必须拿到完整的SSL握手交互过程,有两种常用方案:
- 直接在流水线中调用带verbose参数的curl命令发起请求,
-v参数会直接打印完整的连接建立、SSL握手、请求响应交互全流程细节,示例写法:
sh 'curl -v https://self-signed.badssl.com/'
- 如果需要抓取HttpRequest插件本身发起请求的SSL日志,可以给Jenkins主进程/对应执行节点的JVM添加启动参数
-Djavax.net.debug=ssl,handshake,重启后所有Java进程发起的SSL请求(包含该插件的请求)都会把完整握手日志打印到Jenkins系统日志中。注意这个参数会产生非常大的日志量,调试完成后请及时移除。
内容的提问来源于stack exchange,提问作者HC LW
相关产品推荐
相关产品推荐

