ウェブサイト検索

CentOS 8 でローカルの自己署名 SSL 証明書を作成する方法


SSL (セキュア ソケット レイヤー) とその改良版である TLS (トランスポート ソケット レイヤー) はセキュリティ プロトコルです。クライアントの Web ブラウザから Web サーバーに送信される Web トラフィックを保護するために使用されます。

SSL 証明書は、クライアントのブラウザと Web サーバーの間に安全なチャネルを作成するデジタル証明書です。そうすることで、クレジット カード データ、ログイン資格情報、その他の機密性の高い情報などの機密データが暗号化され、ハッカーによる情報の盗聴や盗難を防ぎます。

自己署名SSL証明書とは何ですか?

自己署名 SSL 証明書は、認証局 (CA) によって署名され信頼されている他の SSL 証明書とは異なり、次の機関によって署名された証明書です。それを所有する個人。

作成は完全に無料で、ローカルでホストされている Web サーバーを暗号化する安価な方法です。ただし、次の理由により、実稼働環境では自己署名 SSL 証明書の使用を強くお勧めしません。

  1. 自己署名 SSL 証明書は認証局によって署名されていないため、Web ブラウザ上でアラートを生成し、ユーザーが続行を決定した場合に今後の潜在的なリスクを警告します。これらのアラートは望ましくないものであり、ユーザーが Web サイトにアクセスすることを思いとどまらせ、Web トラフィックの減少につながる可能性があります。これらのアラートの回避策として、組織は通常、従業員にアラートを無視して先に進むよう奨励します。これにより、ユーザーが他のオンライン サイトでこれらの警告を無視し続ける危険な習慣が生まれ、フィッシング サイトの被害に遭う可能性があります。
  2. 自己署名証明書は低レベルの暗号技術とハッシュを実装しているため、セキュリティ レベルが低くなります。したがって、セキュリティ レベルは標準のセキュリティ ポリシーと同等ではない可能性があります。
  3. さらに、公開キー基盤 (PKI) 機能はサポートされていません。

とはいえ、TLS/SSL 暗号化を必要とするサービスやアプリケーションをローカル マシンでテストする場合、自己署名 SSL 証明書の使用は悪い考えではありません。

このガイドでは、CentOS 8 サーバー システム上のApache localhost Web サーバーにローカルの自己署名 SSL 証明書をインストールする方法を学習します。

前提条件:

始める前に、次の基本要件を満たしていることを確認してください。

  1. CentOS 8 サーバーのインスタンス。
  2. Apache Webサーバーがサーバーにインストールされている
  3. ホスト名はすでに構成され、/etc/hosts ファイルで定義されています。このガイドでは、サーバーのホスト名として tecmint.local を使用します。

ステップ 1: CentOS に Mod_SSL をインストールする

1. まず、Apache Web サーバーがインストールされ、実行されていることを確認する必要があります。

sudo systemctl status httpd

期待される出力は次のとおりです。

Web サーバーが実行されていない場合は、コマンドを使用して起動時に Web サーバーを起動して有効にすることができます。

sudo systemctl start httpd
sudo systemctl enable httpd

その後、Apache が稼働しているかどうかを確認できます。

2. ローカルの自己署名 SSL 証明書のインストールとセットアップを有効にするには、mod_ssl パッケージが必要です。

sudo dnf install mod_ssl

インストールしたら、実行してインストールを確認できます。

sudo rpm -q mod_ssl

また、OpenSSL パッケージがインストールされていることを確認してください (OpenSSLCentOS 8 にデフォルトでインストールされます)。

sudo rpm -q openssl 

ステップ 2: Apache 用のローカル自己署名 SSL 証明書を作成する

3. Apache Web サーバーとすべての前提条件を確認したら、暗号キーを保存するディレクトリを作成する必要があります。

この例では、/etc/ssl/private にディレクトリを作成しました。

sudo mkdir -p /etc/ssl/private

次に、次のコマンドを使用してローカル SSL 証明書キーとファイルを作成します。

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

コマンド内のオプションのいくつかが実際に何を表しているかを見てみましょう。

  • req -x509 – これは、x509 証明書署名要求 (CSR) を使用していることを示します。
  • -nodes – このオプションは、パスフレーズを使用した SSL 証明書の暗号化をスキップするように OpenSSL に指示します。ここでの考え方は、Apache がユーザーの介入なしにファイルを読み取れるようにすることです。これは、パスフレーズが提供されている場合は不可能です。
  • -newkey rsa:2048 – これは、新しいキーと新しい証明書を同時に作成することを示します。 rsa:2048 の部分は、2048 ビット RSA キーを作成することを意味します。
  • -keyout – このオプションは、生成された秘密キー ファイルの作成時に保存する場所を指定します。
  • -out – このオプションは、作成された SSL 証明書を配置する場所を指定します。

ステップ 3: Apache にローカルの自己署名 SSL 証明書をインストールする

4. SSL 証明書ファイルを生成したら、Apache Web サーバーの設定を使用して証明書をインストールします。 /etc/httpd/conf.d/ssl.conf 構成ファイルを開いて編集します。

sudo vi /etc/httpd/conf.d/ssl.conf

仮想ホスト タグの間に次の行があることを確認してください。

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

ファイルを保存して終了します。変更を有効にするには、次のコマンドを使用して Apache を再起動します。

sudo systemctl restart httpd

5. 外部ユーザーがサーバーにアクセスするには、図に示すように、ファイアウォール経由でポート 443 を開く必要があります。

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

ステップ 3:Apache でローカルの自己署名 SSL 証明書をテストする

すべての設定が完了したら、ブラウザを起動し、サーバーの IP アドレスまたは https プロトコルを使用したドメイン名を使用してサーバーのアドレスを参照します。

テストを効率化するには、Apache Web サーバー上で HTTP プロトコルを HTTPS にリダイレクトすることを検討できます。これは、プレーン HTTP でドメインを参照するたびに、自動的に HTTPS プロトコルにリダイレクトされるようにするためです。

したがって、サーバーのドメインまたはIPを参照してください

https://domain_name/

図に示すように、接続が安全ではないことを通知するアラートが表示されます。これはブラウザごとに異なります。ご想像のとおり、このアラートは、SSL 証明書が認証局によって署名されておらず、ブラウザがそれを登録し、証明書が信頼できないことを報告するために発生します。

ウェブサイトに進むには、上に示すように [詳細設定] タブをクリックします。

次に、ブラウザに例外を追加します。

最後に、ブラウザをリロードし、サーバーにアクセスできるようになることを確認します。ただし、SSL 証明書が自己署名であり、証明する機関。

これで、CentOS 8 上の Apache localhost Web サーバーに自己署名 SSL 証明書を作成してインストールできるようになることを願っています。