سؤال

ومن الناحية المثالية، أنا فقط بحاجة إلى SSLSocketChannel بسيطة.

ولدي بالفعل المكون الذي يقرأ ويكتب رسالة على SocketChannel العادي، لكن بالنسبة لبعض من هذه الاتصالات، لا بد لي من استخدام SSL عبر السلك. العمليات خلال هذه الاتصالات، ومع ذلك، هي نفسها.

لا أحد يعرف على تنفيذ SSLSocketChannel مجانا (مع محدد المناسب) أو شيئا من هذا القبيل؟ لقد وجدت هذا ، ولكن محدد لا يقبل أنه منذ بائع لها ليس أحد

وأنا فصل في reading_from / writing_to صافي المنطق من إدخال واسترجاع البيانات عبر شبكة كائن بسيط، من أجل استخدام SSLEngine دون الحصول على جنون، ولكن هذا صعب حقا لتنفيذ ذلك بشكل صحيح، نظرا لحقيقة أن I لا أعرف الداخلية لبروتوكول SSL ...

هل كانت مفيدة؟

المحلول

تحقق من تنفيذ Restlet انها قد تفعل ما تريد، وانها كل شيء عن NIO.

Restlet محرك جافادوك

وعلى وجه التحديد HttpClientCall. SetProtocol (HTTPS) - getResponseEntityChannel إرجاع ReadableByteChannel (getEntityChannel إرجاع WriteableByteChannel)

نصائح أخرى

وجيتي له تنفيذ NIO SSL لالخادم الخاص بهم: <لأ href = "http://www.mortbay.org/jetty/jetty-6/xref/org/mortbay/jetty/security/SslSelectChannelConnector.html" يختلط = "noreferrer"> SslSelectorChannelConnector . قد ترغب في نظرة خاطفة في ذلك للاطلاع على تفاصيل ما تفعل بها.

وهناك أيضا مقالا قديما (ولكن لائقة) من <لأ href = "http://www.onjava.com/pub/a/onjava/2004/11/03/ssl-nio.html؟page=last&x -order = تاريخ "يختلط =" noreferrer "> أورايلي أن توضح تفاصيل حول NIO + SSL مع المثال التعليمات البرمجية.

TLS قناة هي مكتبة بسيطة أن تفعل ذلك تماما: التفاف SSLContext (أو SSLEngine ) وفضح واجهة ByteChannel، والقيام رفع الأحمال الثقيلة داخليا.

و(تنويه: أنا المؤلف الرئيسي للمكتبة).

ولست متأكدا إذا كان هذا هو ما كنت أبحث عنه، ولكن قد تساعد ... لإنشاء SSL / TLS مآخذ الخادم تمكين، وأنا حاليا باستخدام رمز كما يلي (keystore.jks يحتوي على الذات وقعت الخاص / العام زوج المفاتيح المستخدمة لضمان تأكيد) - العملاء ومخزن الثقة مماثل الذي يحتوي على شهادة موقعة مع المفتاح العمومي من هذا الزوج.

وهناك القليل من غوغلينغ حول الحصول على هذا تكوينها يجب أن تحصل الجارية.

String keyStorePath = "keystore.jks";
String keyStorePassword = "password";

KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
KeyStore keyStore = new KeyStore();
keyStore.load(new FileInputStream(keyStorePath), keyStorePassword);
keyManagerFactory.init(keyStore, keyStorePassword.toCharArray());

sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagerFactory.getKeyManagers(), null, new SecureRandom());

SSLContext sslContext = getServerSSLContext(namespace.getUuid());
SSLServerSocketFactory serverSocketFactory = sslContext.getServerSocketFactory();

// Create sockets as necessary
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top