[Let’s Encrypt]さくらのクラウドDNS経由でワイルドカード証明書を後付けのcertbotで取得する方法

  • 2020年11月16日
  • 2020年11月16日
  • Linux

さくらのクラウド上でサーバー(インスタンス)を立ち上げる際、割り当て予定のドメインがさくらのクラウド DNSを使用している状態であれば、Let’s EncryptによるSSL証明書をインストールスクリプトで自動インストールさせることができます。

さくらのクラウドのLet’s Encryptスクリプトでは、DNS認証を利用しているようなのですが、DNS認証であれば通常のSSL証明書に加え、ワイルドカード証明書の取得も行うことができます。

さて、状況によっては、サーバーを構築した後で”Let’s Encryptのワイルドカード証明書を発行できるようにしたい”という場合が出てくることがあります。

この際、certbot-autoを手動でインストールしても、さくらのクラウドのDNSを使用したDNS認証を行うのに必要なcertbotプラグイン、certbot-dns-sakuracloudは含まれていないため、別途入手する必要があります。

今回は、後からインストールしたcertbotでさくらのクラウドDNSを使用したワイルドカード証明書を取得する方法をご紹介したいと思います。

まず、certbot-autoをインストールしておきます。

sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
sudo chmod +x /usr/bin/certbot-auto

インストールとは言っても、Let’sEncryptの公式サイトからcertbot-autoの本体をダウンロードしてOSの適切な場所へ配置し、実行権限を与えるだけです。

保存先は/usr/binである必要は必ずしもないですが、パスが通っていないディレクトリに配置した場合は.bashrcなどに記述をして、パスを通すように変更する必要があります。

次に、certbot-autoのセットアップを行います。

 sudo /usr/local/bin/certbot-auto  --version

のような影響の少ないコマンドでcertbot-autoを動かせば、初回セットアップが自動的に行われます。

初回セットアップが完了すると

/opt/eff.org/certbot

ディレクトリが作成されます。

作成されていることを確認したら、カレントディレクトリを次の場所に移動します。

cd /opt/eff.org/certbot/venv

カレントディレクトリを移動したら、続けて下記のコマンドを実行します。

source bin/activate #certbot用のpython仮想環境に移動
pip install certbot-dns-sakuracloud

これで、さくらのクラウド DNS用のcertbotプラグインのインストールが始まります。

完了したら、次のコマンドでPythonの仮想環境から抜けます。

deactivate

次に、さくらのクラウドのAPIキーを取得しておきます。
APIキーの取得方法については下記サイトを参照してください。

さくらのクラウドDNS + Let’s Encrypt でワイルドカード証明書する! – Qiita

ここで取得したAPIキーを、ファイルに保存しておきます。

sudo vi ~/.sakura

先程取得したさくらのクラウドのAPIキーを下記のように記述します。

ファイルの内容:

dns_sakuracloud_api_token = 'アクセストークン'
dns_sakuracloud_api_secret = 'アクセストークンシークレット'

上記で作成した.sakuraファイルのパーミッションを変更します。

sudo chmod 600 ~/.sakura

これで下準備は完了です。

それでは実際に証明書を取得しましょう。

sudo certbot-auto certonly --dns-sakuracloud \
--dns-sakuracloud-credentials ~/.sakura \ #APIキーを記述したファイルのパスを指定
-d example.com -d *.example.com \ #SSLを取得したいドメインを指定
-m mail@example.com \ #Let's Encryptから通知を受けるメールアドレスを指定
--agree-tos \ #規約に同意
--manual-public-ip-logging-ok \
--preferred-challenges dns-01 \
--server https://acme-v02.api.letsencrypt.org/directory
--renew-hook "SSL証明書更新時に実行したいコマンド"

これで認証に問題がなければ証明書が発行されます。

なお、”–renew-hook”の指定は任意ですが、certbot単体ではサーバーの自動再起動などは行ってくれないため、webサーバーやメールサーバーなどで利用している場合は指定をお勧めします。

なお、上記のコマンドで更新時の設定が

/etc/letsencrypt/renewal

に保存される為、2回目以降の更新時は

sudo certbot-auto renew

のみでokとなります。(デフォルトで30日以上期限がある場合は更新がスキップされるので、強制的に更新を行う場合は “–force-renew”オプションを付加して実行します。)

上記のコマンドをcronに登録しておけば、定期的に証明書をチェックさせたうえで、期限が迫った際に自動で更新させるようにすることもできます。

さくらのクラウド DNSを使用している方は是非試してみてください。

参考サイト:

【Let’s Encrypt】さくらのクラウドのDNSで「DNS-01 Challenge」を使ってみた – TeraDas

無料でHTTPS化できる「Let’s Encrypt」をやってみた ※install.sh付き – Qiita

さくらのクラウドDNS + Let’s Encrypt でワイルドカード証明書する! – Qiita

Certbotプラグインをインストールする方法は? – QAStack

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG