2011-08-25 68 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