テキストのみの通信チャネル(base64を使用することを考えました)を介してtlsをトンネリングしようとしていますが、SSLSocketを使用しないtlsサーバーの例が見つからないようです。
tlsクライアントの場合、入力ストリームと出力ストリームを使用するだけなので、トランスポートに依存しない弾力のある城TlsProtocolHandlerを見つけることができましたが、サーバーのtls実装に類似したものは見つかりませんでした。
使用SSLSocket
:
Socket
TCPに基づかない独自の実装を確実に行うことができます。たとえば、Unixソケットの実装があります。あなたがあなた自身の輸送のためにそれを持ったら、あなた自身の上にSSLSocketFactory.createSocket(Socket, ...)
確立することができます。SSLSocket
Socket
使用SSLEngine
(もう少し複雑):
SSLEngine.wrap
(およびunwrap
) sに取り組みByteBuffer
ます。これらのバッファは、独自の通信チャネルから取得できます。
発生する可能性のある問題の1つは、証明書の概念をカスタムトランスポートにマッピングすることです。証明書(またはより一般的にはサーバーのIDを証明する)は、MITM攻撃を防ぐために、SSL/TLSチャネルのセキュリティに不可欠です。ID検証では、証明書が信頼できるものであるかどうかを確認することと、証明書のIDが到達しようとしたエンティティに対応していること(ホスト名の検証)の両方を確認する必要があります。ホスト名の検証はデフォルトでは有効になっていませんが、ホスト名がない場合は、とにかく似たようなものを見つける必要があります(たとえば、UNIXソケットでは問題になる可能性がありますが、この場合にSSLを使用すると、とにかくセンス)。