Let’s Encrypt とは?
Let’s Encrypt は無料で利用できるSSL/TLS証明書を提供する認証局(CA)です。
WebサイトのHTTPS対応に最適で、自動更新も可能です。
前提条件チェック
- サーバ:Amazon Linux 2023
- Webサーバ:Apache(httpd)を使用
- ドメイン:取得済みで、対象サーバにAレコードが向いている
- root権限:sudoが使えるユーザーで作業(ALの場合はデフォルトのec2-userで可)
1. Apache のインストールと起動確認
sudo dnf install -y httpd
sudo systemctl enable httpd
sudo systemctl status httpd
ブラウザで http://<ドメイン>
にアクセスし、Apacheのテストページが表示されるか確認。
2. Certbot と前提パッケージのインストール
sudo dnf install -y mod_ssl
sudo dnf install -y certbot python-certbot-apache
3. 証明書の取得
以下のコマンドを実行します(ドメイン名の例→www.hogehoge.com):
certbot certonly --webroot -w /var/www/html/ -d <ドメイン名>
インストール時の質問と推奨回答例
質問 | 内容 | 推奨回答 |
---|---|---|
メールアドレス | 通知用のメールアドレス | 任意(有効なもの) |
利用規約に同意 | 利用条件に同意しますか? | Y |
EFFのメールを受け取るか | 広報メール受信の是非 | N または Y (Nで問題なし) |
ドメイン選択(※) | 対象ドメインの選択 | 番号で選択 |
HTTP→HTTPSへリダイレクト(※) | リダイレクト設定 | 2 (常時HTTPSを推奨) |
(※)聞かれない場合あり
4. 証明書のファイルパス
証明書は以下のディレクトリに配置されます:
/etc/letsencrypt/live/<ドメイン名>/
ファイル名 | 用途 |
---|---|
fullchain.pem | サーバ証明書(中間証明書込み) |
cert.pem | サーバ証明書 |
chain.pem | 中間証明書 |
privkey.pem | 秘密鍵 |
fullchain.pemがある場合は「cert.pem」「chain.pem」は不要です。
Apacheの設定ファイルにこれらを指定することで、手動でもSSLを適用可能です。
5. Apache 設定ファイルの修正
バックアップを取得してから以下ファイルを編集します:
vi /etc/httpd/conf.d/ssl.conf
以下のパスを配置された証明書ファイルのパスに修正:
SSLCertificateFile /etc/letsencrypt/live/<ドメイン名>/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<ドメイン名>/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/<ドメイン名>/chain.pem
6. 自動更新設定(cron)
必要に応じてインストール:
sudo dnf install -y cronie
cron編集:
sudo crontab -u root -e
0 4 * * * certbot renew --quiet --deploy-hook "systemctl restart httpd"
※毎日午前4時に証明書更新コマンドを実施し、更新後にApache再起動を実施
(–quietは出力を抑えるオプション)
7. Apache の再起動
sudo systemctl restart httpd
8. ブラウザ確認
https://<ドメイン>
でSSL化されたサイトにアクセスできるか確認してください。
<追記> www無しのドメインにも証明書を適用する場合
追加用コマンドを実施する:
sudo certbot certonly --webroot -w /var/www/html -d <ドメイン(wwwあり)> -d <ドメイン名(www無し)>
> (E) を押す
エラー例と対応
エラー | 原因 | 対応策 |
---|---|---|
ポート80が使用中 | 他プロセスが使っている | Apacheが動作しているか確認 |
ドメインが解決できない | DNS未設定 | Aレコードの確認 |
Too many certificates | 短期間で取得しすぎ | 数時間待つか --staging オプションを使用 |
まとめ
- certbot を使うとApacheに対して自動的にSSL証明書を設定可能
- メールアドレス登録やHTTPSリダイレクト設定も対話式で簡単
- 自動更新機構付きで運用負荷も低い
参考リンク
- Certbot公式:https://certbot.eff.org/
- Let’s Encrypt 公式:https://letsencrypt.org/docs/