[英]Java.nio Channels and TLS
您需要使用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.