- 在git clone 或 gitlab ci拉取仓库代码时候报错如下:

1 |
Peer's certificate issuer has been marked as not trusted by the user |
原因:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
此种情况多发生在自签名的证书,报错含义是签发证书机构未经认证,无法识别。 解决办法是将签发该证书的私有CA公钥cacert.pem/.crt文件内容,追加到/etc/pki/tls/certs/ca-bundle.crt 注:如果crt公钥不行,可以将crt转换为pem公钥(一般不用转,转了也一抹一样) openssl x509 -in mycert.crt -out mycert.pem -outform PE .cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。 .pem跟crt/cer的区别是它以Ascii来表示。 pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式 p10是证书请求 p7r是CA对证书请求的回复,只用于导入 p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。 #将cer文件转换为pem openssl x509 -inform der -in pds.cer -out certificate.pem |


1 2 |
注意:如果发现自己没有pem文件,可以通过crt转换来获得 参考文章:https://blog.csdn.net/u010358168/article/details/83508851 |
2.SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
此问题多是由于本地CA证书库过旧,导致新签发证书无法识别。 经排查,github.com证书是由GTE CyberTrust Root签发,现行证书时间是: 1.不早于(1998/8/13 0:29:00 GMT) 2.不晚于(2018/8/13 23:59:00 GMT) 而在我们的Redhat5.3系统中ca-bundle.crt文件发现,GTE CyberTrust Root的时间已经过期。 代码如下: Issuer: C=US, O=GTE Corporation, CN=GTE CyberTrust Root Validity Not Before: Feb 23 23:01:00 1996 GMT Not After : Feb 23 23:59:00 2006 GMT 解决办法是更新本地CA证书库。 方法一: 下载http://curl.haxx.se/ca/cacert.pem 替换/etc/pki/tls/certs/ca-bundle.crt 方法二: 使用update-ca-trust 更新CA证书库。(CentOS6,属于ca-certificates包) |
3.unknown message digest algorithm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
此问题多由证书本地openssl不能识别SSL证书签名算法所致。www.alipay.com 使用了SHA-256 RSA 加密算法。而openssl在OpenSSL 0.9.8o才加入此算法。 解决办法是升级本地openssl。 在我的操作系统RedHat5.3中,yum 升级openssl到openssl-0.9.8e-22.el5 就可以识别SHA-256算法。原因是Redhat每次都是给0.9.8e打补丁,而不是直接更换版本。在srpm包中我找到了这个补丁。 代码如下: Summary: The OpenSSL toolkit Name: openssl Version: 0.9.8e ... Patch89: openssl-fips-0.9.8e-ssl-sha256.patch |
- 本文固定链接: https://www.yoyoask.com/?p=5765
- 转载请注明: shooter 于 SHOOTER 发表