leiningen:如何关闭ssl验证?

时间:2016-02-04 20:08:27

标签: ssl clojure leiningen

我是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成功降低重新签署SSL流量的公司防火墙后面的Windows计算机上的依赖关系? :O)

2 个答案:

答案 0 :(得分:4)

这里有一些选项按疯狂的逆序排列(最不疯狂的第一个)

  • 将您的公司代理添加到您的信托商店,并且不要在Leiningen做任何特别的事情,下次更换项目或计算机时,您必须记住再做一次。除了系统之外,您可能还需要将它添加到Java JVM的证书存储区(这很可能是您的问题)
  • 将公司代理证书添加到项目project.clj's :certificate section这样,如果需要更改证书,只需要一个人需要更改证书,整个团队就能获得好处。
  • 许多公司都有一个内部缓存maven代理,例如Nexus,它将自动获取和缓存依赖关系,然后让它们快速提供给网络内部的人。通过询问或查看Java项目中的.pom文件来查看是否有其中一个。
  • 回家或去当地的咖啡馆,下载依赖项,然后回到办公室。无论如何,在处理TLS证书之后,散步和一些新鲜空气总是很好。
  • 使用浏览器手动下载文件,然后自行将它们放在.m2目录中。

我真的想通过省略对你实际问题的答案来避免傲慢。我确实意识到没有选项可以禁用此列表中的安全性。这是有目的的,因为其中一个选项肯定会起作用,并且会让你的生活更多更好地知道如何使用它们。如果它仍然是自命不凡,那么请接受我最诚挚的道歉和答案。

答案 1 :(得分:1)

详细说明Arthur的答案并保存google之旅的命令: 要将证书添加到JRE的信任库,请使用此keytool命令:

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

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