You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

curl、浏览器及移动App发起HTTPS请求时密钥与证书来源问询

TLS握手与客户端证书/密钥的常见问题解答

先理清一个关键混淆点

你提到的.ssh目录是SSH协议的专属存储位置,和HTTPS使用的TLS协议完全是两套独立体系,二者没有关联,不用混为一谈。

核心问题解答

1. curl、浏览器、移动App从何处获取TLS相关密钥/证书?

这些程序不会自行生成用于验证服务器身份的核心证书,它们依赖的是操作系统预装或程序内置的根证书颁发机构(CA)根证书。服务器的公钥是随其TLS证书一起发送给客户端的,客户端通过根证书来校验服务器证书的合法性。

2. 根证书的存储位置

  • Windows:存放在系统证书管理器中,按下Win+R输入certmgr.msc即可打开,查看「受信任的根证书颁发机构」目录。
  • macOS:存储在系统钥匙串内,打开「钥匙串访问」应用,在「系统」钥匙串的「证书」分类下可找到受信任的根CA证书。
  • Linux:普遍存储在系统目录,比如Debian/Ubuntu系列为/etc/ssl/certs/,RHEL/CentOS系列为/etc/pki/ca-trust/extracted/pem/;部分独立程序(如某些浏览器)可能自带一套根证书。
  • 浏览器:Chrome、Edge等主流浏览器默认优先调用系统根证书库;Firefox可选择使用自身内置的根证书集合,存储在浏览器的个人配置目录中。
  • 移动App:
    • iOS:默认使用系统内置的根证书库,除非App做了特殊配置,否则不会自行维护。
    • Android:多数App调用系统根证书库(路径为/system/etc/security/cacerts/,需root权限才能直接查看);少数App会自行内置根证书,存储在自身安装目录内。

3. 执行curl https://whatever或打开HTTPS链接时,程序会自行生成密钥吗?

会生成,但并非用于验证服务器的根证书,而是临时会话密钥:

  • TLS握手阶段,客户端会随机生成一个对称密钥,用服务器证书中的公钥加密后发送给服务器,后续双方通信均通过该对称密钥加密。这个密钥是临时的,会话结束后立即销毁,不会在本地存储。
  • 而用于验证服务器证书的根证书,是提前预装在系统或程序中的,并非临时生成。

内容的提问来源于stack exchange,提问作者self_learner_localhost

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:05:04