新規: プロジェクトの最新情報をTwitterMastodonで入手してください

DNS01

DNS01チャレンジプロバイダーの設定

このページでは、IssuerリソースのDNS01チャレンジソルバー構成で利用可能なさまざまなオプションについて詳しく説明します。

ACME IssuersとそのAPI形式の設定の詳細については、ACME Issuersのドキュメントをお読みください。

DNS01プロバイダーの構成は、設定ドキュメントの例と同様に、Issuerリソースで指定する必要があります。

DNS01チャレンジタイプの仕組みについては、Let's Encryptチャレンジタイプのページをご覧ください。

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: example-issuer
spec:
acme:
email: user@example.com
server: https://acme-staging-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: example-issuer-account-key
solvers:
- dns01:
cloudDNS:
project: my-project
serviceAccountSecretRef:
name: prod-clouddns-svc-acct-secret
key: service-account.json

各Issuerは複数の異なるDNS01チャレンジプロバイダーを指定でき、単一のIssuerで同じDNSプロバイダーの複数のインスタンスを持つことも可能です(例:それぞれに独自の名前を持つ2つのCloudDNSアカウントを設定できます)。

単一のIssuerで複数のソルバータイプを利用する方法の詳細については、複数のソルバータイプのセクションをご覧ください。

DNS01セルフチェック用のネームサーバーの設定

cert-managerは、DNS01チャレンジを試行する前に、正しいDNSレコードが存在することを確認します。デフォルトでは、cert-managerは/etc/resolv.confから取得した再帰ネームサーバーを使用して権威ネームサーバーをクエリし、次に権威ネームサーバーを直接クエリしてDNSレコードが存在することを確認します。

これが望ましくない場合(たとえば、複数の権威ネームサーバーまたはスプリットホライズンDNSの場合)、cert-managerコントローラーは、この動作を変更できる2つのフラグを公開します。

--dns01-recursive-nameservers cert-managerがクエリする再帰ネームサーバーのホストとポートをカンマ区切りで指定します。

--dns01-recursive-nameservers-only cert-managerが検証に再帰ネームサーバーのみを使用するように強制します。このオプションを有効にすると、再帰ネームサーバーによって実行されるキャッシュが原因で、DNS01セルフチェックに時間がかかる可能性があります。

使用例

--dns01-recursive-nameservers-only --dns01-recursive-nameservers=8.8.8.8:53,1.1.1.1:53

cert-manager helmチャートを使用している場合は、.Values.extraArgsまたはhelm install/upgrade時に--setコマンドを使用して再帰ネームサーバーを設定できます。

--set 'extraArgs={--dns01-recursive-nameservers-only,--dns01-recursive-nameservers=8.8.8.8:53\,1.1.1.1:53}'

DNS01の委任されたドメイン

デフォルトでは、cert-managerはサブドメインを指すCNAMEレコードを追跡しません。

ルートDNSゾーンへのcert-managerアクセスを許可することが望ましくない場合は、代わりに_acme-challenge.example.comサブドメインを、権限の低い別のドメイン(less-privileged.example.org)に委任できます。これは次の方法で実現できます。たとえば、2つのゾーンがあるとします。

  • example.com
  • less-privileged.example.org
  1. この権限の低いドメインを指すCNAMEレコードを作成します。
_acme-challenge.example.com IN CNAME _acme-challenge.less-privileged.example.org.
  1. 権限の低いless-privileged.example.orgゾーンを更新する権限をcert-managerに付与します。

  2. この権限の低いゾーンを更新するための構成/クレデンシャルを提供し、関連するdns01ソルバーに追加フィールドを追加します。selectorフィールドは元のexample.comで引き続き機能し、クレデンシャルはless-privileged.example.orgに提供されることに注意してください。

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
...
spec:
acme:
...
solvers:
- selector:
dnsZones:
- 'example.com'
dns01:
# Valid values are None and Follow
cnameStrategy: Follow
route53:
region: eu-central-1
accessKeyID: <Access ID for less-privileged.example.org here>
hostedZoneID: <Zone ID for less-privileged.example.org here>
secretAccessKeySecretRef:
...

個別の証明書を必要とする多数の(サブ)ドメインがある場合は、エイリアス化された権限の低いドメインを共有できます。これを実現するには、次のように各(サブ)ドメインのCNAMEレコードを作成する必要があります。

_acme-challenge.example.com IN CNAME _acme-challenge.less-privileged.example.org.
_acme-challenge.www.example.com IN CNAME _acme-challenge.less-privileged.example.org.
_acme-challenge.foo.example.com IN CNAME _acme-challenge.less-privileged.example.org.
_acme-challenge.bar.example.com IN CNAME _acme-challenge.less-privileged.example.org.

この構成により、cert-managerはDNS01チャレンジ中に更新するDNSゾーンを決定するために、CNAMEレコードを再帰的に追跡します。

サポートされているDNS01プロバイダー

ACME Issuerでは、さまざまなDNSプロバイダーがサポートされています。以下に、利用可能なプロバイダー、その.yaml構成、およびその使用に関する追加のKubernetesおよびプロバイダー固有の注意事項のリストを示します。

Webhook

cert-managerは、外部webhookを使用したout-of-tree DNSプロバイダーもサポートしています。これらのサポートされているプロバイダーへのリンクとドキュメントを以下に示します。

webhookプロバイダーの設定方法の詳細については、こちらを参照してください。

新しいサポートされていないDNSプロバイダーを作成するには、開発ドキュメントのこちらを参照してください。