2011-08-25 65 views
5

好的高级SSL gals和家伙 - 我会在两天后为此添加奖金,因为我认为这是一个复杂的主题,值得任何想法答案。高级SSL:中级证书颁发机构和部署嵌入式盒子

这里的一些假设只是:假设,或者更精确的有希望的猜测。想想这是一个脑筋急转弯,简单地说'这不可能'就是没有意义。

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

这里的情景:

我一个嵌入式Linux系统的开发,并想其Web服务器能够服务外的开箱,没有争议的SSL。这里的设计标准,我的目标:

必备品:

  • 我不能让用户加我的自产自销的CA证书,以他们的浏览器
  • 我不能有用户添加一个静态生成的(在制造时间)自签名证书到他们的浏览器
  • 我不能让用户在他们的浏览器中添加一个动态生成的(在引导时间)自签名证书。
  • 我无法默认使用HTTP并为SSL启用/禁用切换。它必须是SSL。
  • 嵌入式盒子和网络浏览器客户端都可能有或没有互联网接入,因此必须假设没有互联网接入才能正常工作。我们唯一可以依赖的根CA是与操作系统或浏览器一起提供的。让我们假设这个列表在整个浏览器和操作系统中基本上是相同的 - 即如果我们依赖它们,我们将有〜90%的成功率。
  • 我不能使用即时通讯操作,即'Fast Eddie的SSL证书清算中心 - 价格低至我们的服务器必须被黑客入侵!

很高兴富人:

  • 我不希望警告用户该证书的主机名不匹配的浏览器的主机名。我认为这是一件好事,因为这可能是不可能的。

不想:

  • 我不想出货同一组每盒静态键。 '不能'列表暗示的那种,但我知道风险。

是的是的,我知道..

  • 我可以做为用户提供一种机制来上传自己的CERT /关键,但我认为这是“高级模式”和超出范围这个问题。如果用户足够先进,拥有自己的内部CA或购买密钥,那么它们非常棒,我喜欢它们。

思想帽时间

我与SSL的经验已经生成的证书/密钥由“真正的”根,以及加紧我的比赛被签署使我自己的内部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

也许你仍然可以使用普通的HTTP将私有根CA或服务器自签名证书上传到用户的浏览器?它可以在服务器安装时以“一键式”方式完成(确定,不是一个但非常简单)。 “没有HTTP,没有证书安装”真的必须? – blaze

+1

不幸的是,'必须拥有'是基于对当前使用自签名证书进行点击的解决方案的否定回应。但在与我们的几位客户支持者交谈后,显然与拍摄客户的狗一样糟糕。这对于屁股来说是一种痛苦,而且对于Firefox对于自签名证书的日益增长的胡思乱想的态度没有帮助。这有点让我为明星拍摄,必须有更好的方式。 auth_digest没有解决它,SRP-TLS在某些方面更加接近,但在支持方面它仍然是前卫。 – synthesizerpatel

回答

6

基本上,不,你不能这样做,你希望。

你不是一个中级的SSL权威,你不能成为一个。即使你是这样,你也绝对不可能分发给消费者一切必要的东西,为任何域创建新的有效证书,这在所有浏览器中都是默认信任的。如果这是可能的话,整个系统就会崩溃(不是说它没有问题)。

通常情况下,您不能通过公共机构签署颁发给IP地址的证书,尽管技术上没有任何阻止。

请记住,如果您真的在除防篡改安全加密模块之外的任何其他位置分发私钥,则您的设备不会真正通过SSL进行保护。任何拥有其中一台设备的人都可以使用私钥(特别是在无密码的情况下)并在所有设备上执行有效的,签名的MITM攻击。你不鼓励偶然的窃听,但这就是它。

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

支付更多证书并不能真正使他们更合理。在公司成为根CA的时候,这远不是一夜之间的操作。您应该检查并确定StartSSL是否适合您的需求,因为它们不以每个证书为基础收费。

+0

关于'只与物理硬件一样安全'的问题,我会承认我同意并理解这个方面。对唯一密钥的需求是为了避免在每个盒子上部署单个有效证书/密钥的情况(导致主机不匹配问题),因为一旦你从一个盒子中获得专用密钥,就可以解密每个盒子。关于中级证书费用 - 我有些猜测会是这种情况。我希望EFF会启动一个非营利CA. – synthesizerpatel

+0

如果你正在寻找一个低成本的CA证书,你需要StartSSL(我以为你在早些时候用“快速eddie's ...”的东西来挖掘他们,所以我没有提到他们)。他们的模型验证您,然后让您根据需要发出尽可能多的证书。您的使用案例可能与他们的条款有关,但我认为这是正确的一面。自定义子域模型可能适用于您的用例吗? –

+1

这已经死了。因为没有技术解决方案,你将不得不在销售或支持中处理它。有人需要告诉客户什么是ssl选项,以鼓励他们获得非自签名证书。哎呀,我敢肯定你可以与某人合作,在应用程序中提供该服务,并将其作为退货的一部分。 – NotMe