문제

이상적으로는 간단한 것만 필요합니다 SSLSocketChannel.

나는 이미 평범한 것에 대한 메시지를 읽고 쓰는 구성 요소가 있습니다. SocketChannel, 그러나 이러한 연결 중 일부의 경우 와이어 위에 SSL을 사용해야합니다. 그러나 이러한 연결에 대한 작업은 동일합니다.

누구든지 무료를 알고 있습니까? SSLSocketChannel 구현 (적절한 선택기 포함) 또는 유사한 것? 내가 찾았 어 이것, 그러나 공급 업체는 SUN이 아니기 때문에 선택기는이를 받아들이지 않습니다.

나는 간단한 개체를 통해 네트워크 데이터의 삽입 및 검색에서 reading_from/writing_to net logic을 분리하고 있습니다. SSLEngine 화 내지 않고 SSL 프로토콜의 내부를 모른다는 사실을 감안할 때, 그것을 올바르게 구현하는 것은 정말 까다 롭습니다 ...

도움이 되었습니까?

해결책

Restlet의 구현을 확인하십시오. 필요한 작업을 수행 할 수 있으며 Nio에 관한 것입니다.

레인지 엔진 Javadoc

특히 httpclientCall. setProtocol (https) -getResponseEntityChannel을 readableByTechannel을 반환합니다 (getEntityChannel을 writelebytechannel을 반환)

다른 팁

Jetty는 서버를위한 NIO SSL 구현을 보유하고 있습니다. sslSelectorChannelConnector. 당신은 그것이 무엇을하는지에 대한 자세한 내용을 살펴보고 싶을 수도 있습니다.

의 오래된 (그러나 괜찮은) 기사도 있습니다. 오라일리 예제 코드와 함께 NIO + SSL에 대한 세부 사항을 설명합니다.

TLS 채널 SSLContext (또는 SSLENGINE)를 감싸고 바이트 채널 인터페이스를 노출시키고 내부적으로 무거운 리프팅을하는 간단한 라이브러리입니다.

(면책 조항 : 저는 도서관의 주요 저자입니다).

이것이 당신이 찾고있는 것인지 확실하지 않지만 도움이 될 수 있지만 ... 확인 확보를 위해) - 고객에게는 해당 쌍의 공개 키와 함께 서명 된 인증서가 포함 된 유사한 신뢰 상점이 있습니다.

그 구성을 중심으로 약간의 인터넷 검색을 통해 진행해야합니다.

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