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
    • 最新
    • 标签
主页 / server / 问题 / 876798
Accepted
Peter Stegnar
Peter Stegnar
Asked: 2017-10-05 01:48:57 +0800 CST2017-10-05 01:48:57 +0800 CST 2017-10-05 01:48:57 +0800 CST

如何使其在本地网络中工作证书固定(HPKP)和自签名证书?

  • 772

我需要在本地网络中使用 SSL,并且我想避免浏览器无效证书错误。

我的想法是生成自签名证书,然后使用证书固定(HPKP),以便告诉浏览器只有这个证书可以信任?

我目前正在探索与这个想法相关的所有选项。我已经使用具有值的自签名证书和 HPKP 标头(Public-Key-Pins)进行了测试,例如:

"pin-sha256="somedataencodedbase64=";pin-max-age=10;includeSubDomains"

浏览器不接受它作为安全。我仍然需要完成这个测试(使用不同的自签名证书,我需要确保正确计算 SPKI ..​​.

现在的问题是:

  • 为给定的本地主机名(例如 mylocalserver)颁发并固定在服务器响应中的自签名证书是否有效?这甚至会起作用吗?

  • 证书固定是否适用于本地主机名(这意味着它仅适用于域名)?

  • 固定证书是否必须首先由 CA 有效或推动(这意味着自签名证书不能固定 - 除非它们被添加到客户端的信任库中)?

  • 在本地拥有有效 SSL 的最简单的另一种方法是什么,所以我不需要配置客户端(客户端信任库)?

  • 我们可以将证书固定视为可信 CA 的替代品吗?我在某处读到它只是另外所以这意味着证书链首先需要有效,然后你可以固定它吗?

  • 我也越来越想这个想法是否可行。因为那时我们会看到更多使用这种技术。每个人都会生成自签名证书并将其固定...并在 CA 受信任的证书上节省几美元...或者我对整个概念的错误或正确之处是什么?

ssl
  • 3 3 个回答
  • 1238 Views

3 个回答

  • Voted
  1. Best Answer
    Steffen Ullrich
    2017-10-05T01:59:56+08:002017-10-05T01:59:56+08:00

    HPKP 不会取代正常的验证。相反,它是正常验证的补充。因此,如果由于证书是自签名证书而导致正常验证失败,HPKP 将无济于事。

    • 9
  2. drookie
    2017-10-05T03:34:28+08:002017-10-05T03:34:28+08:00

    为给定的本地主机名(例如 mylocalserver)颁发并固定在服务器响应中的自签名证书是否有效?这甚至会起作用吗?

    是的,HPKP 只是宣传给定 x.509 证书的签名。浏览器(或任何网络客户端)只是在规定的时间段内缓存它,然后在进一步访问期间验证此签名。

    证书固定是否适用于本地主机名(这意味着它仅适用于域名)?

    本地主机名是主机名,与其他主机名一样。即使它很短。即使它有一个本地 TLD。问题是 - 您的客户端如何解决它以及它在Host:HTTP 请求的标头中请求什么。如果它将主机foobar解析为正确的 IP,然后Host:在 HTTP 请求中提出此问题,并且自签名证书将其 CN 设置为foobar,则整个方案开始工作。

    固定证书是否必须首先由 CA 有效或推动(这意味着自签名证书不能固定 - 除非它们被添加到客户端的信任库中)?

    不,他们没有。但是,不知何故,您的 Web 客户端应该有一种信任服务器证书的方法。要么将其放入受信任的服务器证书列表中,要么创建例外(这实际上与以前相同),要么创建本地 CA 并使用本地 CA 证书签署服务器证书。自签名服务器证书只是一种跳过本地 CA 创建的方法。顺便说一句,所有官方CA 都使用自签名证书作为其公钥基础设施的根点。这是创建 CA 的合法方式。官方CA 只是将证书添加到最知名软件(如操作系统、浏览器等)的信任库中的CA。协商添加需要花钱,这就是为什么它们中的大多数不是免费的。

    在本地拥有有效 SSL 的最简单的另一种方法是什么,所以我不需要配置客户端(客户端信任库)?

    为您拥有的每项服务获取自签名证书。如果您只有很少的此类服务,则处理自签名证书,如果有几十个,则创建本地 CA。还有一种合法的免费方式来获得公开接受的 X.509 证书——只需使用LetsEncrypt证书颁发机构——它是免费的。但是,它们不提供通配符证书 - 带有 的证书*,如果您有大量服务,这可能是个问题。

    我们可以将证书固定视为可信 CA 的替代品吗?我在某处读到它只是另外所以这意味着证书链首先需要有效,然后你可以固定它吗?

    没有。当有人冒充目标 CA 时,证书固定是针对中间人攻击的对策。为此,“某人”必须已经将他的根 CA 证书放入您的信任库,但这是另一个问题。

    我也越来越想这个想法是否可行。因为那时我们会看到更多使用这种技术。每个人都会生成自签名证书并将其固定...并在 CA 受信任的证书上节省几美元...或者我对整个概念的错误或正确之处是什么?

    你绝对是。

    • 3
  3. Peter Stegnar
    2017-10-05T05:42:38+08:002017-10-05T05:42:38+08:00

    经过进一步的研究,我真的很想深入研究实际的规范。

    所以 RFC 7469 说:

    2.3.1。Public-Key-Pins 响应头域处理

    如果 UA 通过安全传输接收到包含符合第 2.1 节中指定的语法的 PKP 头字段的 HTTP 响应,并且没有潜在的安全传输错误或警告......

    所以现在官方很清楚,首先需要进行适当的 SSL 握手(包括验证认证链),然后才能进行 HPKP ......

    • 1

相关问题

  • 如何使用 Tomcat 5.5 更新 SSL 证书

  • 为 IIS6 自行生成 SSL 证书?

  • plesk 上的域和子域 ssl 访问

  • 如何设置 SSL 邮件服务器?

  • 如何通过 SVN 命令行接受 SSL 证书?

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve