0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

STARTTLS ゲートウェイとしての StreamRelay.NET.exe

Last updated at Posted at 2017-06-29

STARTTLS ゲートウェイとしての StreamRelay.NET.exe

StreamRelay017.png

STARTTLS ゲートウェイとしての StreamRelay.NET.exe (StartTLS サーバ)

StreamRelay.NET.exe -LocalPort 25 -RemotePort 192.0.2.3 -RemotePort 25 -LocalProxy "starttls://?command=STARTTLS^&SuccessMessage=200 Go ahead"

とすると、サーバ側の STARTTLS 機能の代理をする事ができる。

STARTTLS ゲートウェイとしての StreamRelay.NET.exe (StartTLS クライアント)

StreamRelay.NET.exe -LocalPort 90 -RemotePort 192.0.2.2 -RemotePort 25 -RemoteProxy starttls://?command=STARTTLS^&SuccessMessage=200

とすると、STARTTLSクライアントとなり、開始コマンドをまちつつ、TLS 開始時にはSSLクライアントになれる。
こうすれば、nc.exe(netcat)で、(StreamRelay.NET.exe経由で)StartTLSサーバに接続して、デバグできるよ。

てか「-LocalPort 90」を「-LocalPort 0」にすれば、StreamRelay.NET.exe がキーボード/コンソールの送受信を担当できるので、netcat 必要ないけどね。

オプション

SSLProxy と同じオプションに加えて、開始コマンドを示す「command」と成功時の応答メッセージ、または成功時の応答メッセージの一部を示す「SuccessMessage」

方向を逆転させる

StreamRelay019.png

Server と Client
既定では、TCPのハンドシェイクの方向と、SSLのハンドシェイクの方向は同じだが、SSLプロキシの設定と同じように、反対にすることができる
StartTLSServer と StartTLSClient
既定では、TCPのハンドシェイクの方向と、StartTLS のハンドシェイクの方向は同じだが、SSLプロキシの設定と同じように、反対にすることができる

つまり、TCP(通信) の方向と、SSL の方向、StartTLS の方向(StartTLSサーバとクライアントの位置関係)は、設定によって、自由にできます


本家の該当箇所

本家の該当箇所


STARTTLSクライアントにもなる

「StartTLSClientNoDelay」オプションを使う事で、接続後にStreamRelay.NET.exe自身が STARTTLSクライアントとなって、SSL接続を開始させられる。

StreamRelay.NET.exe -LocalPort 90 -RemotePort 192.0.2.2 -RemotePort 25 -RemoteProxy "starttls://?command=STARTTLS&SuccessMessage=200 2.0.0&StartTLSClientNoDelay"

という感じ。

「SuccessMessage」を「200」ではなくて「200 2.0.0」とより具体的に書いているのは、SMTPサーバのHELLOメッセージと混同する事を避けるためです。
(そして、半角スペースがあるので、ハット(^)を取ってダブルクォート(")で囲んだ)

つまり「200」だけだと、

1.接続
2.STARTTLS開始のコマンド「STARTTLS」を送信
3.接続先/相手(SMTPServer)の Helloメッセージ(200 OKとか)が返る
4.ここで、成功と判断してSSLハンドシェイク開始
5.2.の「STARTTLSいいよ」メッセージが SSLハンドシェイク中に返る
6.SSLハンドシェイクエラー

となってしまうので、「200 2.0.0」とすることで

1.接続
2.STARTTLS開始のコマンド「STARTTLS」を送信
3.接続先/相手(SMTPServer)の Helloメッセージ(200 OKとか)が返る
4.ここではまだ、成功と判断しない
5.2.の「STARTTLSいいよ」メッセージ(200 2.0.0)が返る
6.SSLハンドシェイク開始

となって、接続直後に StartTLS 接続を成功させることができる


SMTP認証と兼ねる

StreamRelay.NET.exe は SMTP 認証も兼ねる事ができるよ。

SMTP認証を代替するStreamRelay.NET.exe


目次へ戻る

目次というか最初の一歩

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?