2018年9月11日、OpenSSL1.1.1 がリリース されました。このバージョンは LTS(長期サポート)バージョンのため、少なくとも5年間はサポートされるそうです。また、なんといっても OpenSSL1.1.1 の注目は先月発行された RFC8446(TLS1.3の標準仕様)に対応したことです。いよいよ TLS1.3 の普及が始まりそうですね。そこで今回は、CentOS7.5 (1804) に OpenSSL 1.1.1(LTS)をインストールする手順をメモしておきました。
(関連記事)2018年10月23日 Apache httpd サーバーが TLS1.3 に対応しました!
Apache httpd 2.4.37(TLS1.3対応)+ HTTP/2 + Brotli インストールメモ
開発ツールのインストール
OpenSSL 1.1.1 はソースからコンパイルしますので、基本コマンドと開発ツールをインストールしておきましょう。
yum -y groupinstall development
yum -y update
OpenSSL 1.1.1 のインストール
OpenSSLのコンパイルに必要なパッケージをインストールしておきます。
yum -y install perl-core
OpenSSL 1.1.1のインストール
wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
tar xvzf openssl-1.1.1.tar.gz
cd openssl-1.1.1/
./config --prefix=/usr/local/openssl-1.1.1 shared zlib
make depend
make
make test
make install
OpenSSL1.1.1 のライブラリにパスを通しておきます。
ldconfig
下記のコマンドで OpenSSL が TLS1.3 に対応していることを確認できます。(以下は TLS1.3 が対応している暗号スイートです)
TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD
TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD
TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
動作確認
せっかくなので openssl の組み込みWEBサーバーを使って、ブラウザからの接続を確認してみましょう。
自己署名のSSLサーバー証明書の作成
まず自己署名の証明書を作成します。
秘密鍵の作成
CSR(証明書署名要求)の作成(入力するのは「JP」の1箇所だけです。あとは空エンターでOKです)
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:<空エンター>
Locality Name (eg, city) [Default City]:<空エンター>
Organization Name (eg, company) [Default Company Ltd]:<空エンター>
Organizational Unit Name (eg, section) []:<空エンター>
Common Name (eg, your name or your server's hostname) []:<空エンター>
Email Address []:<空エンター>
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<空エンター>
An optional company name []:<空エンター>
SSLサーバー証明書の作成
WEBサーバーの起動
以下のコマンドでWEBサーバーを起動します。「-tls1_3」オプションを指定することで TLS1.3 プロトコルでのみの接続を受け付けるようにしています。
s_server \
-tls1_3 \
-accept 443 \
-www \
-cert server.crt \
-key server.key
WEBブラウザの Firefox(62.0)でアクセスすると、自己署名証明書の警告の前に、「サポートされていないプロトコルが使用されている」旨のエラーが表示され接続できませんでした。これは Google Chrome(69.0.3497.92)でも同様のエラーが発生します。
おそらくですがこのエラーは、現在のところ Firefox や Chrome が RFC8446 の仕様に対応していないのが原因だと思われます。Firefox の開発者版(63.0b5)では、TLS1.3 で問題なく接続できますので、次期バージョンのリリースを待ちましょう。
おわりに
各種WEBブラウザや Apache httpd などの WEBサーバーが TLS1.3(RFC8446)に対応するのも時間の問題でしょう。早く TLS1.3 が普及してくれるといいですね。
コメント