在 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
已禁用此网络钩子。
更新
我将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
已安装全球签名 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
从这个线程来看,你的openssl看起来太旧了
已经与TLS斗争了几天,意识到我的GitLab运行在旧的debian8上,升级到debian9。所以现在。
Python -C "import SSL;打印单证。OPENSSL_VERSION" OpenSSL 1.1.0f 2017年5月25日
因此,请开始检查/升级openssl,以便您的Webhook脚本正常运行。
我有同样的问题,为了解决我需要在 gitlab 服务器上安装根证书。
请参阅此处操作方法。