7

好的,高级 SSL 女士们和伙计们——我将在两天后为此增加赏金,因为我认为这是一个复杂的主题,任何认真回答的人都值得奖励。

这里的一些假设很简单:假设,或者更准确地说是充满希望的猜测。认为这是一个脑筋急转弯,简单地说“这不可能”是没有意义的。

如果您做过“类似”的事情,欢迎替代和部分解决方案,个人经验。即使我的整个计划有缺陷,我也想从中学到一些东西。

这是场景:

我正在嵌入式 Linux 系统上进行开发,并希望它的 Web 服务器能够提供开箱即用、无障碍的 SSL。这是我的目标设计标准:

必备品:

  • 我不能让用户将我自己的 CA 证书添加到他们的浏览器
  • 我不能让用户将静态生成的(在制造时)自签名证书添加到他们的浏览器
  • 我不能让用户将动态生成的(在启动时)自签名证书添加到他们的浏览器。
  • 我不能默认使用 HTTP 并为 SSL 启用/禁用切换。它必须是 SSL。
  • 嵌入式盒子和网络浏览器客户端可能有也可能没有互联网访问,因此必须假设在没有互联网访问的情况下正常运行。我们可以依赖的唯一根 CA 是操作系统或浏览器附带的根 CA。让我们假设这个列表在浏览器和操作系统中“基本”是相同的——也就是说,如果我们依赖它们,我们将有大约 90% 的成功率。
  • 我不能使用夜间操作,即“ Fast Eddie 的 SSL 证书票据交换所”——价格如此之低,我们的服务器必须被黑客入侵!'

很高兴拥有:

  • 我不希望用户警告证书的主机名与浏览器中的主机名不匹配。我认为这是一个不错的选择,因为它可能是不可能的。

不要:

  • 我不想为每个盒子发送相同的一组静态键。“不能”列表暗示了一种,但我知道风险。

是的,是的,我知道..

  • 我可以并且确实为用户提供了一种机制来上传他们自己的证书/密钥,但我认为这种“高级模式”超出了这个问题的范围。如果用户足够先进,可以拥有自己的内部 CA 或购买密钥,那么他们就很棒,我喜欢他们。

思考时间

我在 SSL 方面的经验是生成由“真实”root 签名的证书/密钥,以及通过制作自己的内部 CA、在内部分发“自签名”证书来加强我的游戏。我知道您可以链接证书,但我不确定操作顺序是什么。即浏览器是否“向上走”链看到有效的根 CA 并将其视为有效证书 - 或者您是否需要在每个级别进行验证?

我遇到了中间证书颁发机构的描述,这让我想到了潜在的解决方案。我可能已经从“简单的解决方案”变成了“噩梦模式”,但是否有可能:

疯狂的想法#1

  • 获取由“真实”CA 签名的中间证书颁发机构证书。( ICA-1 )
    • ROOT_CA -> ICA-1
  • 该证书将在制造时用于为每个盒子生成一个唯一的无密码子中间证书颁发机构对。
    • ICA-1 -> ICA-2
  • 使用 ICA-2 生成唯一的服务器证书/密钥。这里需要注意的是,您能否为 IP(而不是 DNS 名称?)生成密钥/对?即,一个潜在的用例是用户最初通过http 连接到盒子,然后使用重定向URL 中的IP 将客户端重定向到SSL 服务(这样浏览器就不会抱怨不匹配)。这可能是让房子倒闭的卡片。由于必须在任何重定向发生之前建立 SSL 连接,我可以看到这也是一个问题。但是,如果这一切都神奇地起作用了
  • 然后,我可以在盒子更改 IP 的任何时候使用 ICA-2 生成新的证书/密钥对,这样当网络服务器恢复时,它总是有一个“有效”的密钥链。
    • ICA-2 -> SP-1

好吧,你真聪明

最有可能的是,我复杂的解决方案不起作用——但如果它起作用了那就太好了。你有过类似的问题吗?你做了什么?取舍是什么?

4

1 回答 1

8

基本上,不,你不能按照你希望的方式做到这一点。

您不是 SSL 中级权威,也无法成为其中的一员。即使你是,你也不可能被允许向消费者分发为任何域创建新的有效证书所需的一切,默认情况下在所有浏览器中都受信任。如果这是可能的,整个系统就会崩溃(并不是说它还没有问题)。

您通常无法让公共机构签署颁发给 IP 地址的证书,尽管在技术上没有什么可以阻止它。

请记住,如果您真的在防篡改安全加密模块中分发私钥,那么您的设备并没有真正受到 SSL 的保护。任何拥有其中一台设备的人都可以提取私钥(尤其是在没有密码的情况下),并对您的所有设备进行有效的、签名的 MITM 攻击。你不鼓励随便偷听,但仅此而已。

您最好的选择可能是为有效的 Internet 子域获取并签署证书,然后让设备为该子域应答。如果它是传出路径中的网络设备,您可能可以做一些路由魔术来使其响应域,类似于有多少围墙花园系统工作。您可以为每个系统提供类似“system432397652.example.com”的内容,然后为与该子域对应的每个框生成一个密钥。将直接 IP 访问重定向到域,或者让盒子拦截请求,或者在 Internet 上进行一些 DNS 欺骗,以便域为每个客户端解析到正确的内部 IP。为此使用单一用途的主机域,不要与您的其他商业网站共享。

为证书支付更多费用并不能真正使它们或多或少合法。当一家公司成为根 CA 时,它远非一夜之间的操作。您应该检查StartSSL是否适合您的需求,因为它们不会按证书收费。

于 2011-08-25T20:48:55.537 回答