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


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

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

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

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

  1. Since it’s not signed by a Certificate Authority, a self-signed SSL certificate generates alerts on web browsers warning users of potential risk ahead should they decide to proceed. These alerts are undesired and will dissuade users from visiting your website, potentially leading to a decline in web traffic. As a workaround to these alerts, organizations usually encourage their employees to simply ignore the alerts and proceed ahead. This may spawn a dangerous habit among users who may decide to continue ignoring these alerts on other online sites, potentially falling victim to phishing sites.
  2. Self-signed certificates have a low-security level since they implement low-level cipher technologies and hashes. Thus the security level may not be at par with standard security policies.
  3. Additionally, there’s no support for Public Key Infrastructure (PKI) functions.

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

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

開始する前に、次の基本的な要件があることを確認してください。

  1. An instance of the CentOS 8 server.
  2. Apache webserver installed on the server
  3. A hostname already configured and defined in the /etc/hosts file. For this guide, we are going to use tecmint.local a hostname for our server.

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

1.開始するには、ApacheWebサーバーがインストールされて実行されていることを確認する必要があります。

$ 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パッケージがインストールされていることを確認してください(OpenSSLはCentOS 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 – This indicates that we are using the x509 Certificate Signing Request (CSR).
  • -nodes – This option instructs OpenSSL to skip encrypting the SSL certificate using a passphrase. The idea here is to allow Apache to be able to read the file without any kind of user intervention which would not be possible if a passphrase is provided.
  • -newkey rsa:2048 – This indicates that we want to simultaneously create a new key and a new certificate. The rsa:2048 portion implies that we want to create a 2048-bit RSA key.
  • -keyout – This option specifies where to store the generated private key file upon creation.
  • -out – The option specifies where to place the created SSL certificate.

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

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

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

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

<VirtualHost *:443>
    ServerAdmin [email protected]
    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証明書をテストする

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

テストを合理化するために、ApacheWebサーバーでHTTPプロトコルをHTTPSにリダイレクトすることを検討してください。これは、プレーンHTTPでドメインを参照するたびに、HTTPSプロトコルに自動的にリダイレクトされるようにするためです。

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

https://domain_name/

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

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

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

最後に、ブラウザをリロードして、サーバーにアクセスできるようになったことを確認します。ただし、SSL証明書が自己署名され、署名されていないのと同じ理由で、サイトが完全に安全ではないという警告がURLバーに表示されます。証明する機関。

これで、CentOS8のApachelocalhostWebサーバーに自己署名SSL証明書を作成してインストールできるようになりました。