2011-03-24 59 views
14

我在一個Java Web項目中使用OpenSSL和我不知道「OpenSSL的」東西。OpenSSL的與Java

如何集成的OpenSSL與我的項目?有沒有什麼好的基礎教程來學習這個?

+1

OpenSSL是一個C庫,以及一個尷尬一個在該使用。 [javax.crypto']有什麼問題(http://java.sun.com/j2se/1.5。0/docs/api /)或[bouncycastle](http://www.bouncycastle.org/)? – sarnold 2011-03-24 07:58:16

+0

這些免費提供???我沒有任何想法這是我問你的形式,Thanxx再次, – 123Ex 2011-03-24 08:19:51

+1

[Bouncycastle是MIT X11派生許可證](http://www.bouncycastle.org/licence。 HTML)(非常免費)。對javax.crypto軟件包沒有任何意見,當我試圖在Oracle網站上混淆時,我分心了。 – sarnold 2011-03-24 08:44:09

回答

3

您需要任何建議

1)回答一些重要的問題你真的想調用C++(本機)的實現形式中JAVA?

2)什麼是不能被JCE和BouncyCastle的

3來解決)只是限於使用OpenSSL的生成的證書的範圍,由解密的OpenSSL生成的文件中OpenSSL的特點是什麼?

+0

Thankxx您的支持這幫助了我很多 – 123Ex 2011-03-25 04:32:07

+3

只是FYI:OpenSSL是不是C++,這是顯而易見C. – foo 2013-01-02 03:23:30

+0

答到Q2:BC不支持HELLO爲DTLS(所以你會在任何通信電子 – osundblad 2017-11-21 13:55:08

21

首先:你需要什麼的圖書館嗎?

  • 如果您打算使用簡單的加密函數,請使用隨JDK部署的Java SE Security components
  • 如果您需要更高級的功能(如某些數字簽名格式等),使用加密庫(BouncyCastle是一年中最流行的一種)
  • 但是,如果你需要的是打開從Java的SSL連接代碼和手柄證書認證等,你不需要任何這些:
    • 如果您是在Java EE容器的工作,你的容器可以驗證傳入的SSL請求:這只是一個配置的事情
    • 另外,如果您需要連接到SSL端口,JDK將提供一些基本類來完成此操作(請參閱this example)。請注意,在這種情況下,您需要在您的java命令上設置一些系統屬性。

像這些屬性:

-Djavax.net.ssl.keyStore=keystore_path 
-Djavax.net.ssl.keyStorePassword=password 
-Djavax.net.ssl.trustStore=truststore_path 
-Djavax.net.ssl.trustStorePassword=trustword 
+0

Thanxx傢伙失去了第一條消息! !!這幫助我很多 – 123Ex 2011-03-25 04:30:46

2

最好的解決辦法:使用Java的內置安全簡單的任務,或者使用BouncyCastle的更高級的。

如果你必須使用從Java的OpenSSL,你有兩個選擇:

  1. OpenSSL的電話從Java中的過程。
  2. 做一個JNI層OpenSSL的,但是,似乎是時間對我來說完全是浪費。 這些都不是真正的好方法。
5

每個人都在談論BouncyCastle,但在我們的使用案例中,Gnu Crypto圖書館贏得了這一天。原生的Java。

我們的數據庫(塞)的花費時間計算哈希值的至少10%在Java中,對於某些客戶,僅僅是因爲這些實現是緩慢的。當每個Linux機器上都有可用的加密庫時,我很歡迎。我認爲一些Java7虛擬機將會包含更多的算法,但我還沒有看到它們。