从GitLab调用Webhook会返回SSL错误

时间:2018-06-27 20:28:44

标签: gitlab

在GitLab 11.0.2中创建Webhook并对其进行测试时,我得到此错误:

Hook execution failed: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: tlsv1 alert internal error

Webhook URI正在使用具有公共证书(未自签名)的HTTPS。

SSL verification已被该Webhook禁用。

更新

我将openssl1.0.2g升级到openssl1.0.2o,但错误仍然存​​在。

然后我尝试运行:

openssl s_client -connect mywebhookhost:443

结果是:

depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Organization Validation CA - SHA256 - G2
verify error:num=20:unable to get local issuer certificate

更新2

/opt/gitlab/embedded/bin/ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'

返回

OpenSSL 1.0.2o 27 Mar 2018

更新3

已安装GlobalSign CA证书

 awk -v cmd='openssl x509 -noout -subject' '
>     /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt | grep GlobalSign

结果

subject=OU = GlobalSign ECC Root CA - R4, O = GlobalSign, CN = GlobalSign
subject=OU = GlobalSign ECC Root CA - R5, O = GlobalSign, CN = GlobalSign
subject=C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA
subject=OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
subject=OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign

2 个答案:

答案 0 :(得分:1)

this thread中,您的openssl太旧了

  

已经与TLS作战了几天,意识到我的GitLab在旧的debian8上运行,并已升级到debian9。所以现在。

     

python -c“ import ssl; print ssl.OPENSSL_VERSION”       OpenSSL 1.1.0f 2017年5月25日

因此开始检查/升级openssl,以使您的webhook脚本正常运行。

答案 1 :(得分:1)

我遇到了同样的问题,并解决了我需要在gitlab服务器上安装根证书的问题。

请参见here