Let's Encryptを使った無料HTTPS化手順
背景
ローカル環境でWebアプリケーションを運用する場合でも、外部公開やセキュア通信(HTTPS)対応は欠かせません。
特にApacheを利用している場合、Let's Encryptを用いた無料SSL証明書の導入がとても楽にできます。
本手順では、Linux環境でApacheを用いてHTTPS化して外部公開するまでStep by Stepで解説します。
目的
- ローカルLinuxサーバー(例: Raspberry Pi)を外部公開する
- ApacheでWebサイトを運用する
- Let's Encryptを利用してHTTPS化(SSL証明書の自動更新含む)
手順
0. 前提
- Linux環境(例: Ubuntu)
- Linuxサーバーへのssh接続が可能
- お名前ドットコムなどでドメインを取得している
- Linuxサーバーがローカルネットワーク内にある
1. パッケージ更新とApacheインストール
パッケージの更新
sudo apt updatesudo apt upgrade -y
Apacheのインストール
sudo apt install apache2 -y
2. ファイアウォール設定(ufw)
ufwのインストール
sudo apt install ufw -y
ufwのenable(起動時から有効)&ステータス確認
sudo ufw enablesudo ufw status
Apacheの通信を許可(80&443ポート)
sudo ufw allow 'Apache Full'
3. ルーターでポート転送(Port Forwarding)
ルーター管理画面にログインして、外部 -> 内部転送を設定。
例:linuxサーバーのIPアドレスが192.168.0.3の場合
外部ポート 80 TCP → 内部 IP 192.168.0.3 ポート 80 TCP
外部ポート 443 TCP → 内部 IP 192.168.0.3 ポート 443 TCP
※ISP(プロバイダ)がポートをブロックしている場合があります(特に住宅向け)。その場合はプロバイダに問い合わせか別手法(トンネル)を検討してください。
ルーター管理画面の例(Aterm)
4. Apacheの動作確認
Apacheの起動
sudo systemctl start apache2
Apacheのenable(起動時から有効)&ステータス確認
sudo systemctl enable apache2sudo systemctl status apache2
ブラウザで http://サーバーのIPアドレス にアクセスし、Apacheのデフォルトページが表示されればOKです。
5. DNS(お名前.com)で A レコードを追加
お名前.com の DNS 設定画面で次を追加:
| ホスト名 | TYPE | VALUE |
|---|---|---|
| @ | A | <あなたのグローバルIPv4> |
| www | A | <あなたのグローバルIPv4> |
保存→反映(数分〜1時間)。以下、確認作業
digのインストール
sudo apt install dnsutils
確認作業(Global IPが帰ってくればOK)
dig A (取得したドメイン) +shortdig A www.(取得したドメイン) +short
6. Let's Encrypt(Certbot)インストール
sudo apt install certbot python3-certbot-apache -y
7. Let's EncryptでSSL証明書を取得・適用
ドメインがサーバーを正しく指していることを確認したうえで、以下を実行します。
sudo certbot --apache -d (取得したドメイン) -d www.(取得したドメイン)
以下のように出力されるため、質問に合わせて回答を入力します。
1)メールアドレスの入力
Enter email address or hit Enter to skip.(Enter 'c' to cancel):
→メールアドレス入力してEnter
2)利用規約
Please read the Terms of Service at:https://letsencrypt.org/documents/LE-SA-v1.5-February-24-2025.pdfYou must agree in order to register with the ACME server. Do you agree?(Y)es/(N)o:
→Yと入力してEnter
3)Electronic Frontier Foundationにメールアドレスの共有許可
Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom.(Y)es/(N)o:
→Yと入力してEnter
成功すると、以下に証明書が保存されます:
- /etc/letsencrypt/live/(取得したドメイン)/fullchain.pem
- /etc/letsencrypt/live/(取得したドメイン)/privkey.pem
※以前証明書を作成している場合、既存のものに追記される場合があります。保存先を確認しておきましょう。
また、自動更新用のスケジュールタスクも自動で作成されます。
8. HTTPS動作確認
ブラウザで https://(取得したドメイン) にアクセスし、「安全な通信」と表示されれば成功です。
9. 自動更新確認
sudo certbot renew --dry-run
エラーが出なければ、自動更新も問題ありません。
まとめ
| コマンド | 目的 |
|---|---|
| sudo apt install apache2 -y | Apacheのインストール |
| sudo ufw allow 'Apache Full' | HTTP/HTTPSの通信を許可 |
| sudo apt install certbot python3-certbot-apache -y | Let's Encrypt対応Certbot導入 |
| sudo certbot --apache -d (取得したドメイン) -d www.(取得したドメイン) | SSL証明書の取得と適用 |
| sudo certbot renew --dry-run | 証明書自動更新テスト |