DNS01
DNS01チャレンジプロバイダーの設定
このページでは、Issuer
リソースのDNS01チャレンジソルバー構成で利用可能なさまざまなオプションについて詳しく説明します。
ACME Issuers
とそのAPI形式の設定の詳細については、ACME Issuersのドキュメントをお読みください。
DNS01プロバイダーの構成は、設定ドキュメントの例と同様に、Issuer
リソースで指定する必要があります。
DNS01チャレンジタイプの仕組みについては、Let's Encryptチャレンジタイプのページをご覧ください。
apiVersion: cert-manager.io/v1kind: Issuermetadata:name: example-issuerspec:acme:email: user@example.comserver: https://acme-staging-v02.api.letsencrypt.org/directoryprivateKeySecretRef:name: example-issuer-account-keysolvers:- dns01:cloudDNS:project: my-projectserviceAccountSecretRef:name: prod-clouddns-svc-acct-secretkey: 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
- この権限の低いドメインを指すCNAMEレコードを作成します。
_acme-challenge.example.com IN CNAME _acme-challenge.less-privileged.example.org.
-
権限の低い
less-privileged.example.org
ゾーンを更新する権限をcert-managerに付与します。 -
この権限の低いゾーンを更新するための構成/クレデンシャルを提供し、関連する
dns01
ソルバーに追加フィールドを追加します。selector
フィールドは元のexample.com
で引き続き機能し、クレデンシャルはless-privileged.example.org
に提供されることに注意してください。
apiVersion: cert-manager.io/v1kind: Issuermetadata:...spec:acme:...solvers:- selector:dnsZones:- 'example.com'dns01:# Valid values are None and FollowcnameStrategy: Followroute53:region: eu-central-1accessKeyID: <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プロバイダーもサポートしています。これらのサポートされているプロバイダーへのリンクとドキュメントを以下に示します。
AliDNS-Webhook
cert-manager-alidns-webhook
cert-manager-webhook-civo
cert-manager-webhook-dnspod
cert-manager-webhook-dnsimple
cert-manager-webhook-gandi
cert-manager-webhook-infomaniak
cert-manager-webhook-inwx
cert-manager-webhook-linode
cert-manager-webhook-oci
(Oracle Cloud Infrastructure)cert-manager-webhook-scaleway
cert-manager-webhook-selectel
cert-manager-webhook-softlayer
cert-manager-webhook-ibmcis
cert-manager-webhook-loopia
cert-manager-webhook-arvan
bizflycloud-certmanager-dns-webhook
cert-manager-webhook-hetzner
cert-manager-webhook-yandex-cloud
cert-manager-webhook-netcup
cert-manager-webhook-pdns
cert-manager-webhook-zilore
stackit-cert-manager-webhook
cert-manager-webhook-vercel
cert-manager-webhook-opentelekomcloud
webhookプロバイダーの設定方法の詳細については、こちらを参照してください。
新しいサポートされていないDNSプロバイダーを作成するには、開発ドキュメントのこちらを参照してください。