PR

SynologyNAS環境上で、DNS認証(Cloudflare)でLet’s Encrypt証明書を取得する手順

こんにちは。
SynologyのNAS OS(DSM)はDNS認証でのLet’s Encrypt証明書取得に対応していません。

が、SSH経由で証明書の取得・適用、ならびに自動更新をセットすることができるとの情報がありましたので、実際に試した記録を備忘代わりに残します。
今回はCloudflareのDNS認証を使用していますが、日本語での情報は少ないと思いますので参考になれば幸いです。

準備

まず、Let’s Encryptの証明書を取得するためのユーザー(例:certadmin)を作成し、所属グループは「administrator」と「http」の両方を設定しておきます。

そして、以降の作業はSSH経由で行うので、サービスを有効化しておくことも忘れないようにしましょう。

手順

1.任意のソフトを使い(RLoginなど)、作成したユーザーでSSHログイン

2.証明書取得に必要なファイルをダウンロードし、作業用ディレクトリに移動・所有権を設定する

wget -O /tmp/acme.sh.zip https://github.com/acmesh-official/acme.sh/archive/master.zip

sudo 7z x -o/usr/local/share /tmp/acme.sh.zip

sudo mv /usr/local/share/acme.sh-master/ /usr/local/share/acme.sh

sudo chown -R certadmin /usr/local/share/acme.sh/

cd /usr/local/share/acme.sh

2.証明書取得にあたり、必要な変数を設定しておく(例:Cloudflare)

export CF_Token="APIトークン(事前にCloudflareで取得しておく)"
export CF_Account_ID="アカウントID(こちらも同様にCloudflareで取得しておく)"
export SYNO_Username="certadmin"
export SYNO_Password="作成したユーザーのパスワード"
export SYNO_Certificate="Let's Encrypt"
export SYNO_Create=1

3.証明書の取得処理を実行し、DSMに適用する

./acme.sh --server letsencrypt --issue -d "*.ドメイン名" --dns dns_cf --home $PWD

./acme.sh -d "*.ドメイン名" --deploy --deploy-hook synology_dsm --home $PWD

4.証明書の自動更新について、WebGUIの「タスクスケジューラー」に処理を登録しておく

※作成時に「ユーザー指定のタスク」を選択し、実行ユーザーは「certadmin」で毎日実行の設定にする。
「タスク設定 > ユーザー指定のスクリプト」には以下のコマンドを記述する。

/usr/local/share/acme.sh/acme.sh --renew -d "*.ドメイン名" --home /usr/local/share/acme.sh --server letsencrypt

以上の操作で完了です。
ちなみに私はchownコマンドに余分な半角スペースを入れてしまい、NASの全ファイルの所有権が変わってしまいました。
責任は持てませんので、1つ1つコマンドを実行する際にチェックするように注意しましょう。。

◆参考URL
https://dr-b.io/post/Synology-DSM-7-with-Lets-Encrypt-and-DNS-Challenge

コメント 本記事へのご質問やご感想など、お気軽にどうぞ

タイトルとURLをコピーしました