2011-03-24 12 views
14

Bir Java web projesinde OpenSSL kullanmalıyım ve 'OpenSSL' hakkında hiçbir şey bilmiyorum.Java ile OpenSSL

OpenSSL'yi projemle nasıl bütünleştirebilirim? Bunu öğrenmek için iyi bir temel öğretici var mı?

+1

OpenSSL bir C kütüphanesi ve kullanımı için garip bir model. ['Javax.crypto'] ile ilgili sorunun cevabı (http://java.sun.com/j2se/1.5.0/docs/api /) veya [bouncycastle] (http://www.bouncycastle.org/)? – sarnold

+0

Bunlar serbestçe kullanılabilir mi? Size bir soru sormadım, Thanxx tekrar, – 123Ex

+1

[Bouncycastle MIT X11 türetilmiş lisans] (http://www.bouncycastle.org/licence). html) (çok ücretsiz). Javax.crypto' paketi hakkında hiçbir fikrim yok, Oracle web sitesinde dolaşmaya çalışırken dikkatimi dağıttım. Desteğiniz için – sarnold

cevap

3

herhangi önerileri

1) önce birkaç önemli sorulara cevap gerekir Eğer gerçekten C++ (yerli) uygulaması formu JAVA aramak ister misin?

2) Openssl tarafından oluşturulan dosyaları şifresini, sadece Openssl tarafından üretilen sertifikaları kullanarak sınırlı kapsamı mi) MKEİ'nin ve

3 BouncyCastle

tarafından çözülemeyen Openssl içinde özellikleri nelerdir?

+0

Thankxx desteğiniz bu bana çok yardımcı olur – 123Ex

+3

sadece FYI: OpenSSL C++ değil, düz C 0: – foo

+0

Q2'ye cevap ver: BC DTLS için HELLO'yu desteklemiyor (bu yüzden – osundblad

21

Öncelikle kütüphaneye ne için ihtiyacınız var?

  • Basit şifreleme işlevlerini kullanacaksanız, JDK ile dağıtılan Java SE Security components'u kullanın.
  • (örneğin vb bazı dijital imza biçimleri gibi) daha gelişmiş işlevleri gerekiyorsa, bir şifreleme kütüphane ne gerek Java SSL bağlantılarını açmak için ise,
  • (BouncyCastle en popüler biridir) Ama kullanmak Eğer bir Java EE kapsayıcı üzerinde çalışıyorsanız, sizin konteyner gelen SSL isteklerine doğrulayabilir
    • : kodu ve sap sertifikaları kimlik doğrulama, vs, bunlardan herhangi gerek kalmayacaktır o konfigürasyonun meselesi
    • Ayrıca, bir SSL bağlantı noktasına bağlanmanız gerekirse, JDK bunu yapmak için bazı temel sınıflar sunar (bkz. this example). Bu durumda, java komutunuzda bazı sistem özelliklerini ayarlamanız gerektiğini unutmayın. Bu özelliklerin gibi

:

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

Thanxx beyinde herhangi bir iletişimde ilk mesajı kaybedeceksiniz! Bu bana çok yardımcı oluyor – 123Ex

2

En çözüm: Kullanım Java basit görevler için güvenlik dahili veya daha gelişmiş olanlar için BouncyCastle kullanın. Java bir süreç olarak

  1. Çağrı openssl: Eğer Java dan OpenSSL'i kullanmak ZORUNDA Eğer

    size 2 seçenek var.

  2. OpenSSL'ye bir JNI katmanı yapın, ancak bu bana tam bir zaman kaybı gibi görünüyor. Bunların hiçbiri bunu yapmanın gerçekten iyi bir yolu değildir.
5

Herkes, BouncyCastle hakkında konuşur, ancak kullanım durumumuzda Gnu Crypto kütüphanesi günü kazandı. Yerli java.

Veritabanımız (aerospike), java'daki zaman hesaplama karmalarının en az% 10'unu, bazı müşteriler için basitçe bu uygulamalar yavaş olduğundan harcıyor. Her Linux makinesinde bulunan kripto kütüphanelerinin yerel bir uygulaması olduğunda memnuniyet duyarım. Bazı Java7 VM'lerinin daha fazla algoritma içereceğini düşündüm, ama henüz onları görmedim.