在 jenkin 中运行 OWASP 依赖检查器时遇到 SSLHandshakeException

Posted

技术标签:

【中文标题】在 jenkin 中运行 OWASP 依赖检查器时遇到 SSLHandshakeException【英文标题】:Facing the SSLHandshakeException while running the OWASP dependency checker in jenkin 【发布时间】:2021-03-15 02:23:25 【问题描述】:
Error:
15:35:18 [ERROR] UpdateException: Unable to download meta file: https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-modified.meta
15:35:18 [ERROR] caused by DownloadFailedException: Download failed, unable to retrieve 'https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-modified.meta'; Error downloading file https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-modified.meta; unable to connect.
15:35:18 [ERROR] caused by DownloadFailedException: Error downloading file https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-modified.meta; unable to connect.
15:35:18 [ERROR] caused by SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
15:35:18 [ERROR] caused by ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
15:35:18 [ERROR] caused by SunCertPathBuilderException: unable to find valid certification path to requested target
15:35:18 [ERROR] NoDataException: No documents exist

我们添加了依赖检查插件 pom.xml

<plugin>  
         <groupId>org.owasp</groupId>  
         <artifactId>dependency-check-maven</artifactId>  
         <version>6.0.3</version>  
         <executions>  
           <execution>  
             <goals>  
               <goal>check</goal>  
             </goals>  
           </execution>  
         </executions>  
         <configuration>         
           <!-- Generate all report formats -->             
           <assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled>          
         </configuration>  
       </plugin>

【问题讨论】:

【参考方案1】:

此错误通常意味着您的 JVM 无法创建到服务器 nvd.nist.gov 的安全 (https) 连接,因为它不信任服务器提供的证书。为了信任服务器,服务器或签名机构的公共证书必须位于 JVM 使用的信任库中。默认情况下,信任库位于%JAVA_HOME%\lib\security\cacerts,您可以使用以下(Windows)keytool -list -keystore "%JAVA_HOME%\lib\security\cacerts" -storepass changeit 列出其内容。 您应该会看到证书列表,如果未列出 digicertglobalrootg2,则需要导入它以信任服务器,因为证书由 CN=DigiCert Global Root G2, OU=www.digicert.com, O= 签名DigiCert Inc,C=美国。 您使用的是什么版本的 Java? 1.8 之前的java trust stores 中可能不包含上述证书。

【讨论】:

以上是关于在 jenkin 中运行 OWASP 依赖检查器时遇到 SSLHandshakeException的主要内容,如果未能解决你的问题,请参考以下文章

禁用owasp依赖检查maven插件中的模块

SonarQube 5.6.6:错误 OWASP ZAP 和依赖检查插件

Scala 项目是不是有任何 OWASP 检查工具?

在 SonarQube 中使用 npm 审计报告

Jenkins 在 Tomcat 中的部署及代码静态检查工具集成

如何在一个仪表板上显示多个项目的OWASP的Dependency Check Maven结果