2017-08-03 75 views
1

我试图让Julia 0.6.0从使用自签名证书进行身份验证的公司防火墙后面工作。到目前为止,我一直无法找到正确的咒语来说服julia/gitlib2即使它是自签名的,证书也可以。如果这有所作为,我在CentOS上。Julia证书错误

无论我尝试过什么,都会发生以下错误。

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来指向带有我们公司证书的证书文件。我也在gitconfig中设置了sslVerify = false,但似乎GitLib2忽略了这一点。

在茱莉亚方面,我发现了GitLib2.ProxyOptions结构,它包含一个certificate_cb函数,当验证失败时会调用它。我还没有想出如何设置回调,因此它被全球使用。如果我能做到这一点,我至少可以解决这个问题(也许)。

在这一点上我失去了接下来要做什么。

+0

综观(https://开头github.com/JuliaLang/julia/issues/13399),也许''LibGit2.set_ssl_cert_locations(“/ etc/ssl/certs/ca-certificates.crt”)这一行可以提供帮助。或者'set_ssl_cert_locations'的其他参数。 –

+0

@DanGetz谢谢,但我已经找到了一个,并尝试了各种可以将set_ssl_cert_locations的参数想出来的变体。我始终得到相同的错误。 –

回答

0

LibGit2.set_ssl_cert_locations并没有为我工作,但我能得到它通过设置环境变量SSL_CERT_FILE,如工作,把下面的到我的.bashrc:

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt