独自ドメインでLet's Encryptを利用(QNAP Cloudなし)

自分のドメインを持っていて、myqnapcloud を使わずに Letsencrypt の証明書を取得したいと考えていました。

最初は NAS の前にリバースプロキシを置いてみたのですが、これがqulog で問題を引き起こすことが分かったのでやめました。

次に、acme.sh を直接インストールしてみたところ、これがうまく動作したようです。以下に手順をまとめます:

# DNSプロバイダのAPIキーを取得:検証トークンのためにWebサーバーを公開しなくて済みます
# adminでsshログイン、シェルに落ちます
cd /tmp
curl -L \
  https://github.com/acmesh-official/acme.sh/archive/master.tar.gz \
  -o acme.sh.tar.gz
tar -xvf acme.sh.tar.gz
cd acme.sh-master/
# ホームディレクトリは再起動・アップグレードでも残りますが、他の共有でもOK
mkdir /share/CACHEDEV1_DATA/homes/admin/acme.sh
./acme.sh --install \
  --home /share/CACHEDEV1_DATA/homes/admin/acme.sh \
  -m "youremail@example.org"
# acmeインストールスクリプトは crontab のRAM上のコピーを変更するだけなので、永続化が必要です
crontab -l | grep acme.sh >> /etc/config/crontab
# DNSサーバーに合わせて適宜調整。ここでは(デフォルト)ゾーンのOVHを使用
export OVH_END_POINT="ovh-eu"
cd /share/CACHEDEV1_DATA/homes/admin/acme.sh/
./acme.sh --issue \
        --dns dns_ovh -d "yournas.yourdomain.com" \
        --reloadcmd "cat
/share/CACHEDEV1_DATA/homes/admin/acme.sh/yournas.yourdomain.com_ecc/yournas.yourdomain.com.key
/share/CACHEDEV1_DATA/homes/admin/acme.sh/yournas.yourdomain.com_ecc/fullchain.cer
> /etc/config/stunnel/stunnel.pem && /etc/init.d/stunnel.sh restart"

注意事項・補足:

  • システムいじりが面倒で myqnapcloud の方がよければ、ぜひそちらを選んでください:この方法は私には効きますが、壊れたら自己責任です :wink:
  • HTTP認証は使わず、DNS認証を使用しています。自分のドメインのプロバイダのAPIで、DNSAPIで使うAPIキー取得方法を調べてください。
  • NASはインターネット上に公開しておらず、ローカルのunboundインストールにて yournas.yourdomain.com の偽エントリを作り、acme.sh とローカルクライアントどちらも認証できるようにしています
  • 動作検証済み:再起動、毎日のサスペンド/スタンバイ、アップグレードでも問題ありません

混乱しています。NASがインターネットに公開されていない場合、証明書の目的は何ですか?多数のユーザーがいて一定のセキュリティレベルを必要とする「企業」環境でNASを使用しているのでなければ、ローカル証明書を持つ必要はありません。

なぜ使う理由があるのでしょうか?

例えば、自己署名証明書を受け入れる習慣をやめること。

新しいことを学ぶのも、すでに別のスレッドで触れましたが同様に大事です……それに、誰かがこの簡単なガイドを、単なる便利機能以上に必要とする場面で役立てられるかもしれません。

シェアしてくれてありがとう!!!

Lets Encryptの機能がQNAPのApp Storeにちょっとしたアプリとして提供されていたらいいですね。そうすれば、プロセスが自動化されるんです。あと、私はmyqnapcloudを使っていないので、Lets Encryptだけのアプリがmyqnapcloudなしで利用できると便利です。