curl - 为什么我无法从服务器下载 https 对等证书颁发者无法识别。颁发者:CN=Cisco Umbrella Secondary SubCA
问题描述
在客户端上,我可以访问网站,但不能从服务器访问,我得到以下信息:
curl -v https://objectstorage.us-ashburn-1.oraclecloud.com
* About to connect() to objectstorage.us-ashburn-1.oraclecloud.com port 443 (#0)
* Trying 146.112.240.206...
* Connected to objectstorage.us-ashburn-1.oraclecloud.com (146.112.240.206) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* Server certificate:
* subject: CN=objectstorage.us-ashburn-1.oraclecloud.com,O="Cisco Systems, Inc.",L=San Francisco,ST=California,C=US
* start date: Dec 12 13:23:10 2020 GMT
* expire date: Dec 17 13:23:10 2020 GMT
* common name: objectstorage.us-ashburn-1.oraclecloud.com
* issuer: CN=Cisco Umbrella Secondary SubCA dfw-SG,O=Cisco
* NSS error -8179 (SEC_ERROR_UNKNOWN_ISSUER)
* Peer's Certificate issuer is not recognized.
* Closing connection 0
curl: (60) Peer's Certificate issuer is not recognized.
More details here: http://curl.haxx.se/docs/sslcerts.html
或使用较新的卷曲
curl: (60) SSL certificate problem: unable to get local issuer certificate
解决方案
原来问题出在“中间人”防火墙上。通常它会说该 URL 的颁发者是“Oracle”,但可疑的是它说的是“Cisco”。我的公司防火墙正在拦截呼叫并将它们重定向以添加标签,然后才最终允许它们工作(他们这样做)。或者它可能会拦截它们以显示“被阻止/恶意软件”页面。
它在我的本地计算机上工作,因为它是“公司发行的”,并且他们手动安装了显然不是常见的或标准浏览器接受的 cisco CA。
对我来说,修复是从这里下载“伞”CA:
并在服务器上使用它:
curl --cacert cisco_umbrella.cer https://somewebpage
(或将其添加到系统中您信任的 CA 证书中)。
同样奇怪的是,防火墙似乎拦截了一些 https 请求,但没有拦截其他请求。
(如果您将 DNS 设置为指向 opendns 服务器显然也可能会遇到此问题)
其他目击:
https://github.com/neherlab/covid19_scenarios/issues/516
https://community.letsencrypt.org/t/cert-is-suddenly-different-as-seen-in-browser-from-remote/87283
https://www.reddit.com/r/TOR/comments/f8cvq7/ubuntu_server_cannot_verify_certificate_issued_by/
推荐阅读
- python - 如果在 defaultdict 中找不到键,则返回最大键的值
- angular - 将输入的文本与组合框选项进行比较
- github - 跨 GitHub 组织的看板
- c# - 接口方法不能实现另一个接口
- jquery - 括号/数组的jQuery选择器问题
- python - 如何每天在运行时更新模型/向量?
- python - 在嵌套的 RFECV 中缩放、然后调整超参数的管道。我究竟做错了什么?
- botframework - 如何从 MS Teams 消息扩展的 Bot 实现类将“类似调试”的消息记录到浏览器控制台?
- java - 部署到 Heroku 时 Java REST api 不起作用
- multithreading - 在 goroutine 中使用 io.Copy 时锁定