我们有一个面向公众的开发服务器,它需要 SSL 来实现特定功能。
然而,任何使用 SSL 的东西都会返回
curl: (60) Peer's certificate issuer has been marked as not trusted by the user.
这不是一个“只需在 yum 上使用 ssl-verify=false,或在 curl 请求上使用 --insecure”的问题。
我意识到我可以在这两个服务器上都这样做来拨打电话。但最终 - 我必须能够使用 SSL,因为我们使用这些服务器进行的开发需要它。
CA 似乎已过期。我尝试了以下操作 https://access.redhat.com/solutions/1549003
我曾尝试自己导入 cacert.pem 文件(但我承认,我在这方面缺乏知识,所以我可能做错了)
我已经检查了服务器上的日期/时间,以确保这不是问题。
我无法让“网络管理员”(这个术语用得比较宽泛,因为他会第一个承认自己对 Linux 一无所知——纯粹的微软)甚至费心将 Centos 重新安装到这台机器上,所以我需要找到一个解决方案。
任何帮助都将不胜感激。以下是我们在尝试执行 yum、curl 和运行 certbot --apache 等操作时得到的结果的一些示例
百胜
[root@localhost work]# yum reinstall mc
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Could not get metalink https://mirrors.fedoraproject.org/metalink?repo=epel-
7&arch=x86_64 error was
14: curl#60 - "Peer's certificate issuer has been marked as not trusted by
the user."
* base: repos.dfw.quadranet.com
* epel: mirror.compevo.com
* extras: repos-tx.psychz.net
* updates: mirror.us.oneandone.net
* webtatic: repo.webtatic.com
https://us-east.repo.webtatic.com/yum/el7/x86_64/repodata/repomd.xml: [Errno
14] curl#60 - "Peer's certificate issuer has been marked as not trusted by
the user."
Trying other mirror.
It was impossible to connect to the CentOS servers.
This could mean a connectivity issue in your environment, such as the
requirement to configure a proxy,
or a transparent proxy that tampers with TLS security, or an incorrect
system clock.
You can try to solve this issue by using the instructions on
https://wiki.centos.org/yum-errors
If above article doesn't help to resolve this issue please use
https://bugs.centos.org/.
https://uk.repo.webtatic.com/yum/el7/x86_64/repodata/repomd.xml: [Errno 14]
curl#60 - "Peer's certificate issuer has been marked as not trusted by the
user."
Trying other mirror.
https://sp.repo.webtatic.com/yum/el7/x86_64/repodata/repomd.xml: [Errno 14]
curl#60 - "Peer's certificate issuer has been marked as not trusted by the
user."
Trying other mirror.
https://repo.webtatic.com/yum/el7/x86_64/repodata/repomd.xml: [Errno 14]
curl#60 - "Peer's certificate issuer has been marked as not trusted by the
user."
Trying other mirror.
卷曲
[root@localhost work]# curl https://www.google.com
curl: (60) Peer's certificate issuer has been marked as not trusted by the
user.
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.
CERTBOT(用于 LETSENCRYPT SSL 证书请求)
[root@localhost work]# sudo certbot --apache
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter
'c' to cancel): [email protected]
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
An unexpected error occurred:
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
(_ssl.c:579)
Please see the logfiles in /var/log/letsencrypt for more details.
答案1
想要回答并关闭此问题以供将来参考。
事实证明,我们确实有一个代理服务器在捣乱。我工作的地方就遇到了一个相当有趣的情况(3 家公司,其中 2 家由我公司的一个所有者拥有,与我自己的公司无关)。
原来,B 公司的系统管理员多年前就将代理服务器放入了循环中,然后就完全忘记了。我公司的系统管理员接管了所有公司的整个系统管理员角色。没有人告诉他有关代理的事情。它已经运行多年了,但没有人知道。
答案2
我这里是在CentOS7,运行pyspider
显示错误:
Exception HTTP 599 Peer's certificate issuer has been marked as not trusted by the user
并按照以下步骤进行修复:
更改无效的 libcurl .so 文件:
/usr/lib64/libcurl.so.4 -> libcurl.so.4.3.0_openssl
有效的 libcurl .so 文件:
/usr/lib64/libcurl.so.4 -> libcurl.so.4.3.0
并重新安装 pycurl:
pip3 uninstall pycurl
export PYCURL_SSL_LIBRARY=nss
export LDFLAGS=-L/usr/local/opt/openssl/lib;export CPPFLAGS=-I/usr/local/opt/openssl/include;pip install pycurl --compile --no-cache-dir
详细描述参考另一篇 SO 帖子
答案3
问题的鉴别诊断
- 自签名证书已过期
- 存储库使用 https 链接进行下载
- 未针对 baseurl 使用的给定链接配置代理服务器
- 下载包时未配置代理 http 和 https
如何缓解对等证书问题假设我正在使用 remi-php74 repo 安装 PHP 7.4,可以做些什么来避免所有诊断方面的担忧:>
自签名证书已过期
yum-config-manager --save --setopt=remi-php74.skip_if_unavailable=true
yum-config-manager --save --setopt=remiphp74.ssl_check_cert_permissions=false
存储库使用 https 链接进行下载
grep ‘baseurl’ /etc/yum.repos.d/* | php 命令
六、/etc/yum.repos.d/remi-php74.repo
编辑 URL 注释掉使用 https 的 URL,取消注释 baseurl 或 mirrorlist 的 http,以确保不会出现对等证书问题
未针对 baseurl 使用的给定链接配置代理服务器
yum-config-manager --save --setopt=remiphp74.proxy= https://proxy_ip:proxy_port
下载包时未配置代理 http 和 https
导出 http_proxy=http://proxy_ip:proxy_port
导出 https_proxy=https://proxy_ip:proxy_port
如果遇到特定的 repo 及其可用的安装列表,需要逐步做什么:>
使用以下方式检查可用的 repo:>
Yum repolist
检查所需的 repo 并禁用所有其他 repo:>
yum list available --disablerepo=* --enablerepo=remi-php74
yum-config-manager --enable remi-php74
如果对等证书问题仍然存在,请设置 repo 选项:>
yum-config-manager --save --setopt=remi-php74.skip_if_unavailable=true
yum-config-manager --save --setopt=remiphp74.ssl_check_cert_permissions=false
如果 URL 存在任何问题,请检查基本 URL 是否为 http,然后在所需 repo 的 repo 文件中取消选中它们:>
grep 'baseurl' /etc/yum.repos.d/* | grep php
编辑所需的存储库以使用 http 更改基本 URL,以避免对等证书问题
vi /etc/yum.repos.d/remi-php74.repo
安装所需的软件包:>
Yum install php
此过程适用于所有其他使用所需存储库的安装,如果问题是软件包的安装和对等证书问题,则无需获取 CA 证书,如果无法解析 URL 的进一步问题仍然存在,则还需要添加 DNS,因为 google dns 有助于更好地解析下面的软件包所使用的 baseurls(如果配置的话)。
在 /etc/resolv.conf 中添加以下条目
nameserver 8.8.8.8
nameserver 8.8.4.4