TLS1.0からTLS1.2への変換 完結編?
(左がTLS1.0さん、右がTLS1.2ちゃん)
Apache NginxをProxyとして利用してプロトコルを変換できないかと考えていた話の続きです。
なんと、Stack Overflow(スタックオーバーフロー)で回答見つかりました! しかも特に何か設定などもいらなそう。。。
client(TLSv1.0) --> apache(performs handshake with client with TLSv1.0) (redirects request to server, performs handshake with server with TLSv1.2) --> server(TLSv1.2).
(当然なんですけど…)Apacheまで到達したSSLリクエストはそこで復号されてしまうですよ。 だから、ApacheとそのバックエンドのAPサーバとSSL通信したければ、そのAPサーバにHTTPSでリダイレクトすればよい。
というわけでロジック解説。※未検証
①client(TLSv1.0) --> apache(performs handshake with client with TLSv1.0)
クライアント(PC端末などのブラウザ)と中間のApache(Proxyサーバ)が、まずSSLハンドシェークを行い、暗号レベルを決定する。 この時にクライアント側のCipherListでTLS1.0が最も強い暗号レベルだった場合はそれに決定。
SSLのためのサーバ証明書と秘密鍵はApacheに投入して、そのサーバ証明書を確認するためのroot証明書/中間証明書はブラウザに設定。
②apache(redirects request to server, performs handshake with server with TLSv1.2) --> server(TLSv1.2)
①の電文がApacheに到達したときには復号済みのデータとなっている。そのあとに暗号化するか平文にするかはリダイレクト先次第。
ここでAPサーバのコンテンツのパスに向けてリダイレクトしてあげれば、①と同様にSSLのハンドシェークが行われてめでたしめでたしと。 (apacheとAPサーバは最新バージョンで用意すれば、自動的にTLS1.2になると思われる)
時間が取れれば、検証までやるようにします。。(汗
~おしまい~