高级SSL:中间证书颁发机构和部署嵌入式框

时间:2011-08-25 20:24:49

标签: security ssl ssl-certificate certificate-authority

Ok高级SSL女士和家伙 - 我会在两天后给你增加赏金,因为我认为这是一个复杂的主题,应该得到任何思想回答的人的奖励。

这里的一些假设只是:假设,或更确切地说是有希望的猜测。考虑这是一个脑筋急转弯,简单地说“这是不可能的”是错过了重点。

如果你做了类似的事情,欢迎提供替代和部分解决方案,个人经验。即使我的整个计划存在缺陷,我也希望从中学到一些东西。

以下是该方案:

我正在开发嵌入式Linux系统,并希望其Web服务器能够提供开箱即用,无需麻烦的SSL。这是我的目标设计标准:

Must Haves:

  • 我不能让用户将我自己开发的CA证书添加到他们的浏览器
  • 我无法让用户将静态生成的(在mfg时间)自签名证书添加到浏览器中
  • 我无法让用户在浏览器中添加动态生成的(启动时)自签名证书。
  • 我无法默认使用HTTP并启用SSL启用/禁用切换功能。它必须是SSL。
  • 嵌入式复选框和网络浏览器客户端都可能具有或不具有互联网访问权限,因此必须假设无需访问互联网即可正常运行。我们可以依赖的唯一根CA是随操作系统或浏览器一起提供的CA.让我们假设该列表在浏览器和操作系统中“基本上”相同 - 即如果我们依赖它们,我们的成功率将达到约90%。
  • 我不能使用夜间操作,即' Fast Eddie的SSL证书清算所 - 价格低这些我们的服务器必须被黑客入侵!'

很高兴Haves:

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

不想要:

  • 我不想为每个盒子运送相同的静态密钥集。 “不能”列表暗示的那种,但我知道风险。

是的,我知道..

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

思考上限时间

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

我遇到了intermediate certificate authority的描述,这让我想到了潜在的解决方案。我可能已经从“简单的解决方案”转变为“梦魇模式”,但是有可能:

疯狂的想法#1

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

好的,你很聪明

最有可能的是,我错综复杂的解决方案不起作用 - 但如果确实如此,它会很棒。你有类似的问题吗?你做了什么?有什么权衡?

1 个答案:

答案 0 :(得分:7)

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

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

您通常无法让公共机构签署颁发给IP地址的证书,但在技术上没有任何阻止它。

请记住,如果您确实在除防篡改的安全加密模块之外的任何设备中分发私钥,则您的设备并非真正受SSL保护。拥有其中一个设备的任何人都可以提取私钥(特别是如果它是无密码的)并对您的所有设备进行有效的签名MITM攻击。你不鼓励偶然窃听,但那是关于它的。

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

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