2011-01-09 15 views
10

मैं एक ताजा पर हूँ Ubuntu के स्थापित अभी स्थापित होने OpenJDK:क्या जावा एसएसएल उबंटू पर ओपनजेडीके में टूटा हुआ है?

OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode) on Ubuntu 64 bit 10.10 

अगर यह प्रासंगिक है सुनिश्चित नहीं हैं, लेकिन मैं इसे VMWare संलयन के भीतर से चल रहा हूँ।

निम्न पंक्ति:

javax.net.SSLContext.getDefault(); // same as getInstance("Default") 

throws the following exception: 

java.net.SocketException: java.security.NoSuchAlgorithmException: Default SSLContext not available 

मेरे सहयोगियों और मैं कई मशीनों पर इस की कोशिश की है, Ubuntu के सभी ताजा इंस्टॉल, और इस मिलती रहती है। मुझे सलाह मिली ("टीएलएसवी 1") का प्रयास करने की सलाह दी गई थी, लेकिन इसने एक ही त्रुटि फेंक दी। ऐसा लगता है कि काम नहीं करने के लिए वास्तव में कुछ मौलिक लगता है, इसलिए मुझे लगता है कि हमें कुछ गलत करना होगा।

उत्तर

6

गुइडो का जवाब मुझे सही दिशा में इशारा किया। यह सिर्फ एक मामला है:

sudo apt-get install libbcprov-java 
2

ओबंटू के साथ भेजे गए ओपनजेडके में एक जेसीई प्रदाता गायब हो सकता है; http://www.bouncycastle.org/ (यह एक ओपन सोर्स प्रोजेक्ट जेसीई लागू करने) से बाउंसीकैसल क्रिप्टो एपीआई डाउनलोड करें और इसे अपने प्रोजेक्ट क्लासपाथ में डालें।

फिर अपने वर्ग में निम्नलिखित नमूना कोड का संदर्भ लें:

 
static { 
    Security.addProvider(new BouncyCastleProvider()); 
} 

public SSLSocket getSSLSocket() { 

    // Load the Keystore 
    KeyStore ks = KeyStore.getInstance(keystoreType); 
    ks.load(new FileInputStream(this.keyStorePath),this.keyStorePass.toCharArray()); 

    // Get a KeyManager and initialize it 
    KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); 
    kmf.init(ks, this.keyStorePass.toCharArray()); 

    // Get a TrustManagerFactory and init with KeyStore 
    TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); 
    tmf.init(ks); 

    // Get the SSLContext to help create SSLSocketFactory 
    SSLContext sslc = SSLContext.getInstance("TLS"); 
    sslc.init(kmf.getKeyManagers(), null, null); 

    // Get SSLSocketFactory and get a SSLSocket 
    SSLSocketFactory sslsf = sslc.getSocketFactory(); 
    SSLSocket socket = (SSLSocket) sslsf.createSocket(host, port); 
    return socket; 
} 
संबंधित मुद्दे