Apache HTTP サーバーをインストールし、Let’s Encrypt 証明書で保護する方法を学びましょう。

導入
Apache は、最も広く使用されている HTTP Web サーバーの 1 つです。 Apache をセットアップし、SSL 証明書で保護することは、Web アプリケーションに対して実行する必要がある最初のステップです。
このチュートリアルでは、Ubuntu と CentOS 上の Web サイトに Apache をセットアップする方法を学習します。 DigitalOcean VM でこれをテストしました。
デモンストレーション目的のため。 Cloudflare によって強化されたテスト ドメイン名 test.sanakil.xyz を使用します。
test.sanakil.xyz ドメインを実際のドメインに置き換えることを忘れないでください。 📢

DNSレコードの作成
Cloudflare またはドメイン レジストラー (Cloudflare でない場合) にログインし、ドメインがクラウド VM の IP を指すように A レコード を作成します。
SSH 経由でクラウド サーバーにログインします。

Apache(Ubuntu)のインストール
利用可能なパッケージを最新の状態に更新するには
sudo apt-get update
Apacheをインストールする
sudo apt-get install apache2
ファイアウォールで HTTP サーバーのポート 80 と 443 を許可します。
sudo ufw allow 'Apache Full'
インストールした Apache が正しく実行されていることを確認してください
sudo systemctl status apache2
Apache(CentOS)のインストール
利用可能なパッケージを最新の状態に更新します。
sudo yum update
Apacheをインストールする
sudo yum install httpd
Web アプリにアクセスするには、ファイアウォールにポート 80 と 443 を追加します。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Apacheを起動して実行状況を確認する
sudo systemctl start httpd
sudo systemctl status httpd

Web サイトの VirtualHost を作成する
仮想ホストは、サービスを提供する Web アプリ/Web サイトの種類に応じて 2 つの方法で作成できます。
アプリケーションには、ポート上で実行されている Node のような Web サーバーがすでにあるとします。 プロキシを使用して Apache でサービスを提供 できます。または、アプリが静的サイトのようにファイルを提供しているだけの場合。 Apache で提供するアプリケーションのパス を指定できます。
Apache で仮想ホスト ファイルを作成します。構成ファイルには任意の名前を付けることができます。ただし、Web アプリに提供するドメイン名を保持しておいたほうが、識別しやすくなります。
CentOS の追加セットアップ
CentOS(SELinux)では、Ubuntuのようにデフォルトですべてが有効になっているわけではありません。
Apache で サイト対応 フォルダーと サイト利用可能な フォルダーを作成する必要があります。
sites-enabled – 訪問者に conf ファイルを提供するように Apache に指示します
sites-available – 仮想ホストの conf ファイルを保存します。
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
ここで、Sites-enabled フォルダー内の conf ファイルを読み取るように Apache に指示します。
sudo vi /etc/httpd/conf/httpd.conf
ファイルの最後に以下の行を追加します
IncludeOptional sites-enabled/*.conf
ファイルを提供するように Apache を構成する
- Web アプリを提供するためのフォルダーを作成する
sudo mkdir -p /var/www/test.sanakil.xyz/webapp
sudo vi /var/www/test.sanakil.xyz/webapp/index.html
- テスト用に以下の HTML スニペットを貼り付けます
<!DOCTYPE html>
<html lang="en">
<head>
<title>Apache webapp</title>
</head>
<body>
<h1>My Apache webapp is working in test.sanakil.xyz</h1>
</body>
</html>
- ログを生成して保存するフォルダーを作成する
sudo mkdir -p /var/www/test.sanakil.xyz/log
sudo touch /var/www/test.sanakil.xyz/request.log
sudo touch /var/www/test.sanakil.xyz/log/error.log
- confファイルを開く( Ubuntu )
sudo vi /etc/apache2/sites-available/test.sanakil.xyz.conf
- confファイルを開く( CentOS )
sudo vi /etc/httpd/sites-available/test.sankil.xyz.conf
- your-domain-name を変更して、以下の conf スニペットを貼り付けます。
<VirtualHost *:80>
ServerName test.sanakil.xyz
ServerAlias test.sanaki.xyz
DocumentRoot /var/www/test.sanakil.xyz/webapp
ErrorLog /var/www/test.sankil.xyz/log/error.log
CustomLog /var/www/test.sanakil.xyz/log/requests.log combined
</VirtualHost>
- フォルダーに必要な権限を与えます。
sudo chown -R $USER:$USER /var/www/test.sanakil.xyz
sudo chmod -R 755 /var/www/test.sanakil.xyz
sudo a2ensite test.sanakil.xyz.conf
セキュリティ上の理由からデフォルトの conf ファイルを無効にします
sudo a2dissite 000-default.conf
変更を有効にするには、Apache を再起動します。
sudo systemctl restart apache2
Apache(CentOS)で仮想ホスト設定ファイルを有効にする
Apacheのシンボリックリンクを作成する
sudo ln -s /etc/httpd/sites-available/test.sanakil.xyz.conf
/etc/httpd/sites-enabled/test.sanakil.xyz.conf
変更を有効にするには、Apache を再起動します。
sudo systemctl restart httpd
HTTPS を有効にする
Ubuntu の Apache Web サーバーで HTTPS を有効にすることは、 certbot と Let’s Encrypt を使用することで簡単に行えます。
Let’s Encrypt は 、何百万もの Web サイトに SSL 証明書を無料で提供している非営利団体です。
Certbot は、Let’s encrypt を使用して Web サイトに HTTPS を自動的に設定するソフトウェアです。
Apache(Ubuntu)用のcertbotを追加してインストールする
sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-apache
Apache(CentOS)用のcertbotを追加してインストールする
sudo yum install epel-release
sudo yum install certbot python2-certbot-apache mod_ssl
SSL証明書を取得する
sudo certbot --apache -d your-domain-name
すべての検証が certbot によって問題なく行われた場合。
HTTPS リダイレクトを要求します。オプション 2 を選択して入力します。
それでおしまい。
すべてが正しく動作すると、https://test.sanakil.xyz に、作成した基本的な HTML インデックス ページが表示されます。
結論
この記事で、Apache に SSL 証明書をインストールして実装する方法について理解していただければ幸いです。
次に、Nginx で証明書を実装する方法を確認します。