Open7
プライベートネットワーク内でACEME DNS01 challengeを実現する
DNS-01 challengeで必要となるコンポーネント
- PKI (hashicorp Vaultを使う)
- DNS (powerDNSで建てる)
- ACMEクライアント (Certbotを利用。今後はLegoにしようと思っている。)
上のコンポーネント使って、証明書を取得することはできた。DNSにTXTレコードを登録するところは手動になってしまっているので、DNSのAPIを使って自動登録できるようにしたい。
必須ではないがDNSSECを有効にして、セキュアに登録したい。
powerdnsのDNSSEC有効化方法。
# vi /etc/pdns/pdns.conf
## 以下を追記。バックエンドがpostgresqlの場合。
gpgsql-dnssec=yes
# systemctl restart pdns
# pdnsutil secure-zone <<zone名>>
クライアント側は特に設定は不要っぽい。
本当にsecureになっているか確認したい。
powerdns apiをhttps化できるか?
→できないっぽい。
x-api-keyヘッダは平文で送られる。httpsならば暗号化される。
ヘッダ情報はハッシュ化されているようなこともない。あくまで平文。
nginxリバプロでhttps化する方法があるみたい・・・。
PowerDNS api有効化
とりあえずapiを有効化する。
# vi /etc/pdns/pdns.conf
api=yes
api-key=<<任意の文字列を設定>>
# systemctl restart pdns
confファイルにAPI key書くの良くない。hashicorp vaultから取得する様にできないかな。
現在APIちゃんと使えているのか確認どうする?
clientにlegoをインストールする。
almalinuxだとsnapでインストール。まずはsnapを入れる。
snapdをインストールする。
# dnf install -y epel-release
# dnf install -y epel-next-release
# ln -s /var/lib/snapd/snap /snap
echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' > /etc/profile.d/snap.sh
# systemctl enable --now snapd.service snapd.socket
Created symlink /etc/systemd/system/multi-user.target.wants/snapd.service → /usr/lib/systemd/system/snapd.service.
Created symlink /etc/systemd/system/sockets.target.wants/snapd.socket → /usr/lib/systemd/system/snapd.socket.
legoインストール
# snap install lego