2026年5月24日
2026年5月24日
ドメインのSSL証明書を更新する方法(自動更新の確認と有料証明書の差し替え手順)
SSL証明書の更新は、まず「その証明書をどこで、どの方法で発行したか」を特定するところから始まります。レンタルサーバーの無料SSLやcertbotで取得したLet's Encryptなら自動更新が動いているかを確かめ、認証局から購入した有料証明書なら新しい証明書を発行し直してサーバーに差し替えます。この記事では、現在の証明書の期限を調べる方法から、発行方法ごとの更新手順、更新後の確認までを順に説明します。
まず現在の証明書と期限を確認する
更新作業の前に、いまブラウザに返している証明書の情報を確認します。手元のPCやサーバーで次のコマンドを実行すると、発行者・対象ドメイン・有効期限が分かります。
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltName
notAfter が有効期限です。issuer に「Let's Encrypt」や「R10」「E5」のような表記があればLet's Encrypt系、認証局の社名が入っていれば有料証明書の可能性が高いと判断できます。-servername を付けないと、同じIPで複数サイトを動かしているサーバーでは別サイトの証明書が返ることがあるため、省略しないでください。-ext オプションが使えない古いOpenSSLでは、その部分を外して実行します。
あわせて確認したいのが「証明書がどこに置かれているか」です。CDN(Cloudflareなど)やロードバランサーで HTTPS を終端している構成では、オリジンサーバーの証明書を更新しても訪問者に見える証明書は変わりません。どの層の証明書を更新するのかを最初に決めておくと、作業の空振りを防げます。
ケース1:レンタルサーバーの無料SSL(自動更新)
多くのレンタルサーバーでは、管理画面で無料SSLを有効にするとサーバー会社が自動で更新します。通常は何もしなくてよいのですが、次の条件が崩れると更新が止まります。
- ドメインのDNS(Aレコード)がそのサーバーを向いていない。ネームサーバーを別のDNSサービスに移した、CDNのプロキシを有効にした、などがきっかけになります。
- CAAレコードで、そのサーバーが使う認証局を許可していない。
/.well-known/acme-challenge/へのアクセスが、Basic認証・リダイレクト設定・セキュリティプラグインなどで塞がれている。
更新が失敗していても管理画面の表示が「有効」のままのことがあります。期限が近いのに新しい証明書に替わらない場合は、上の3点を確認したうえで、管理画面から無料SSLを一度再設定する、またはサポートに更新状況を問い合わせます。メニュー名や再設定の方法はサーバー会社ごとに異なるため、各社のマニュアルを参照してください。
ケース2:certbotで取得したLet’s Encrypt(VPS・自前サーバー)
certbotは導入時に自動更新の仕組み(systemdタイマーやcron)を登録します。まず、証明書の一覧とタイマーが動いているかを確認します。
sudo certbot certificates
systemctl list-timers | grep -i certbot
次に、実際には更新せずに更新処理だけを試す --dry-run を実行します。ここでエラーが出なければ、期限が近づいたときに自動で更新される見込みが高いと判断できます。
sudo certbot renew --dry-run
よくある失敗は、DNSの向き先が変わった、ファイアウォールで80番ポートを閉じた、Webサーバーの設定変更でチャレンジ用のパスが別ディレクトリに向いた、のいずれかです。エラーメッセージに出るドメイン名と検証方式(http-01 か dns-01 か)を読み、該当する設定を直してから再度 --dry-run を試します。
もう一つ見落としやすいのが、更新後にWebサーバーを再読み込みしていないケースです。証明書ファイルは新しくなっても、NginxやApacheが古い証明書をメモリに持ったままだと期限切れになります。更新成功時に再読み込みする設定を入れておきます。
sudo certbot reconfigure --cert-name example.com --deploy-hook "systemctl reload nginx"
reconfigure サブコマンドがない古いcertbotの場合は、/etc/letsencrypt/renewal/example.com.conf の [renewalparams] に deploy_hook = systemctl reload nginx を追記する方法でも同じことができます。設定ファイルを編集する前にコピーを取っておいてください。
なお、Let's Encryptは2025年に有効期限切れの通知メールを終了すると発表しています。メールが届くことを前提にしていた運用は、外部の監視サービスやスクリプトでの期限チェックに切り替えておくと安心です。証明書の有効期間を短くする方針も公表されているため(2026年10月現在)、手動更新ではなく自動更新が前提の構成にしておくことをおすすめします。
ケース3:認証局から購入した有料証明書
有料証明書の「更新」は、既存の証明書の期限を延ばす操作ではなく、新しい証明書を発行し直してサーバーに入れ替える作業です。流れは次のとおりです。
- 新しい秘密鍵とCSRを作る(鍵は使い回さず作り直すのが望ましい)
- 販売店または認証局の管理画面でCSRを提出し、ドメイン認証(メール・DNSのTXTレコード・HTTPファイルのいずれか)を済ませる
- 発行された証明書と中間証明書を受け取る
- サーバーに配置して設定を差し替え、再読み込みする
CSRはサーバー上で作成します。秘密鍵は外部に送らないでください。
openssl req -new -newkey rsa:2048 -nodes \
-keyout example.com.2026.key -out example.com.2026.csr \
-subj "/CN=example.com"
ファイル名に年などを入れて旧ファイルと区別しておくと、問題が出たときに元へ戻しやすくなります。OV・EV証明書ではCSRの組織情報が審査に使われるため、販売店の指示に合わせて項目を入力します。
業界ルール(CA/Browser Forum)の改定により、公開TLS証明書の最長有効期間は段階的に短くなっており、2026年3月以降は約200日が上限とされています(2026年10月現在)。「複数年契約」の証明書でも、契約期間中に何度か再発行と差し替えが必要になる場合があります。契約内容と再発行の方法を販売店の案内で確認しておいてください。
サーバーへの配置
Nginxでは、サーバー証明書と中間証明書を連結した「フルチェーン」のファイルを指定します。
ssl_certificate /etc/nginx/ssl/example.com.2026.fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/example.com.2026.key;
Apache 2.4.8以降も、SSLCertificateFile に中間証明書まで含めたファイルを指定できます。中間証明書を入れ忘れると、PCのブラウザでは表示できてもスマートフォンや外部ツールでエラーになる、という分かりにくい症状が出ます。
設定を書き換えたら、再読み込みの前に構文チェックをします。
sudo nginx -t && sudo systemctl reload nginx
# Apache の場合
sudo apachectl configtest && sudo systemctl reload apache2
構文エラーのまま再起動するとサイト全体が止まるため、チェックが通ってから reload(restart ではなく)を使います。
更新後に確認すること
更新が終わったら、最初と同じ openssl s_client のコマンドで notAfter が新しい日付になっているかを確認します。そのうえで次の点も見ておきます。
- 中間証明書を含む証明書チェーンが正しく返っているか(外部のSSLチェックツールでも確認できます)
wwwあり・なしなど、証明書の対象ドメイン(SAN)に必要な名前がすべて含まれているか- メールサーバー(Postfix・Dovecotなど)やFTPS、管理用の別ポートで同じ証明書を使っていないか。使っている場合はそちらも差し替えと再読み込みが必要です
- CDNやロードバランサーを使っている場合、そちらの証明書の期限
WordPress側は、証明書を差し替えただけなら設定変更は不要です。ただし、更新のついでに HTTP から HTTPS へ切り替える場合は、サイトURLの変更や混在コンテンツの対応が別途必要になります。
まとめ
- 最初に
openssl s_clientで現在の証明書の発行者と期限を確認し、更新する層(サーバー・CDN・ロードバランサー)を特定します。 - レンタルサーバーの無料SSLは自動更新ですが、DNSの向き先・CAAレコード・チャレンジ用パスの遮断で止まることがあります。
- certbotは
certbot renew --dry-runで更新を試し、更新後にWebサーバーを再読み込みする設定を入れておきます。 - 有料証明書は新しい鍵とCSRで再発行し、中間証明書を含めて配置、構文チェック後に reload します。
- 有効期間の短縮や通知メールの終了を踏まえ、期限の監視は自前で用意しておくと安心です。