2011-11-14 27 views
1

目標:一個網絡服務,安全,將由兩個本地網絡外的客戶端調用。保護Web服務最顯而易見的方式是通過https,從某個CA獲取證書。問題是這是一個愚蠢的浪費金錢。 CA的重點在於它是一個公衆信任的權威機構,因此我不必爲每個想要使用我的網頁的人驗證我的身份,CA就是爲他們做的。但是,當我與少數知名客戶打交道時,而不是廣大公衆,我不需要任何人爲我擔保。我們可以通過我們自己的渠道進行驗證。建立一個安全的網絡服務,而不購買(和更新)證書

有什麼辦法可以做到這一點?理想情況下,我可以使用由認證服務的人識別的證書來操作https,如果沒有人認可該證書是有效的,我不在乎。無論如何,我不希望他們撥打這項服務。在B2B數據傳輸(固定端點通信,而不是公共消費的服務)中,這應該是一個相當普遍的需求,如果您傳輸實際文件很容易(PGP風格的加密讓您只需驗證和導入彼此的鑰匙直接)。但是,我不清楚在網絡會話中這是可能的。它肯定應該是,如果不是的話。我發現了一些自簽名證書的文檔,但它們似乎僅用於開發目的,或僅用於內部使用,並且快速過期或需要在同一網絡上。

有沒有一個很好的方法來實現這一目標?或者我將不得不加密Web服務調用的內容?後者不太理想,因爲它會要求這個服務的用戶向他們的客戶端應用程序添加加密代碼(假設他們正在一個平臺上構建這些代碼,這個平臺可以很容易地添加對通用加密例程的支持,可能或可能不會真正的)而不僅僅依賴於標準的https框架。

我正在使用Windows(IIS/ASP.NET)平臺,如果這有什麼區別。

回答

1

創建您自己的CA並生成自簽名證書是最好的選擇。沒有理由爲什麼他們必須僅用於開發,或快速到期。你會控制這個。

當我在Java環境中實現它時,我發現的最有用的資源是Baban's Weblog。您可能會找到與您的IIS環境更相關的資源。

+0

好的,這聽起來不錯,但有什麼想法如何實際完成這個?就像我說過的,我能找到的所有文章都是指僅限於開發的證書,或者似乎談論設置一些企業CA並頒發僅在本地工作的證書。我需要通過我們的網絡以外的系統訪問它。 – tmcgill

0

提供一個安全的服務,您不需要任何證書,通過HTTPS鏈接。你是對的,就你而言,證書對你什麼都不做。如果你的訪客堅持證書,那麼我第二@ sudocode的答案。

+1

難道不是說從這裏到那裏,你不需要汽油,只有一輛汽車?我很確定,證書交換是TLS(以及https)會話的定義的一部分。我錯了嗎? – tmcgill

+0

有一個優秀的明喻:-)但是你不需要證書。 –

+0

謝謝。 :)但我仍然沒有看到這是可能的。 HTTPS是HTTP + SSL/TLS。從維基百科對TLS的描述: – tmcgill

0

我們的舊授權服務使用證書,但在重建它時,我們擺脫了證書並轉而使用亞馬遜ec2樣式的安全服務。

+0

我沒有使用過EC2,那會是什麼樣的安全機制? – tmcgill