好的高级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
好吧,你这么聪明
最有可能的,我复杂的解决方案是行不通的 - 但它会是如果是的话,那很好。你有类似的问题吗?你做了什么?什么是折衷?
也许你仍然可以使用普通的HTTP将私有根CA或服务器自签名证书上传到用户的浏览器?它可以在服务器安装时以“一键式”方式完成(确定,不是一个但非常简单)。 “没有HTTP,没有证书安装”真的必须? – blaze
不幸的是,'必须拥有'是基于对当前使用自签名证书进行点击的解决方案的否定回应。但在与我们的几位客户支持者交谈后,显然与拍摄客户的狗一样糟糕。这对于屁股来说是一种痛苦,而且对于Firefox对于自签名证书的日益增长的胡思乱想的态度没有帮助。这有点让我为明星拍摄,必须有更好的方式。 auth_digest没有解决它,SRP-TLS在某些方面更加接近,但在支持方面它仍然是前卫。 – synthesizerpatel