IT の世界では、インフラストラクチャ アプリケーションとドメインを保護することが重要です。また、理想的なレベルのセキュリティを実現するには、SSL 証明書が必要です。しかし、SSL 証明書を取得するにはどうすればよいでしょうか。最も簡単で費用対効果の高い方法の 1 つは、システムで自己署名証明書を作成することです。
自己署名証明書は、認証局によって発行されるのではなく、ユーザーが自分で生成できる公開鍵証明書です。このチュートリアルでは、Windows マシンと Linux マシンの両方で自己署名証明書を生成する方法を学習します (無料)。
読み進めて、アプリとインフラストラクチャの保護を開始してください!
前提条件
このチュートリアルは実践的なデモンストレーションです。フォローしたい場合は、次のものが揃っていることを確認してください:
- Windows 10 以降のデバイス
- 14.04.4 LTS 以上の Ubuntu マシン – このチュートリアルでは Ubuntu 20.04.4 LTS を使用します。
- Windows および Linux マシンにインストールされた Apache
- Windows マシンに OpenSSL がインストールされている – このチュートリアルでは OpenSSL 3.0.3 Light (32 ビット) を使用します。
Ubuntu での自己署名証明書の生成
自己署名証明書をテストする最も簡単な方法は、Web サーバー上で行うことです。最も広く使用されている Web サーバーの 1 つは Apache です。それでは、Ubuntu マシンに既にインストールされている Apache サーバーを構成して、このチュートリアルを開始しましょう。
1. お気に入りの SSH クライアントを使用して、Ubuntu VM に SSH で接続します。
2. 以下の apt update コマンドを実行して、Ubuntu に最新のパッケージ ソースがすべて含まれていることを確認します。
sudo apt update
3. 次に、お気に入りの Web ブラウザを開き、
4. 以下の各コマンドを実行して、~/certificates という名前のディレクトリを作成します。 証明書を保存するディレクトリに移動します。
mkdir ~/certificates
cd ~/certificates
5. 次に、次の openssl コマンドを実行して、証明書署名要求 (CSR) と秘密鍵を生成します。
openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes
コマンドを実行したら、以下に示すように詳細を入力します。
Ubuntu で SSL 証明書を使用して Apache サーバーを保護する
証明書を生成したら、証明書を使用するように Apache サーバーを構成する必要があります。ただし、最初に、証明書を保持する専用のディレクトリが必要です。後で SSL モジュールを有効にして、証明書が Apache サーバーを保護する際に機能するかどうかをテストします。
1. 次のコマンドを実行してディレクトリ (/etc/apache2/ssl) を作成し、証明書を ~/certificates/ ディレクトリから /etc/apache2/ssl ディレクトリに移動します。
mkdir /etc/apache2/ssl
mv ~/certificates/* /etc/apache2/ssl/.
2. デフォルトの SSL Apache サイト構成ファイル (/etc/apache2/sites-available/default-ssl.conf) を開き、以下の行を追加します。
以下のコードでは、以前に証明書をコピーした場所 (証明書キーとファイル) を指定しています。
ServerName
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
ProxyPreserveHost On
3. 次に、以下の各コマンドを実行して SSL モジュールを有効にし、変更したサイトを有効にし (手順 4)、Apache サービスを再起動します。
# Enable the SSL module so that you can work with SSL connections.
sudo a2enmod ssl proxy proxy_http proxy_balancer
# Enable the site you modified (step four)
sudo a2ensite default-ssl.conf
# Restart the Apache service
sudo service apache2 restart
4. 最後に、もう一度 Apache サーバーに移動します。ただし、今回は以下に示すように HTTPS を使用します。
ご覧のとおり、Apache は HTTPS ポートで SSL 接続を使用して正常に開いています。安全でないメッセージを表示する警告記号が表示されても心配しないでください。認証局ではなく自己署名証明書 (自分で作成) を使用しているため、この警告が表示されます。
[
以下と同じページが表示されますか?おめでとう!自己署名証明書で Apache サーバーを保護しました。
Windows での SSL 証明書の生成
以前は、自己署名証明書を使用して、Ubuntu マシンでホストされている Apache サーバーを保護しました。同様に、Windows OS で Apache サーバーを保護することもできます。
Windows で Apache サーバーを保護するには:
1. Apache 構成ファイル (httpd.conf) を開きます。 C:\Apache24\conf 以下の行のコメントを外してください。
次の行は、Windows マシンで SSL モジュールを有効にし、Apache が HTTPS ポートで動作できるようにします。
LoadModule rewrite_module modules/mod_rewrite.so
2. 次に、管理者として PowerShell を開き、次の openssl コマンドを実行して、証明書署名要求 (CSR) と秘密鍵を生成します。
openssl req -x509 -newkey rsa:4096 -keyout Apache.key -out Apache.crt -days 365 -nodes
コマンドを実行した後、以下に示すように、証明書の詳細を入力してください。
3. OpenSSL インストール bin ディレクトリ (C:\ProgramFiles\OpenSSL-Win64\bin) に移動します。 )、以下の Apache 証明書とキーを確認してください。
SSL 証明書を使用するように Apache サーバーを構成する
これで、Apache サーバー接続を保護するための証明書とキーが生成されました。ただし、Ubuntu と同様に、証明書とキーを保持し、SSL モジュールを有効にする専用のフォルダーが必要です。
1. SSL 証明書ファイル (apache.crt) をコピーします。 ) と秘密鍵ファイル (apache.key ) を C:\Apache24\conf に
2. Apache SSL 構成ファイルを編集します (C:/Apache24/conf/httpd.conf )、次の行を追加するか、既に存在する場合はコメントを外します。
以下の行は SSL モジュールを有効にし、Apache が HTTPS ポートで動作できるようにします。
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
3. 次に、Apache SSL ファイルを編集します (C:/Apache24/conf/extra/httpd-ssl.conf )、次の行を追加します。このファイルは httpd.conf によって呼び出されます httpd.conf で定義されている内部ファイル ファイル (conf/extra/httpd-ssl.conf をインクルード)。
SSLCertificateFile "C:\Apache24\conf\apache.crt"
SSLCertificateKeyFile "C:\Apache24\conf\apache.key"
4. PowerShell で次のコマンドを実行して Apache インストール bin フォルダーに移動し、Apache サービスを開始します。
# Change the working directory
cd C:\ProgramFiles\OpenSSL-Win64\bin
# Start the Apache service
./httpd.exe
5. 最後に、https://localhost に移動します。 Apache サーバーを確認します。
同じ (It works!) メッセージがページに表示され、Apache サーバーが Windows マシンで自己署名証明書を使用して実行されていることが確認されます。
結論
このチュートリアルでは、Ubuntu と Windows オペレーティング システムの両方で Apache Web サーバーを構成し、Apache インスタンスに安全にアクセスできることを確認する方法を学習しました。
では、Apache でゲームをどのように強化する予定ですか?おそらく Web 展開を自動化しますか?または、Jenkins CI CD パイプラインを作成して、ソフトウェア開発プロセスを改善しますか?