みんな大好き Let's Encrypt。
DNSラウンドロビンしてると、HTTP-01 challenge でも色々頑張るとできるんだけど、
せっかくなので、DNS-01 challenge を試してみました。
サマリー
- gcloud コマンド使えるようにして、Cloud DNS の API を使えるようにする
- dehydrated っての使ってみるよ
----
設定したいインスタンスはAWS上にあります。
DNS は Cloud DNS を使っているので、
DNS管理者の権限持ったサービスアカウント作成して、鍵を作成して json ダウンロードして、つかいたいサーバにおいて
gcloud SDK インストール
apt-get だと簡単だNE
https://cloud.google.com/sdk/downloads?hl=JA#managing_an_installation
gcloud init はしなくて大丈夫
https://cloud.google.com/sdk/gcloud/reference/auth/activate-service-account
あとでプロジェクト設定しろYOって言われるので先にしとく
でも、自分のは権限ないからエラーになる
けどクレデンシャルに合ったプロジェクトになってればよさそう
LB使う場合は権限いるかも
実際の書くわけにもいかないので例
okpk
/usr/local/etc/dehydrated/config にしよう
mkdir -p /usr/local/etc/dehydrated/config
cd /usr/local/etc/dehydrated/config
cp ~/dehydrated/docs/examples/config .
domains.txt も作る
けど、引数で出来るので実はいらない説
同じディレクトリに domains.txt も置いたんだけど反応なかった
っていうか
ってファイルかあああああ
もういい、引数に書く(´・ω・`)
2回目は設定ファイルなしですすめます
ってすると、まずは
しろと言われるのでおとなしくします。
で、再度 hook 実行
こんな感じ
DNSにTXTレコード追加して~の、読めるようになるまで待ち~のなので、ちょっと時間はかかります。
数分待てば
と表示されておわり。
LBに登録するまでが dehydrated みたいですが、別にいらないのでその辺のエラーが出ても放置です。
そう、証明書さえ作れてしまえばいいのです。
ってアレだ、ROOT 直下に置かれても困るのでは問題ハハハ
--out ってあるので、せめて /etc の下のてきとーなとこに出そう・・・
とりま mkdir -p /etc/dehydrated
再読み込みしないで、--out に指定したディレクトリに移動してくれたよ!!!!
天才かよ・・・
LBに登録しにいかないオプションありそうだからヘルプをもう一度読もう
→なさそう
そして、ここで気づいた
設定したドメイン名間違ってるううううううう
あほk
HTTP-01 challenge だと間違えてると気づくけど、DNS-01 challenge だと気づかないな
これは盲点だった
A にあるかどうかまでは見てないか。
ってももう一度やり直せばいいだけなのでおkpk
やりなおして、 nginx に設定して完了。
404なのは正常です。
どっちのサーバいってもうまく出来てるね
よかったよかった( ˘ω˘)
DNSラウンドロビンしてると、HTTP-01 challenge でも色々頑張るとできるんだけど、
せっかくなので、DNS-01 challenge を試してみました。
サマリー
- gcloud コマンド使えるようにして、Cloud DNS の API を使えるようにする
- dehydrated っての使ってみるよ
----
設定したいインスタンスはAWS上にあります。
DNS は Cloud DNS を使っているので、
DNS管理者の権限持ったサービスアカウント作成して、鍵を作成して json ダウンロードして、つかいたいサーバにおいて
gcloud SDK インストール
apt-get だと簡単だNE
https://cloud.google.com/sdk/downloads?hl=JA#managing_an_installation
gcloud init はしなくて大丈夫
https://cloud.google.com/sdk/gcloud/reference/auth/activate-service-account
$ gcloud auth activate-service-account --key-file=FILENAME.json
Activated service account credentials for: [example@example.iam.gserviceaccount.com]
あとでプロジェクト設定しろYOって言われるので先にしとく
でも、自分のは権限ないからエラーになる
けどクレデンシャルに合ったプロジェクトになってればよさそう
LB使う場合は権限いるかも
実際の書くわけにもいかないので例
$ gcloud config set project exampleUpdated property [core/project].WARNING: You do not appear to have access to project [example] or it does not exist.$ gcloud config list[core]account = example@example.iam.gserviceaccount.comdisable_usage_reporting = Trueproject = example
okpk
## Configdehydrated is looking for a config file in a few different places, it will use the first one it can find in this order:- `/etc/dehydrated/config`- `/usr/local/etc/dehydrated/config`- The current working directory of your shell- The directory from which dehydrated was run
/usr/local/etc/dehydrated/config にしよう
mkdir -p /usr/local/etc/dehydrated/config
cd /usr/local/etc/dehydrated/config
cp ~/dehydrated/docs/examples/config .
domains.txt も作る
けど、引数で出来るので実はいらない説
同じディレクトリに domains.txt も置いたんだけど反応なかった
っていうか
/usr/local/etc/dehydrated/config
ってファイルかあああああ
もういい、引数に書く(´・ω・`)
2回目は設定ファイルなしですすめます
./dehydrated -c -t dns-01 -k 'hooks/google-cloud/hook.sh'
ってすると、まずは
./dehydrated --register --accept-terms
しろと言われるのでおとなしくします。
で、再度 hook 実行
./dehydrated -c -t dns-01 -k 'hooks/google-cloud/hook.sh' -d rodon-cdn-v2.puyo.jp -d rodon-cdn01.puyo.jp
こんな感じ
DNSにTXTレコード追加して~の、読めるようになるまで待ち~のなので、ちょっと時間はかかります。
数分待てば
Deploying certificate for rodon-cdn01.puyo.jp from /root/dehydrated/certs/rodon-cdn01.puyo.jp/privkey.pem and /root/dehydrated/certs/rodon-cdn01.puyo.jp/fullchain.pem
と表示されておわり。
LBに登録するまでが dehydrated みたいですが、別にいらないのでその辺のエラーが出ても放置です。
そう、証明書さえ作れてしまえばいいのです。
ってアレだ、ROOT 直下に置かれても困るのでは問題ハハハ
--out ってあるので、せめて /etc の下のてきとーなとこに出そう・・・
とりま mkdir -p /etc/dehydrated
# ./dehydrated -c -t dns-01 -k 'hooks/google-cloud/hook.sh' --domain rodon-cdn01.puyo.jp --domain rodon-cdnv2.puyo.jp --out /etc/dehydrated## !! WARNING !! No main config file found, using default config!#Processing rodon-cdn01.puyo.jp with alternative names: rodon-cdnv2.puyo.jp+ Creating new directory /etc/dehydrated/rodon-cdn01.puyo.jp ...+ Signing domains...+ Generating private key...+ Generating signing request...+ Requesting new certificate order from CA...+ Received 2 authorizations URLs from the CA+ Handling authorization for rodon-cdn01.puyo.jp+ Found valid authorization for rodon-cdn01.puyo.jp+ Handling authorization for rodon-cdnv2.puyo.jp+ Found valid authorization for rodon-cdnv2.puyo.jp+ 0 pending challenge(s)+ Requesting certificate...+ Checking certificate...+ Done!+ Creating fullchain.pem...Deploying certificate for rodon-cdn01.puyo.jp from /etc/dehydrated/rodon-cdn01.puyo.jp/privkey.pem and /etc/dehydrated/rodon-cdn01.puyo.jp/fullchain.pemERROR: (gcloud.beta.compute.ssl-certificates.create) Could not fetch resource:- Invalid CredentialsERROR: (gcloud.compute.target-https-proxies.describe) Could not fetch resource:- Required 'compute.targetHttpsProxies.get' permission for 'projects/example/global/targetHttpsProxies/https-proxy-rodon-cdn01-puyo-jp'=====================================================================================================WARNING: Unable to find https target proxy named 'https-proxy-rodon-cdn01-puyo-jp' - no automatic update performedYOU have to update your target proxy manually and set the SSL certificate to 'rodon-cdn01-puyo-jp-1565969804'Go to https://console.cloud.google.com/networking/loadbalancing/advanced/targetHttpsProxies/OR run the following command: (change $MY_HTTPS_PROY_NAME to your actual proxy name)gcloud compute target-https-proxies update $MY_HTTPS_PROY_NAME --ssl-certificates rodon-cdn01-puyo-jp-1565969804=====================================================================================================+ Done!
再読み込みしないで、--out に指定したディレクトリに移動してくれたよ!!!!
天才かよ・・・
LBに登録しにいかないオプションありそうだからヘルプをもう一度読もう
そして、ここで気づいた
設定したドメイン名間違ってるううううううう
あほk
HTTP-01 challenge だと間違えてると気づくけど、DNS-01 challenge だと気づかないな
これは盲点だった
A にあるかどうかまでは見てないか。
ってももう一度やり直せばいいだけなのでおkpk
やりなおして、 nginx に設定して完了。
$ curl -I https://rodon-cdn-v2.puyo.jp/asdfHTTP/2 404server: nginx/1.10.3date: Fri, 16 Aug 2019 16:28:23 GMTcontent-type: application/xmlx-amz-request-id: 42CBB8DDA1D3C314x-amz-id-2: xRdylDrMp2n4k0ai6EFUPCzDwiza7WfO+SHYc0tK8C1/sPj3SUqJo+IaakE7yrb/+n8XKE3TBiE=x-varnish: 42 32795age: 1341via: 1.1 varnish (Varnish/5.0)x-powered-by: Poporingx-serve-name: Poporing02$ curl -I https://rodon-cdn-v2.puyo.jp/asdfHTTP/2 404server: nginx/1.10.3date: Fri, 16 Aug 2019 16:28:24 GMTcontent-type: application/xmlx-amz-request-id: F9BA8CCC7318632Fx-amz-id-2: J3aURcK56kxCqXbX7qQ2VcvZxGS31bs+KwYLXhrJe1EXhQhSlH/NgIQkbff54rFcZvv06Z2cg0Y=x-varnish: 32822 32812age: 1142via: 1.1 varnish (Varnish/5.0)x-powered-by: Poporingx-serve-name: Poporing01
404なのは正常です。
どっちのサーバいってもうまく出来てるね
よかったよかった( ˘ω˘)
コメント