我正在企图在我们公司使用自签名证书的防火墙后面使Julia 0.6.0运行。到目前为止,我还没有找到什么正确的方法来让julia/gitlib2认为这个证书是可信的,即使它是自签名的。如果需要,我可以提供我使用的CentOS系统信息。无论我尝试什么,都会出现以下错误信息。
我已经尝试了其他几种方法,但迄今为止都没有任何作用。我在gitconfig中设置了sslCert和sslCAInfo,指向包含我们公司证书的证书文件。我还在gitconfig中设置了sslVerify=false,但GitLib2似乎忽略了它。
在julia方面,我发现了GitLib2.ProxyOptions结构体,其中包含一个certificate_cb函数,当验证失败时会调用该函数。我还没有弄清楚如何设置回调函数以全局使用。如果我能做到这一点,至少可以解决问题(也许)。
目前我不知道接下来该尝试什么。
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似乎忽略了它。
在julia方面,我发现了GitLib2.ProxyOptions结构体,其中包含一个certificate_cb函数,当验证失败时会调用该函数。我还没有弄清楚如何设置回调函数以全局使用。如果我能做到这一点,至少可以解决问题(也许)。
目前我不知道接下来该尝试什么。
LibGit2.set_ssl_cert_locations("/etc/ssl/certs/ca-certificates.crt")
这行代码来解决问题。或者试试其他set_ssl_cert_locations
参数。 - Dan Getz