【GKE】証明書のワイルドカード対応
GoogleマネージドSSL証明書はワイルドカードをサポートしていない
無効なドメイン名またはワイルドカード ドメイン名が spec.domains フィールドに指定されている場合。マネージド証明書では、*.example.com のようなワイルドカード ドメインをサポートしていません。
引用:https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs?hl=ja
GCPでも証明書を発行出来るのですがワイルドカードをサポートはしていません。
サブドメインが増えれば増えるほど管理する証明書が増えて大変になるのと、Ingressのyamlが凄く散らかるのでワイルドカード証明書を発行しようと思った次第です。(特に現行のプロジェクトは大量にサブドメインが増えるプロダクトなのでなおさらという感じ)
HelmのCert-managerとかを使えば、自動発行と自動更新やってくれるっぽいのですが2-3日格闘して諦めました。
ここに学習コスト今の段階で割きたくないな〜と思って、Lets Encryptで手動発行に切り替えた訳です。(期間は90日と短いのですがCronとか叩けば良いかと思った訳です。)
ワイルドカード証明書発行の手順
ほぼ以下ドキュメントの受け売りです。
自分で備忘録残した方が、もう一回触る時とかに探さなくて済むので自分で書きました。
参考:http://yuki-toida.hatenablog.com/entry/2018/03/23/203915
以下手順で進めていきます。
- certbotのインストール
- certbotの実行
- DNSにTXTレコードを入力
- Secret作成
- IngressでSecret読み込み
certbotのインストール
$ brew install certbot
certbotの実行
以下項目を入力しましょう。
- チャレンジ方式
- Lets Encryptのエンドポイント
- メールアドレス
- ドメイン
$ sudo certbot certonly --manual \
--preferred-challenges dns-01 \
--server https://acme-v02.api.letsencrypt.org/directory \
-m [email protected] \
-d *.sample.com
回数制限があるため通るまでは、ステージング環境(https://acme-staging-v02.api.letsencrypt.org/directory
)をエンドポイントにしてもいいかもしれません。
参考:https://letsencrypt.org/ja/docs/rate-limits/
DNSにTXTレコードを入力
ターミナルでは以下のようなメッセージが表示されます。
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:
abcdeysheigfkeabcdeysheigfke
以下のように入力してエンターを押しましょう。
- DNS名:_acme-challenge.example.com
- 値:abcdeysheigfkeabcdeysheigfke
Secret作成
$ sudo kubectl create secret tls cert-secret-tls \
--key /etc/letsencrypt/live/example.com/privkey.pem \
--cert /etc/letsencrypt/live/example.com/fullchain.pem
IngressでSecret読み込み
tls:
- hosts:
- '*.example.com'
secretName: cert-secret-tls
REST APIでインフラ構築している場合は、Ingressでhostを指定してトラフィックを振り分けてもいいかもしれません。
もちろん、ワイルドカードでhostを指定した場合も、指定のNode Portにトラフィックが飛ぶようになっています。
参考:https://qiita.com/arthur_foreign/items/5d81ddfe76923ecd486f
ワイルドカード証明書が適用されているか確認
「ネットワーク サービス > 負荷分散」と移動して証明書が適用されているか確認しましょう。
以下のようになっていたらワイルドカードの証明書が適用されています。
ステージングのエンドポイントを叩いた場合は以下のような表示になります。
その場合は、エンドポイントを本番環境(https://acme-v02.api.letsencrypt.org/directory
)に変えて、cert-botを実行してSecretを作成しましょう。
ワイルドカード証明書を発行した時にハマったこと
ワイルドカード証明書を発行した場合に、xx.xx.example.com
のように階層が増えた場合は証明書として機能しませんでした。
他にもやりようはあるかもしれませんが、検証に工数がかかりそうだったので、僕は対応せずにマネージド証明書を利用しました。
参考:https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs?hl=ja
Author And Source
この問題について(【GKE】証明書のワイルドカード対応), 我々は、より多くの情報をここで見つけました https://qiita.com/arthur_foreign/items/0bc5a4ee6faad645cff6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .