2012-06-07 28 views

回答

0

儘管SSL/TLS doesn't strictly require certificates,HTTPS期望證書,因爲RFC 2818(特別是第3.1節)明確提到了X.509證書。

你可以在this answer on ServerFault找到更多的細節,以一個非常類似的問題。

無論您在沒有證書的情況下做什麼都將超出RFC 2818的範圍,但它可能仍然有效(並且有意義)。但是,其他實現可能會有所不同。 如果您選擇不使用證書,您仍然需要一種方法來驗證服務器的身份以確保通信的安全性。

編輯:

Oracle provider for JSSE不支持PSK密碼suties(或OpenPGP的證書)。離你最近的共享密鑰是Kerberos密碼套件。

+1

還需要注意的是,在TLS中引入了這些備選方法之前很久就已經推出了RFC 2818。因此,RFC明確提到了證書,因爲那時沒有其他可用的證書。此外,服務器身份可以通過知道共享密鑰(在PSK套件的情況下)或通過信任OpenPGP密鑰(當使用OpenPGP進行身份驗證時)來確認。 –

+0

@ EugeneMayevski'EldoSCorp,出於好奇,* SecureBlackbox *作爲JSSE API中的附加提供者集成(從而使這些密碼套件可供傳統Java應用程序使用),還是需要完全不同的API? – Bruno

+0

是的,它適用於基本密碼學,但對於SSL和其他高級別的東西,提供了不同的API,使用更簡單,更靈活。 –

1

不,你不能。您需要通過HTTPS進行連接的證書。您可以爲自己的目的使用自簽名證書。

-2

SSL需要證書,但您可以創建這樣的自簽名證書:

keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048 

此證書將被存儲在keystore.jks和有效期360天。

根據您的HTTP服務器實現,你通常是通過提供keystoreFile說法,和keystorePass設置從Apache Tomcat上的HTTP連接器所採取的密碼(屬性名稱指向密鑰庫,但他們在其他HTTP服務器的類似。

1

是的,您可以在SSL/TLS中使用多種不同的身份驗證方法,包括對稱密鑰(PSK密碼套件)和用戶名/密碼組合(SRP密碼套件)。 out SecureBlackbox產品(包括其Java版本)允許您在SSL/TLS通道的客戶端和服務器端都使用上述機制,這也適用於提供的HTTPS客戶端和服務器組件。

1

只看以下問題接受的答案:

How to ignore SSL certificate errors in Apache HttpClient 4.0

你只需要創建一個基本不檢查任何一個的TrustManager,只是相信一切。雖然我可以看到爲什麼這在開發過程中很有用,但這確實會否定SSL的目的。 TrustManager可以避免Man In The Middle攻擊,第三方作爲服務器來攔截和操縱數據等,因此,如果您不驗證服務器證書,任何人都可以提供「無效」證書!

+1

雖然(當然還有不安全),它仍在使用證書。這個問題似乎不想在安全性方面妥協,但希望使用(預共享)對稱密鑰。 – Bruno

+0

哦。舉起手來 - 我的錯誤。我誤解了這個問題 – Andy