リバースプロキシを使いcentos5 apacheをtls1.2に対応させてみた

みなさんこんにちは。
マスク生活はもう嫌だ…ヤマオカです。

今回は、tls1.2に対応していないwebサーバ(centos5)に対してtls1.2対応しているリバースプロキシ(centos7)を挟んで警告が出ないようにしてみます。

現在のcentos5ではwebサーバーをたてた際、ブラウザでのtls1.0とtls1.1のサポートが終了しています。そのため、centos5はtls1.2に対応していないので警告が出ます。応急処置として、警告が出ないようにしてみました。

本来ならオープンsslのアップデートを行うのがベストでしょうが(centos5ではソースでの入れ替えが必要です)、それまでの応急処置としてやってみましょう。

今回のwebサーバはcentos5 apacheでリバースプロキシはcentos7 nginxにしますね。

すでにapacheの設定はできています。
今回はnginxをインストールしてリバースプロキシ設定を行っていくとします。

イメージはこんな感じです。

それでは取り掛かっていきましょう!
(confの中身は全て貼り付けになっています。自身の環境にあった内容を書き込むようにしてください。)

nginxインストール

まずyumコマンドでnginxをインストールします。

    yum install nginx

nginxのバージョン確認

    # nginx -v
    nginx version: nginx/1.19.1

ついでにcentosの方も一応確認…

    # cat /etc/redhat-release
    CentOS Linux release 7.6.1810 (Core)

nginxのconf設定

nginxのdefault.confを設定します。

    # cd /etc/nginx/conf.d/
    # vi default.conf

とはいえ今回はデフォルト設定で行いますので一応ここにあるよとの確認だけとします。

ssl設定(今回は発行済とする)

新しくconf.d配下にssl.confを作成してここにsslの設定を行います。

証明書は既に発行済みとします。
証明書と中間証明書は結合されています。証明書は下記のディレクトリ配下に配置します。

     /etc/httpd/conf

またssl用にconfファイルをtouchコマンドで作成。それではconfファイルに書き込みを行っていきましょう。

    # cd /etc/nginx/conf.d/
    # vi ssl.conf
    server {
     listen 443 ssl;

     #証明書を設定
     ssl_certificate /etc/httpd/conf/server.pem;
     ssl_certificate_key /etc/httpd/conf/server.key;
    }

リバースプロキシ設定

次にリバースプロキシの設定を行っていきます。
今回リバースプロキシの設定はssl.conf内に書き込んでいきます。追加する項目はこちら

    server_name    localhost; #サーバ名がある場合そちらを記入
    proxy_set_header    Host    $host;
    proxy_set_header    X-Real-IP    $remote_addr;
    proxy_set_header    X-Forwarded-Host       $host;
    proxy_set_header    X-Forwarded-Server    $host;
    proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
    location / {
        proxy_pass
        https://192.0.2.0:443; #https接続したいので443 ここには接続先のIPもしくはドメイン名
    }

ssl.confは下記のような内容になります。

    # vi ssl.conf

    server {
     listen 443 ssl;
     #証明書を設定
     ssl_certificate /etc/httpd/conf/server.pem;
     ssl_certificate_key /etc/httpd/conf/server.key;
     server_name    localhost;
     proxy_set_header    Host    $host;
     proxy_set_header    X-Real-IP    $remote_addr;
     proxy_set_header    X-Forwarded-Host       $host;
     proxy_set_header    X-Forwarded-Server    $host;
     proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
     location / {
         proxy_pass    https://192.0.2.0:443; #接続先のIPもしくはドメイン名
     }
    }

そしてnginxを再起動させます。

   # systemctl restart nginx

確認

nginxに接続した際apacheのサイトが確認できたらok
つまり、ブラウザ側でリバースプロキシにhttps接続した際にwebサーバに接続できたら成功です。
この時tls1.2に対応していると警告は出ません。

webサイト上でF12を叩いて、securityのタブを開けばここでも対応できているか確認できるので是非見てみてくださいね。

一方、centos5のwebサーバに直接接続した場合には警告が出てくるはずです。

作業は以上になります。ありがとうございました。

参考記事

今回はこちらの記事を参考にしました。
 https://blog.denet.co.jp/centos5apachetls12/