サイトアイコン ITC Media

ApacheサーバーでHTTPS設定を実施|実体験を元に徹底解説

(最終更新月:2023年9月)

✔このような方へ向けて書かれた記事となります

「Apache HTTPSって何が実現できるのだろうか?」

「Apache HTTPSの設定方法について知りたい」

「Apache HTTPSの具体的な実装例を確認したい」

✔当記事を通じてお伝えすること

当では、Apache HTTPSについての基本から、その設定オプションを駆使した実装方法まで、具体例を交えながら詳細に説明します。

ぜひ最後までご覧ください。

筆者プロフィール

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

ApacheとHTTPS: 基礎知識

こちらでは、「ApacheとHTTPSの基礎知識」についてお伝えしていきます。

ApacheとHTTPSについて理解することで、安全なウェブサイト構築に役立つでしょう。

Apacheの概要とインストール方法

Apacheは、世界で最も人気のあるオープンソースのWebサーバーソフトウェアです。

以下は、Apacheのインストール方法を示すコマンドになります。

sudo apt-get install apache2

このコマンドを実行することで、Apacheがインストールされます。

初心者でも簡単にインストールできるように設計されています。

詳しくはこちらもどうぞ。

HTTPSの重要性と基本原理

HTTPSは、安全な通信を保証するためのプロトコルです。

HTTPと比べて、データの暗号化がおこなわれるため、情報の漏洩や改ざんを防げます

具体的には、TLS/SSLという技術を使用して暗号化されます。

HTTPSを使用することで、ユーザーの情報が比較的安全にインターネット上でやり取りできるのです。

Let’s EncryptでのHTTPS化

Let’s Encryptで無料証明書を活用し、HTTPS化が実用的です。

なぜならHTTPSサーバーを自作すると、認証機関などの制約からアクセスができないことも。

著者の運営するサイトでは、実際にUbuntu、Apache環境にLet’ s EncryptによるSSL化を実装しています。

以下の記事にてそのやり方を記載しているので、参考にしてください。

HTTPサーバの設置

こちらでは、「HTTPサーバの設置」についてお伝えしていきます。

HTTPサーバの適切な設置により、ウェブサイトのアクセス性と安定性が向上します。

Apacheの起動準備

Apacheを起動する前に、設定ファイルの確認や修正が必要です。

以下のコマンドでApacheの設定ファイルを開きます。

sudo nano /etc/apache2/apache2.conf

このファイル内で、必要な設定を行った後、Apacheの起動が可能。

初心者でも簡単に設定をおこなえるよう、コメントが豊富に記載されています。

ファイアウォール設定の具体手順

Apacheを外部からアクセス可能にするためには、ファイアウォールの設定が必要です。

以下のコマンドで、Apacheの通信を許可します。

sudo ufw allow 'Apache'

このコマンドを実行することで、ファイアウォールを通じてのApacheへのアクセスが許可されます。

初心者でも簡単にファイアウォールの設定をおこなえるツールです。

HTTPSサーバの構築

こちらでは、「HTTPSサーバの構築」についてお伝えしていきます。

HTTPSサーバを適切に構築することで、ユーザーの情報を安全に取り扱うことができます。

SSLモジュールの導入

Apacheには、HTTPS通信を実現するためのSSLモジュールが必要です。

以下のコマンドでSSLモジュールを有効にします。

sudo a2enmod ssl

このコマンドを実行した後、Apacheを再起動することで、SSLモジュールが有効になります。

秘密鍵の生成と意義

秘密鍵は、HTTPS通信の際の暗号化の基盤となるものです。

以下のコマンドで秘密鍵を生成します。

openssl genpkey -algorithm RSA -out server.key

この秘密鍵は、サーバーのみが知っている情報であり、これを基に通信を暗号化します。

この秘密鍵は誰にも知られてはいけません。

サーバ証明書の生成と役割

サーバ証明書は、サーバーの正当性を証明するものです。

以下のコマンドで自己署名のサーバ証明書を生成します。

openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

この証明書を使用することで、ユーザーはサーバーが正当であることを確認できます。

初心者にとっては、これがサーバーの「身分証明書」と考えるとわかりやすいでしょう。

秘密鍵と証明書の適切な配置

生成した秘密鍵と証明書は、Apacheがアクセスできる場所に配置する必要があります。

以下のコマンドで適切なディレクトリに移動しましょう。

sudo mv server.key /etc/apache2/ssl/
sudo mv server.crt /etc/apache2/ssl/

これにより、Apacheはこれらのファイルを読み込み、HTTPS通信を実現することができます。

証明書と秘密鍵のパーミッション設定

セキュリティを確保するために、証明書と秘密鍵のパーミッションを適切に設定する必要があります。

以下のコマンドで設定してください。

sudo chmod 600 /etc/apache2/ssl/server.key
sudo chmod 644 /etc/apache2/ssl/server.crt

これにより、不正なアクセスを防ぐことができます。

SSLモジュールの適切な設定

ApacheのSSLモジュールを適切に設定するために、設定ファイルを編集します。

以下のコマンドで設定ファイルを開きましょう。

sudo nano /etc/apache2/sites-available/default-ssl.conf

このファイル内で、SSLCertificateFileSSLCertificateKeyFile のパスを先ほど配置した証明書と秘密鍵のパスに変更します。

設定へのパス付け(ssl.confの修正)

最後に、ApacheがSSL設定を正しく読み込むように、ssl.confの設定を修正します。

手順は以下のとおりです。

ssl.confのリンクを読み込む

sudo a2ensite ssl

記述に問題がないかを確認する

sudo apachectl configtest

Apacheサーバーをリスタート

sudo service apache2 restart

自身でHTTPS化したサイトへアクセスする方法

自身でHTTPS化したサイトへのアクセスにはひと工夫が必要です。

なぜなら本来のHTTPS化では、第三者機関(認証機関)からの承認を経て、初めて正式と見なされるから。

こちらでは自身が発行したと確信が持てる場合のみ推奨できる、特例としての方法です。

アクセスを試みる

httpsのアドレスでアクセスを試みても、以下のような画面で表示されません。

詳細を表示する

詳細を表示から、「アクセスする」をクリックしましょう。

他人のサイトでは決してクリックしないでください。

ページが表示される

無事、ページが表示されました。

鍵マークで証明書を確認する

URL横の鍵マークを押すと、証明書を確認できます。

自身で入力した情報が表示されているはずです。

実際のHPで使うためには、正式に認証を受けた認証機関からの身元検証などを終了させる必要があります。Let’s Encryptであれば無料でできるので、とりあえず試したい方にはおすすめです。

問題処理と最適化

こちらでは、「問題処理と最適化」についてお伝えしていきます。

ApacheとHTTPSの適切な運用には、問題の早期発見とその対処、さらにはサーバの最適化が不可欠です。

Apacheの再起動エラーと対処法

Apacheを再起動する際にエラーが発生することがあります。

その原因としては、設定ファイルの誤りやポートの競合などです。

エラーメッセージを確認することで、問題の原因を特定できます。

以下のコマンドでエラーログを確認できます。

sudo cat /var/log/apache2/error.log

このログを確認することで、具体的なエラーの原因と対処法を知ることができます。

SELinuxの状態:無効化と適切なポリシー設定

SELinuxは、システムのセキュリティを強化するためのツールですが、ApacheやHTTPSの設定に影響を及ぼします。

SELinuxの状態を確認するには以下のコマンドを使用しましょう。

sestatus

SELinuxが原因で問題が発生している場合、一時的に無効化するか、適切なポリシーを設定する必要があります。

HTTPSサイトの効率的な管理

HTTPSサイトを効率的に管理するためには、証明書の更新やキャッシュの最適化など、定期的なメンテナンスが必要です。

特に、Let’s Encryptのような無料の証明書を使用している場合、証明書の有効期限が短いため、自動更新を設定しましょう。

セキュリティの更新とパッチ適用の重要性

ApacheやOS、その他のソフトウェアは、セキュリティの脆弱性が発見されるたびに更新されます。

これらの更新やパッチを定期的に適用することで、サーバのセキュリティを維持できます。

以下のコマンドで、システムの更新を確認および適用可能です。

sudo apt-get update
sudo apt-get upgrade

これにより、システムのセキュリティを最新の状態に保つことができます。

まとめ:ApacheとHTTPSの活用

当記事では、ApacheとHTTPSの活用について見てきました。

メリット・デメリットを常に意識し、適切な運用を心がけることが重要です。

最も重要なのは、セキュリティの維持とユーザーの信頼性の確保。

定期的なメンテナンスやアップデートを怠らず、安全なウェブサービスの提供を心がけてください。

モバイルバージョンを終了