「local」側が tcp/4443 でSSLサーバとして待機して、「remote」側の192.0.2.1:80 へ転送する場合、証明書は「server.pfx」(パスワードは「abcdefgh」)とする
証明書は、事前にWindowsに信頼させておく必要がある
StreamRelay.NET.exe -LocalPort 4443 -RemoteHost 192.0.2.1 -RemotePort 80 -LocalProxy ssl:///?CertFile=server.pfx^&CertPassword=abcdefgh
オプション
- CertFile : クライアント証明書認証の際のクライアント側の証明書ファイル(事前にWindowsに信頼させる必要がある)
- CertPassword: 証明書のパスワード
- NeedClientCert: クライアントへ証明書提示を求めるかどうか
- UseCertRevocationList: 信頼破棄リストを問い合わせするかどうか
- Protocol: SSLプロトコルを明示するかどうか
方向を逆転させる
既定では、TCPのハンドシェイクの方向と、SSLのハンドシェイクの方向は同じだが、反対にすることができる
StreamRelay.NET.exe -LocalPort 0 -RemoteHost 192.0.2.1 -RemotePort 4443 -RemoteProxy ssl:///?Server^&CertFile=server.pfx^&CertPassword=abcdefgh
StreamRelay.NET.exe -LocalPort 4443 -RemotePort 0 -LocalProxy ssl:///?Client
の二つの接続は、SSL で保護されるが、TCPのハンドシェイクの方向とSSLのハンドシェイクの方向は逆になる。
逆なので、TCPクライアント側がSSLサーバとなっているので、そちら側はSSLサーバなので証明書が必要。