http,httpsとは?
http(Hytertext Transfer Protocol)はWebサーバとWebブラウザの間で、Web情報をやりとりするためのプロトコルです。
https(Hytertext Transfer Protocol Secure)はhttpを暗号化して安全な通信を行うためのものになります。
httpのポート番号は80番でhttpsのポート番号は443番が割り当てられ、暗号化されているhttpsか暗号化されていないhttpかはWebサイトのURLを見ればわかります。
「http://」で始まるURLは暗号化されていない通信で、「https://」で始まるURLは暗号化されている通信です。
httpsは、SSL(Secure Sockets Layer)/TLS(Transport Layer Security)と呼ばれるプロトコルが作り出す、安全な接続を使って、その上でhttpによる通信を行います。
ウェブサーバーにSSL証明書をインストールし、適切に設定することでウェブサイトからhttpsとはみなされセキュアな通信を実現することができます。
SSL証明書(またはTLS証明書)はhttps通信で使用される暗号化キーを提供するデジタル証明書です。
証明書は、ウェブサーバーとクライアント(ブラウザ)の間で行われる通信のセキュリティを確保します。 証明書は信頼できる第三者機関(証明書発行局)によって署名され、公開鍵暗号化を使用して情報を保護します。 SSL証明書が適用されている場合、以下のような利点があります。
暗号化された通信: SSL証明書により、送信されるデータが暗号化されます。これにより、第三者がデータを傍受したり改ざんしたりすることが困難になります。センシティブな情報(パスワードやクレジットカード番号など)の送信時に重要です。 身元確認と信頼性: SSL証明書には、証明書発行局によって発行された署名が含まれています。これにより、ウェブサーバーの身元が確認され、ユーザーはサイトが信頼できると判断できます。ブラウザは、証明書の有効性を確認し、安全なサイトであることを示す緑色の鍵や鍵マークを表示します。
作業手順
今回は無料であるLet’s Encryptの証明書を取得・設定をします。
1.certbotのインストール
sudo yum install certbot
2.Let’s Encrypt証明書の取得とインストール
sudo certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com
上記のコマンドで、example.comとwww.example.comに対して証明書を取得します。
-wオプションはドキュメントルートのパスを指定します。
3.httpsのバーチャルホストの設定
<VirtualHost *:443> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # その他の設定... </VirtualHost>
上記の設定例では、ポート443でhttpsのバーチャルホストを定義しています。
ServerNameとServerAliasには対象のドメイン名を指定し、DocumentRootにはドキュメントルートのパスを指定します。
SSLEngine onとSSLCertificateFile、SSLCertificateKeyFileはLet’s Encryptから取得した証明書のパスを指定します。
4.httpからhttpsにリダイレクトする方法(常時SSL化)
SSL証明書のインストール、サーバーの設定が完了したらhttpをhttpsにリダイレクトさせるための設定をします。
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/html RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L] # その他の設定... </VirtualHost>
上記の設定例では、ポート80でhttpのバーチャルホストを定義し、リダイレクト設定を追加しています。
ServerNameとServerAliasには対象のドメイン名を指定し、DocumentRootにはドキュメントルートのパスを指定します。
RewriteCondとRewriteRuleの行は、httpsへのリダイレクトを行うための設定です。
5.最後にApacheの再起動
sudo systemctl restart httpd
上記の手順に従ってLet’s Encryptをインストールし、httpsのバーチャルホストを設定することで、httpsでの通信が可能になります。
ただし、設定例ではexample.comとwww.example.comを使用していますので、実際のドメイン名に合わせて適切に設定してください。
また、必要に応じてその他の設定(ドキュメントルートのパーミッション、セキュリティ設定など)も行ってください。