artifactory - 通过人工远程简单存储库提取 gradle distributionUrl 导致 javax.net.ssl.SSLHandshakeException
问题描述
我如何告诉 gradle wrapper 信任我的工件证书而不修改使用它的每台机器,或者我是否以错误的方式通过工件?
我的工件使用自签名证书,并且我的系统设置为信任它。在 gradle 构建中,对工件存储库的访问对我的依赖项非常有效,但 gradlew 则不那么好。
为了提高构建可靠性,我们为https://services.gradle.org/distributions/gradle-添加了一个人工制作的简单远程存储库,但在构建时请参阅以下内容:
gradle-wrapper.properties
distributionUrl=https\://artifactory01.megacorp.us/remote-simple-artifactory/distributions/gradle-4.0.2-all.zip
错误
Exception in thread "main" javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
看起来 gradlew 确实将人工制品视为中间人(本质上就是这样)。
这样做的正确方法是什么?
解决方案
该错误是由于运行 Artifactory 的 JAVA 在其受信任的根证书存储中没有受信任的远程 URL 的根证书引起的。
此外,请参阅以下有关 PKIX 的知识库文章。
一个附加选项,如果您的 URL 末尾有一个尾随“/”,这可能导致重定向到远程存储库的安全位置
推荐阅读
- csv - Kafka/Confluent CSV/SFTP 连接器和嵌套 json
- data-structures - 什么数据结构具有这些属性?
- sql - 使用子查询将 SQL 转换为 LINQ
- python - 在两个单独的文件中搜索字符串并使用 python3 仅打印匹配行的函数
- entity-framework - AutoMapper.Collection.EntityFramework System.InvalidOperationException 子集合删除实体
- django - Django Rest Framework - 为序列化程序编写一个显式的 .update() 方法
- python - 读取每列的第一个元素,然后读取 csv 文件中的整行
- applescript - 为什么使用 Applescript 库会阻止我运行 shell 脚本?
- html - 水平居中引导图标
- solr - 为什么我会收到错误:创建 SolrCore 时出错?