我正在努力让Julia 0.6.0从我们的企业防火墙后面工作,该防火墙使用自签名证书进行身份验证。到目前为止,我一直无法找到正确的咒语来说服julia / gitlib2即使它是自签名证书也没问题。如果这有所作为,我在CentOS上。
无论我尝试过什么,都会发生以下错误。
INFO: Initializing package repository /home/tannerww/.julia/v0.6
INFO: Cloning METADATA from https://github.com/JuliaLang/METADATA.jl
ERROR: GitError(Code:ECERTIFICATE, Class:SSL, SSL error: ffffd900[10008] - X509 - Certificate verification failed, e.g. CRL, CA or signature check failed)
Stacktrace:
[1] macro expansion at ./libgit2/error.jl:99 [inlined]
[2] clone(::String, ::String, ::Base.LibGit2.CloneOptions) at ./libgit2/repository.jl:276
[3] #clone#100(::String, ::Bool, ::Ptr{Void}, ::Nullable{Base.LibGit2.AbstractCredentials}, ::Function, ::String, ::String) at ./libgit2/libgit2.jl:562
[4] (::Base.LibGit2.#kw##clone)(::Array{Any,1}, ::Base.LibGit2.#clone, ::String, ::String) at ./<missing>:0
[5] (::Base.Pkg.Dir.##8#10{String,String})() at ./pkg/dir.jl:55
[6] cd(::Base.Pkg.Dir.##8#10{String,String}, ::String) at ./file.jl:70
[7] init(::String, ::String) at ./pkg/dir.jl:53
[8] #cd#1(::Array{Any,1}, ::Function, ::Function, ::String, ::Vararg{String,N} where N) at ./pkg/dir.jl:28
[9] add(::String) at ./pkg/pkg.jl:117
我尝试过其他一些东西,但到目前为止没有任何影响。我在gitconfig中设置了sslCert和sslCAInfo来指向我们添加了公司证书的certs文件。我在gitconfig中也设置了sslVerify = false但GitLib2似乎忽略了它。
在julia方面,我找到了GitLib2.ProxyOptions结构,它包含一个在验证失败时调用的certificate_cb函数。我还没有弄清楚如何设置回调,因此它是全局使用的。如果我能做到这一点,我至少可以解决这个问题(也许)。
此时我对于接下来要尝试的内容感到很遗憾。
答案 0 :(得分:3)
LibGit2.set_ssl_cert_locations
对我不起作用,但我能够通过设置环境变量SSL_CERT_FILE
来实现它,例如,将以下内容添加到我的.bashrc中:
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt