MENU

さくらのクラウドのDNSを利用したSSL自動化(dns-sakuracloud)

こんにちは、tomです。

SSL自動化が急務の中、今回は、さくらのクラウドが提供しているDNSサーバアプライアンスサービスを利用し、
サーバ上からDNS認証を使用したSSL自動化を紹介いたします。

目次

certbotとは

certbotとは、サーバ上からSSL証明書を発行することが可能なツールであり、
発行からwebサービスへの更新まで自動化可能です。

SSL証明書の有効期限短縮に伴い、手動での更新作業が負担となる為、
ツールを利用した自動化対応が迫られています。

(参考)なぜSSL証明書の有効期間は短縮されるのか?
https://www.netassist.ne.jp/techblog/35904/

certbotでの証明書発行にあたっては、特定の認証を通過する必要があります。
公開されているサイトであれば、直接認証用ファイルを設置するwebroot認証で問題ないですが、
ワイルドカードや外部公開していないドメインであればDNSレコードを参照したDNS認証を使用する必要があります。

DNS認証は、ドメインを管理しているネームサーバに応じて方法が異なりますが、
さくらのクラウドのDNSであれば専用のプラグイン(dns-sakuracloud)を使用するだけで簡単に発行できます。

certbotおよびプラグインのインストール

大抵のOSであればepelリポジトリ内に登録されているので、ここからインストールします。

# dnf install certbot python3-certbot-dns-sakuracloud --enablerepo=epel
...
Installed:
  certbot-3.1.0-1.el9.noarch                                        fontawesome-fonts-1:4.7.0-13.el9.noarch
  python-josepy-doc-1.14.0-1.el9.noarch                             python3-acme-3.1.0-1.el9.noarch
  python3-beautifulsoup4-4.10.0-6.el9.noarch                        python3-certbot-3.1.0-1.el9.noarch
  python3-certbot-dns-sakuracloud-3.1.0-1.el9.noarch                python3-cffi-1.14.5-5.el9.x86_64
  python3-chardet-4.0.0-5.el9.noarch                                python3-configargparse-1.7.1-1.el9.noarch
  python3-configobj-5.0.6-25.el9.noarch                             python3-cryptography-36.0.1-5.el9_6.x86_64
  python3-dns-2.6.1-3.el9.noarch                                    python3-dns-lexicon-3.17.0-4.el9.noarch
  python3-filelock-3.7.1-1.el9.noarch                               python3-idna-2.10-7.el9_4.1.noarch
  python3-importlib-metadata-4.12.0-2.el9.noarch                    python3-josepy-1.14.0-1.el9.noarch
  python3-lxml-4.6.5-3.el9.x86_64                                   python3-parsedatetime-2.6-5.el9.noarch
  python3-ply-3.11-14.el9.noarch                                    python3-pyOpenSSL-21.0.0-1.el9.noarch
  python3-pycparser-2.20-6.el9.noarch                               python3-pyotp-2.9.0-1.el9.noarch
  python3-pyrfc3339-1.1-11.el9.noarch                               python3-pysocks-1.7.1-12.el9.noarch
  python3-pytz-2021.1-5.el9.noarch                                  python3-pyyaml-5.4.1-6.el9.x86_64
  python3-requests-2.25.1-10.el9_6.noarch                           python3-requests-file-1.5.1-4.el9.noarch
  python3-soupsieve-2.4.1-1.el9.noarch                              python3-tldextract-3.4.4-1.el9.noarch
  python3-urllib3-1.26.5-6.el9_7.1.noarch                           python3-zipp-3.20.1-2.el9.noarch

Complete!

さくらのクラウドのAPIキーの発行・登録

さくらのクラウドのコントロールパネルのメニュー欄から、「APIキー」を選択し、
「APIキーの作成」から作成可能です。

APIキー名は任意ですが、必要項目は下記をご参考に。

さくらのクラウドのコントロールパネル

作成するとアクセストークンとアクセストークンシークレットが作成されるので、記録する。
重要な情報なので、取り扱いには気を付けてください。

APIキー情報

APIキーの発行が完了すれば、先ほどのサーバ内でAPIキー情報を記載したファイルを設置します。
個人的にはあっちこっちに散らばらないようにcertbot作業ディレクトリ配下への設置が好みです。

# mkdir /etc/letsencrypt/.key/
# vi /etc/letsencrypt/.key/tnagai-wp.click_api_key
dns_sakuracloud_api_token = 'アクセストークン'
dns_sakuracloud_api_secret = 'アクセストークンシークレット'

重要な情報なので、パーミッションの調整もお忘れなく。

# chmod 600 /etc/letsencrypt/.key/tnagai-wp.click_api_key

SSL証明書発行

準備はなんとこれだけで、あとはサーバ上からSSL証明書の発行が可能です。

# certbot certonly --dns-sakuracloud --dns-sakuracloud-credentials /etc/letsencrypt/.key/tnagai-wp.click_api_key --agree-tos -d tnagai-wp.click -d *.tnagai-wp.click --register-unsafely-without-email
Account registered.
Requesting a certificate for tnagai-wp.click and *.tnagai-wp.click
Waiting 90 seconds for DNS changes to propagate

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/tnagai-wp.click/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/tnagai-wp.click/privkey.pem
This certificate expires on 2026-06-03.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

コマンドオプションの中でも特徴的なのを説明します。

--dns-sakuracloud
さくらのクラウドのDNSを使用したDNS認証を指定しています。
--dns-sakuracloud-credentials
さくらのAPIキー情報が必要な為、そのファイルパスを指定しています。
-d ドメイン
ワイルドカードを発行する場合、*.ドメインと入力する必要があります。
--register-unsafely-without-email
メールによるお知らせ通知を停止しています。
以前は有効期限通知を行っていましたが、昨年終了した為、特段設定する意味は少ないです。

証明書が無事発行されました。実際に取得したファイルは下記に保存されます。

# ll /etc/letsencrypt/live/tnagai-wp.click/
total 4
lrwxrwxrwx 1 root root  39 Mar  5 18:05 cert.pem -> ../../archive/tnagai-wp.click/cert1.pem
lrwxrwxrwx 1 root root  40 Mar  5 18:05 chain.pem -> ../../archive/tnagai-wp.click/chain1.pem
lrwxrwxrwx 1 root root  44 Mar  5 18:05 fullchain.pem -> ../../archive/tnagai-wp.click/fullchain1.pem
lrwxrwxrwx 1 root root  42 Mar  5 18:05 privkey.pem -> ../../archive/tnagai-wp.click/privkey1.pem
-rw-r--r-- 1 root root 692 Mar  5 18:05 README

証明書更新の自動化

これだけでは、1回証明書を発行しただけなので、実際にはcron等に更新コマンドを設定しますが、
その際は、プラグインのオプション等はいらないので、通常の更新コマンドで問題ないです。

# certbot renew

webサービスへの証明書反映を含めるともう少しかかりますが、さくらのクラウドのDNSであれば、
DNS認証も簡単にできますね。

今後もcertbotやSSL自動化に関連する情報を紹介できたらなと思います。それでは

お問い合わせ

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

猫とお酒好き
さくらのクラウド検定取得

目次