Debian 9 の Apache2.4 で TLSv1.3 を利用する

TLSv1, TLSv1.1 が 2020 年にもメジャーなブラウザで無効化されると言う話題が出ていました。

Deiban 9 の Apache 2.4 は、TLSv1.2 に対応しているので特に影響はありませんが、どうせという事で TLSv1.3 に対応をしてみました。

とは言え、Debian 9 の Apache は 2.4.25 で、libssl1.1 も 1.1.0f がベースのようなので、TLSv1.3 をサポートする Apache 2.4.37 かつ OpenSSL 1.1.1 以降は公式パッケージでは存在しません。

ただし、次期リリース Debian のテスト版 buster では Apache 2.4.37 がパッケージとして存在します。

よって、OpenSSL 1.1.1a をビルド、この共有ライブラリをリンクする形で、Debian 9 上で buster の Apache 2.4.37 パッケージをビルドすることにしました。

OpenSSL 1.1.1a のビルド

  1. ビルドに必要なパッケージをインストールします。
    # apt-get update
    # apt-get install build-essential zlib1g-dev
  2. 公式サイトよりソースをダウンロードし、検証します。
  3. 以下のオプションで config を流します。
    $ ./config --prefix=/usr/local/openssl1.1.1a shared zlib -Wl,-rpath=/usr/local/openssl1.1.1a/lib
  4. make して test してインストールします。
    $ make
    $ make test
    $ sudo make install

これで、OpenSSL 1.1.1a が /usr/local/openssl1.1.1a 以下にインストールされます。

Apache 2.4.37 パッケージの作成

  1. ビルドに必要なパッケージをインストールします。
    # apt-get update
    # apt-get install devscripts
    # apt-get build-dep apache2
  2. /etc/apt/sources.list に buster の設定を追加します。
    deb http://ftp.jp.debian.org/debian/ buster main
    deb-src http://ftp.jp.debian.org/debian/ buster main
    deb http://security.debian.org/debian-security buster/updates main
    deb-src http://security.debian.org/debian-security buster/updates main
  3. apache 2.4.37 のソースパッケージをダウンロードしてきます。
    $ sudo apt-get update
    $ apt-get source apache2
  4. /etc/apt/sources.list から、buster の設定を解除します。
  5. apache2 パッケージを作成します。apache2-2.4.37 ディレクトリに移動し、debian/rules ファイルの以下の部分を変更します。
    1. 最初の環境変数設定部分で該当行を以下のようします。
      AP2_CFLAGS = -pipe $(CFLAGS) -I/usr/local/openssl1.1.1a/include/openssl
      AP2_LDFLAGS = -Wl,--as-needed $(LDFLAGS) -Wl,-rpath,/usr/local/openssl1.1.1a/lib
    2. 「clean build build-arch build-indep binary binary-arch binary-indep: %:」部分を以下のようにします。
      dh $@ --parallel --with systemd --dpkg-shlibdeps-params=--ignore-missing-info
    3. 「configure-stamp:」部分の ./configure 以降の行に
      --with-ssl=/usr/local/openssl1.1.1a \

      を追加します。また「–enable-mods-shared=”all brotli cgi ident authnz_fcgi imagemap cern_meta proxy_fdpass proxy_http2 bucketeer case_filter case_filter_in” \」の部分を

      --enable-mods-shared="all cgi ident authnz_fcgi imagemap cern_meta proxy_fdpass proxy_http2 bucketeer case_filter case_filter_in" \

      とします。

  6. 以下を実行し、説明などを入力します。
    $ dch -i
  7. 以下を実行し、パッケージを生成します。
    $ debuild -us -uc -d

    一つ上の階層に、関連する .deb ファイルが作成されるので、それをインストールすれば OK です。

本当に 2018 年 12 月下旬の現段階でも TLSv1.3 での接続があるのか

実際にどの程度アクセスがあるのか、https://www.manabii.info/ で 2018 年 12 月下旬のとある 24 時間で計測した割合は下記の通りでした。

TLSv1.2: 88%
TLSv1.3: 12%

すでに TLSv1.3 のアクセスは 1 割強程度あるようでした。ブラウザ側は予想以上に TLSv1.3 への対応が進んでいるようです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です