簡體   English   中英

Java.nio 通道和 TLS

[英]Java.nio Channels and TLS

我如何使用 TLS 保護 Java SocketChannelServerSocketChannel或者甚至是DatagramChannel

我知道有一些框架( #1 #2 )宣稱能夠做到這一點,但我想知道是否可以單獨使用純 Java 標准庫來實現這一點。

您需要使用SSLEngine ,如使用SSLEngine 的非阻塞 I/O 中所述 您提到的庫使用它或使用使用它的庫。

(請注意,這是出了名的難以使用。)

您可能會發現這些鏈接很有趣:


對於數據報,您應該考慮使用DTLS而不是 TLS。 我不確定它在 Java 中的實現狀態,但您可以翻閱java.openjdk.security.devel郵件列表的檔案。

您需要使用SSLEngine並使用該狀態機手動進行握手。 SSL/TLS 在 TCP 之上實現,因此您不能直接在DatagramChannel之上使用它。

文章使用 SSLEngine進行非阻塞 I/O可能會有所幫助。

正如布魯諾正確提到的那樣,這樣做的標准方法是使用 SSLEngine。 但是該類非常難以使用

前段時間我遇到了同樣的問題,最終編寫了自己的庫。 那里有一些示例,當然也有像 Netty 等項目內部的代碼。但是這兩種選擇都不是健壯的或易於重用的。

TLS 通道將 SSLEngine 包裝在 ByteBuffer 中,並允許像普通的 SocketChannels 一樣使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM