松実のStudy Knowledge

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 設定画面で次を追加:

ホスト名TYPEVALUE
A<あなたのグローバルIPv4>
wwwA<あなたのグローバル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 -yApacheのインストール
sudo ufw allow 'Apache Full'HTTP/HTTPSの通信を許可
sudo apt install certbot python3-certbot-apache -yLet's Encrypt対応Certbot導入
sudo certbot --apache -d (取得したドメイン) -d www.(取得したドメイン)SSL証明書の取得と適用
sudo certbot renew --dry-run証明書自動更新テスト

松実 エンジニア(♂)

都内で働く園児ニア。
1996年生まれ
独立を夢見る、東京都内で働くOLD園児
Power Platform,Azure の分析基盤関係を主体に仕事をしている。
まずは継続的に記事を書きたい。