[Atlas][ACME]Apache 2.x + Certbot(新規、自動更新)

  1. GMOグローバルサインサポート
  2. Atlasサポート情報
  3. ACME関連
  4. [Atlas][ACME]Apache 2.x + Certbot(新規、自動更新)
最終更新:2025年12月04日

本マニュアルは、サーバ証明書の設定手順をご案内するものです。
apacheのインストールや、コマンドの意味等はご案内しておりませんので、各情報サイトや参考書籍等でご確認ください。
本手順では以下の環境を使用し、動作を確認しております。

使用した環境

OS:RHEL9
ウェブサーバアプリケーション:Apache2.4.53
Acmeクライアント:Certbot2.6.0
Atlasのアカウント及び、API Key、MAC Key

※弊社では以下の手順にて動作検証をおこなった際の一例をご紹介しており、動作を保証するものではございません。本手順について内容の変更等や誤りがあった場合、弊社では一切の責任を負いかねることを予めご了承ください。詳細は各アプリケーションのドキュメント等をご参照ください。
※Apacheはオープンソースのアプリケーションです。脆弱性などの問題がないか、随時情報を確認いただき、万一問題が発見された場合は、該当サービスの停止や、対応パッチがリリースされている場合は速やかに適用するなど、運用には十分ご注意ください。
※本手順で実行するコマンドはLinux環境、Ubuntu環境で共通のものになります。

1.事前準備

  1. ご利用のLinux環境にて下記コマンドを順に実行しcertbotをインストールします。

    dnf -y install certbot
    dnf -y install python3-certbot-apache ※後程実施いただく"certbot run"コマンドを実行する場合に必要となります。

    ※certbotインストールのために【EPEL release】という追加パッケージセットが必要なため、インストールされているかどうか不明な場合は下記コマンドを実行してください。
    dnf install epel-release 上記の実行後応答がない場合には、下記コマンドにてインストールしてください。
    ※インストール後は、再度"dnf install epel-release"コマンドを実施ください。
    dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

  2. 証明書を設定するウェブサイトへアクセス(名前解決)ができるよう事前にご設定ください。

  3. VirtualHostの設定
    conf.dディレクトリ内に下記コマンドにてconfファイルを新規作成し下記内容を追加してください。

    vi /etc/httpd/conf.d/vhost-ssl.conf
    <VirtualHost  *:80>
    DocumentRoot  "/var/www/html/"
    ServerName www.exmple.com
    </VirtualHost>
    ※"ServerName"で指定する値はアクセス時に利用するFQDNをご指定ください。
    

    ※バーチャルホストを指定されていない場合、certbotの発行コマンド実行後、下記エラーが発生します。
    「Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.」

  4. 証明書を設定するウェブサイトへアクセス(名前解決)ができるよう事前にご設定ください。

  5. certbotの事前設定
    AtlasポータルからKey ID:<API-KEY>、ACME MAC:<ACME-MAC>を取得してください。
    Atlasポータルからそれぞれの情報の取得方法については、下記ページをご確認ください。
    API Credentialsの取得方法について ACME MACの取得方法について

  6. 下記コマンドを実施いただき、アカウントの紐づけを行います。

    certbot register -m 'mail@example.jp' --agree-tos --eab-kid 'KeyID' --eab-hmac-key 'MACkey' --server 'https://emea.acme.atlas.globalsign.com/directory'

    ※赤字表記の部分は記載例ですので、お客様の環境によって読み替えてください。

    入力後、(Y)es/(N)o: の確認が行われるため、「Y(y)」を入力後、「Enter」キーを押下ください。

2.証明書発行と自動更新設定

  1. 証明書の発行とバインドのため、以下のコマンドを実施ください。

    certbot run --apache -d www.exmple.com --key-type rsa --server 'https://emea.acme.atlas.globalsign.com/directory'

    ※"www.example.com"は適用する証明書のコモンネームをご指定ください。

    ※複数のFQDNを指定する場合、「example.jp,www.example.jp」のように「,」(カンマ)で区切って指定します。
    複数のFQDNを指定することで、それらのFQDNがSAN(そのサーバー証明書を設定・使用するドメイン名)に記載された、1枚の証明書が発行されます。

    成功時のレスポンス(一例)

    発行された証明書は通常、以下のディレクトリで確認できます。
    証明書 : /etc/letsencrypt/live/${FQDN}/fullchain.pem
    秘密鍵 : /etc/letsencrypt/live/${FQDN}/privkey.pem
    ※ ${FQDN} は、証明書を設定したWebサーバーのFQDNを示します。
    ※ /etc/letsencrypt は、Certbotがデフォルト設定で生成するディレクトリです。

    証明書発行とバインドのコマンド実施後、【vhost-ssl-le-ssl.conf】ファイルにて設定された証明書を確認することができます。

    vi /etc/httpd/conf.d/vhost-ssl-le-ssl.conf
  2. ご利用のブラウザから設定されたFQDNにアクセスし、証明書が設定されているかご確認ください。

  3. 下記コマンドを実施し証明書の自動更新の設定を行います。

    systemctl enable --now certbot-renew.timer

    設定後は下記コマンドを実行することでスケジュールの確認が可能です。

    systemctl list-timers
  4. 証明書の自動更新後はApacheの再起動を行うことで適用されます。下記手順にて証明書の更新後、再起動も自動化することが可能です。

    下記コマンドを実行し、設定ファイルを開きます。

    vi /etc/sysconfig/certbot

    下記の箇所部分を確認。

    # An example to restart httpd would be:
    # POST_HOOK="--post-hook 'systemctl restart httpd'"
    POST_HOOK="";
    

    以下の内容に書き換えます。

    # An example to restart httpd would be:
    # POST_HOOK="--post-hook 'systemctl restart httpd'"
    POST_HOOK="--post-hook 'systemctl restart httpd'"
    

補足

certbotのバージョンによっては自動化のコマンドに対応していない可能性があります。その場合はcrontabコマンドを使用します。

サーバ証明書の更新自動化のため下記コマンドを実施しcronの設定画面を開きます。

crontab -e

下記の内容を記述します。
※日時は一例(10日ごとに更新)です。任意の値をご設定ください。

* * */10 * * sudo certbot renew

※証明書は有効期限の30日前から更新可能です。
※更新可能期間外でも指定日時で更新申請が実施されますが、証明書は発行されません。

「*」に指定する値は実施する日時を指定します。詳細は下記をご参考ください。

*の位置(左から)頻度指定可能な値
10~59
20~23
31~31
41~12
5曜日0~6(0日曜、以降順に続く)

例1:30日ごとに実行する場合

* * */30 * * sudo certbot renew

例2:3月、6月、9月、12月の15日、07時10分に実行する場合

10 7 15 3,6,9,12 * sudo certbot renew

下記コマンドにて証明書の有効期間が30日以上残っている場合でも、強制的に更新が可能です。

certbot renew --force-renewal

緊急で証明書の入れ替えが必要になった場合等に、本オプションを指定してください。 ※大量の証明書発行が継続して行われた場合、サーバー側で申請を制限する場合があります。

ACMEアカウントに関連する Certbotのサブコマンド・オプション(一部)

コマンド説明
registerACMEアカウントを作成します。
-m ’MAIL’ACMEアカウントに設定するメールアドレスを指定します。
(コマンドラインでのオプション指定は任意ですが、指定しない場合にはインタラクティブに入力を求められます)
--agree-tosGlobalsignの利用規約に同意します。
(コマンドラインでのオプション指定は任意ですが、指定しない場合にはインタラクティブに入力を求められます)
--eab-kid ’KID’ACMEアカウントの認証情報を指定します。(Key ID)
※Atlasポータルから取得
--eab-hmac-key ’HMAC-KEY’ACMEアカウントの認証情報を指定します。(ACME MAC)
※Atlasポータルから取得
--server ’SERVER’申請先のサーバホストを指定します。

以下のような固定値を入力してください。
サンプル:'https://acme.globalsign.com/directory'

証明書発行に関連する Certbotのサブコマンド・オプション(一部)

コマンド説明
-d証明書を発行するFQDNを指定します。カンマで区切ることで複数指定が可能です。
--apacheapacheプラグインを利用して、証明書の発行とインストールを自動化します。利用する認証方法はファイル認証となります。
--key-typersaを指定します。
※Certbot 2.0.0以降、指定しない場合申請エラーになります。