AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1524395
Accepted
machineghost
machineghost
Asked: 2020-02-11 19:44:11 +0800 CST2020-02-11 19:44:11 +0800 CST 2020-02-11 19:44:11 +0800 CST

我的操作系统 (Linux) 如何使安全证书无效?

  • 772

我可以在非 Linux 机器(包括我的手机)上毫无问题地访问网站https://ce.uci.edu 。但是当我在我的 Linux 计算机上浏览它时,无论是在 Chrome 还是 Firefox 中,我都会收到错误“NET::ERR_CERT_AUTHORITY_INVALID”。

为什么我的操作系统会导致这种情况,而其他人不会?安全证书验证不应该独立于操作系统吗?

这使得与 IT 部门的谈话很尴尬,因为他们没有看到问题。

linux https
  • 1 1 个回答
  • 225 Views

1 个回答

  • Voted
  1. Best Answer
    user1686
    2020-02-11T21:52:40+08:002020-02-11T21:52:40+08:00

    服务器没有发送“中间”证书(又名“链”),所以客户端根本没有足够的信息来验证。

    Your desktop browser and/or your OS papers over this problem by caching all intermediate certificates it sees. When you visit this site, the browser uses its cache to complete the chain. Mobile browsers and non-browser apps generally don't do that.

    It makes for an awkward conversation with the IT department because they don't see a problem.

    They don't know how to check properly, beyond just opening the website in a browser. ("If it opens, it works.")

    Try giving them e.g. the scan results from https://www.ssllabs.com/ssltest/ which is a widely used website which tries to detect exactly this kind of misconfiguration among others.

    Isn't security certificate validation supposed to be independent of OS?

    The process itself – yes (mostly; it can get complicated).

    (让我们忽略诸如错误或时钟不匹配之类的琐碎问题。)

    “受信任的”根 CA 列表

    第一个区别是许多浏览器不使用自己的“受信任”证书颁发者列表——它们将这部分委托给操作系统,每个操作系统可能有不同的列表。微软和苹果当然有他们自己的操作系统受信任的发行程序,而大多数 Linux 发行版都使用 Mozilla 的列表。(我相信 Google 也有专门针对 Android 的,但不是针对桌面 Chrome 的。)

    • 例如,IE 和 Edge/UWP 始终使用 Windows 'SChannel' TLS 堆栈,包括其证书验证和根 CA 列表。
    • 尽管其余部分使用了自己的“BoringTLS”库,但 Chrome 还调用了 Windows TLS 证书函数(因此使用了 Windows CA 列表)。但是,它在基本 CA 检查之上应用自定义策略,例如根据签发日期拒绝某些签名类型。
    • Firefox 内置了 Mozilla CA 列表,并在其“NSS”库中内部执行所有操作。同样,它可以在标准验证之外添加策略限制。
      • 但在 Windows 上,除了内置列表之外,Firefox 还可以选择从操作系统列表中加载管理员安装的根 CA。(重要的是,即使手动启用此功能,它仍然不会加载默认 CA。)
      • 同样,在 Linux 上,一些 Linux 发行版修补 NSS(因此也包括 Firefox)以始终使用系统范围的 CA 列表而不是内部列表。这会加载默认系统 CA。
    • Windows 上的大多数非浏览器应用程序使用 SChannel,但有些使用 OpenSSL。让 OpenSSL 像 Chrome 那样遵循 Windows TLS 验证相对困难,因此这些应用程序经常捆绑自己的 CA 集(一个名为 的文件curl-ca-bundle.crt,它是 Mozilla 列表的副本),有时该文件会变得相当过时。
    • 然后是Java...

    缓存

    还有“中间缓存”的问题。商业 Web 证书始终使用至少 2 层系统颁发:根 CA 离线保护,只颁发“中间”证书,只有这些证书在线并允许颁发服务器证书。要通过验证,客户端需要了解整个“链”。

    通常客户端只有根 CA,服务器发送中间证书。但有时系统管理员会错误地配置服务器(或者无法正确配置),从而导致中间件无法发送,并且验证链被破坏。例如,您的站点使用由“InCommon RSA Server CA”颁发的证书,该证书比根 CA 低一级。但它本身并不发送 InCommon 证书,因此不可能将其与“受信任的根 CA”列表进行匹配。

    为了应对这样的错误,一些浏览器——以及一些操作系统——建立了以前见过的中间 CA 的缓存。(Windows 会缓存它必须自己下载的那些;Firefox 会缓存它所看到的每个中间体。)这意味着如果您访问的是配置错误的网站,成功/失败现在可能因用户而异,因为它们都有不同的缓存建立起来。

    当系统管理员的自动响应是“它在我的系统上运行良好”时,这变得特别有害,因为他们可能在不知不觉中让它只在他们的系统上运行。

    连锁建设

    有时,由于进行了“交叉签名”,多个链可能对同一个证书有效。例如,Let's Encrypt 证书可以植根于 IdenTrust 的“DST Root CA X3” ,或者它们可以植根于他们自己闪亮的“ISRG Root X1”,这取决于客户端拥有什么以及服务器发送的中间体(它可以发送多个)。

    一些美国 mil/gov 网站使用他们自己的联邦 PKI 证书,而不是来自商业 CA 的证书。Windows 是唯一带有“受信任”根 CA 的操作系统,除非您手动安装一些根 CA,否则其他浏览器不会接受它。根据您安装的根 CA,同一个网站可能有许多可能的信任路径,有时链中最多有 6-7 个证书。

    不同的浏览器——尤其是那些将验证卸载到操作系统的浏览器——在这种情况下可能会提出不同的可能链——例如,Windows 非常灵活,而 OpenSSL 在 1.1.x 之前曾经非常缺乏,Firefox 经历了3次重写它的链接构建代码。(当前使用的库,mozilla::pkix,一开始被称为“insanity::pkix”,这应该给你一个关于它有多么不必要的复杂性的提示。)

    权威信息访问

    我提到 Windows 能够自行下载那些缺少的中间体——尽管在技术上是一个标准功能,但由于隐私问题,一些浏览器完全拒绝实现它,而另一些浏览器则由于额外的不必要的复杂性而不理会它。这造成了 Windows 和 Linux 之间的另一个区别。

    (同样,此功能在美国“联邦 PKI”中大量使用,其中交叉签名很普遍,系统开始看起来更像一个网格而不是根层次结构。例如,组织 A 可能会识别链 A→B→C→ D,另一个可能会识别 B→A→C→D 或 B→C→D 具有完全相同的服务器证书 D.)

    • 10

相关问题

  • 如何让我的 Linux 机器看起来像是在运行 Windows?

  • 对于 cp 或 mv,是否有等同于 cd - 的东西?

  • 以 root 身份运行 docker 容器

  • 如何在域和 Linux 活动目录中启用指纹传感器

  • 如何在CentOS 7 中将Ctrl+C 永久更改为Ctrl+K?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve