leiningen:如何关闭 ssl 验证?

leiningen: How do I turn off ssl verification?

我是 Windows 上的 leiningen 新用户。当我 运行 lein run 我得到以下错误:

C:\Users\me\clojure-app>lein run
Could not transfer artifact org.clojure:clojure:pom:1.7.0 from/to central (https://repo1.maven.org/maven2/): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Could not transfer artifact org.clojure:tools.nrepl:pom:0.2.10 from/to central (https://repo1.maven.org/maven2/): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Could not transfer artifact clojure-complete:clojure-complete:pom:0.2.3 from/to central (https://repo1.maven.org/maven2/): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
This could be due to a typo in :dependencies or network issues.
If you are behind a proxy, try setting the 'http_proxy' environment variable.

我的http_proxyhttps_proxy环境变量确实设置正确。

我在公司防火墙后面,它使用自己的 SSL 证书重新签署网络流量,我怀疑这可能是我问题的根源。但是,我将 HTTP_CLIENT 环境变量设置为:

curl --insecure -f -L -o

...避免 SSL 验证(如 this note in the installation help 所建议),但这并没有改变错误消息。

所以,我想我的根本问题是:用户必须采取什么步骤才能 lein run 成功降低对 Windows 位于公司防火墙后面的机器的依赖性签署 SSL 流量? :o)

这里有一些按疯狂程度倒序排列的选项(最不疯狂的在前)

  • 将您的公司代理添加到您的信任库,并且不要在莱宁根做任何您下次更改项目或计算机时必须记住再次做的特殊事情。除了系统之外,您可能还需要将其添加到 Java JVM 的证书存储中(这很可能是您的问题)
  • 将贵公司的代理证书添加到项目的 project.clj's :certificate section 这样,如果需要更改证书,则只需一个人即可更改,整个团队都会受益。
  • 许多公司都有一个内部缓存 maven 代理,例如 Nexus,它会自动获取和缓存依赖项,然后让网络内的人快速使用它们。通过四处询问或查看 Java 项目上的 .pom 文件以了解您是否拥有其中之一的配置。
  • 回家,或者去当地的咖啡店,下载依赖项,然后回到办公室。无论如何,处理完 TLS 证书后散步和呼吸新鲜空气总是好的。
  • 使用浏览器手动下载文件并将其放入 .m2 目录中。

我真的不想太傲慢,所以省略了对您实际问题的回答。我确实意识到在此列表中没有禁用安全性的选项。这是故意的,因为其中一个选项肯定会起作用,并且会让您的生活 大大 变得更好,因为您知道如何使用这些选项。如果它仍然给人以自命不凡的印象,那么请接受我最诚挚的道歉和回答。

为了详细说明 Arthur 的回答并节省前往 google 的命令: 要将证书添加到 JRE 的信任库,请使用此 keytool 命令:

keytool -import -trustcacerts -file CompanyMitmProxyCertificate.crt -alias ZScaler -keystore cacerts

其中:"CompanyMitmProxyCertificate.crt" 是贵公司的中间人攻击证书,'cacerts' 是位于“\lib\security”下的 jre 的密钥库。密钥库的默认密码是 'changeit'.