ウェブサイト検索

RHCE シリーズ: Apache 用ネットワーク セキュリティ サービス (NSS) を使用した TLS 経由の HTTPS の実装 - パート 8


あなたが Web サーバーの保守とセキュリティ保護を担当するシステム管理者である場合、サーバーによって提供される、またはサーバーを通過するデータが常に保護されるように最善の努力を払わないわけにはいきません。

Web クライアントとサーバー間のより安全な通信を提供するために、HTTPSSL を組み合わせた HTTPS プロトコルが誕生しました (セキュア ソケット レイヤー)、または最近ではTLS (トランスポート層セキュリティ)。

いくつかの重大なセキュリティ違反のため、SSL は非推奨となり、より堅牢なTLS が採用されました。そのため、この記事では、TLS を使用して Web サーバーとクライアント間の接続を保護する方法について説明します。

このチュートリアルでは、Apache Web サーバーがすでにインストールされ、構成されていることを前提としています。そうでない場合は、次に進む前に、このサイトの次の記事を参照してください。

  1. RHEL/CentOS 7 に LAMP (Linux、MySQL/MariaDB、Apache、PHP) をインストールする

OpenSSL とユーティリティのインストール

まず、Apache が実行中であり、httphttps の両方がファイアウォールの通過を許可されていることを確認します。


systemctl start http
systemctl enable http
firewall-cmd --permanent –-add-service=http
firewall-cmd --permanent –-add-service=https

次に、必要なパッケージをインストールします。


yum update && yum install openssl mod_nss crypto-utils

重要: を使用する場合は、上記のコマンドの mod_nssmod_ssl に置き換えることができることに注意してください。 >NSS (ネットワーク セキュリティ サービス) の代わりに TLS を実装する OpenSSL ライブラリ (どれを使用するかは完全にあなた次第です)ただし、NSS はより堅牢であるため、この記事では NSS を使用します。たとえば、PKCS #11 などの最近の暗号化標準をサポートしています。

最後に、mod_nss の使用を選択した場合は mod_ssl をアンインストールし、その逆も同様です。


yum remove mod_ssl

NSS(ネットワークセキュリティサービス)の設定

mod_nss がインストールされると、デフォルトの設定ファイルが /etc/httpd/conf.d/nss.conf として作成されます。次に、すべての Listen ディレクティブと VirtualHost ディレクティブがポート 443 (HTTPS のデフォルト ポート) を指していることを確認する必要があります。


Listen 443
VirtualHost _default_:443

次に、Apache を再起動し、mod_nss モジュールがロードされているかどうかを確認します。


apachectl restart
httpd -M | grep nss

次に、/etc/httpd/conf.d/nss.conf 構成ファイルで次の編集を行う必要があります。

1. NSS データベース ディレクトリを指定します。デフォルトのディレクトリを使用することも、新しいディレクトリを作成することもできます。このチュートリアルでは、デフォルトを使用します。


NSSCertificateDatabase /etc/httpd/alias

2. /etc/httpd/nss-db-password.conf のデータベース ディレクトリにパスワードを保存することで、各システム起動時の手動パスフレーズ入力を回避します。


NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

/etc/httpd/nss-db-password.conf には次の行のみが含まれており、mypassword は後で NSS データベースに設定するパスワードです。


internal:mypassword

さらに、その権限と所有権をそれぞれ 0640root:apache に設定する必要があります。


chmod 640 /etc/httpd/nss-db-password.conf
chgrp apache /etc/httpd/nss-db-password.conf

3. Red Hat では、SSLTLSv1.0 より前のすべてのバージョンの TLS を無効にすることをお勧めします。 >POODLE SSLv3 の脆弱性(詳細はこちら)。

NSSProtocol ディレクティブのすべてのインスタンスが次のようになっていることを確認してください (他の仮想ホストをホストしていない場合は、1 つしか見つからない可能性があります)。


NSSProtocol TLSv1.0,TLSv1.1

4. これは自己署名証明書であり、発行者が有効であると認識されないため、Apache は再起動を拒否します。このため、この特定のケースでは、以下を追加する必要があります。


NSSEnforceValidCerts off

5. 厳密に必須ではありませんが、NSS データベースのパスワードを設定することが重要です。


certutil -W -d /etc/httpd/alias