カスタム TLS 証明書を追加します
既存の自己署名 TLS 証明書を削除して、認証局( CA )が署名した TLS 証明書に置き換えることができます。
-
Astra Control Center をインストールした Kubernetes クラスタ
-
クラスタ上のコマンド・シェルに管理アクセスして 'kubectl' コマンドを実行します
-
CA の秘密鍵ファイルと証明書ファイル
-
SSH を使用して、 Astra Control Center をホストする Kubernetes クラスタに管理ユーザとしてログインします。
-
次のコマンドを使用して、現在の証明書に関連付けられている TLS シークレットを検索します。「 <ACC-deployment-namespace> 」は、 Astra Control Center 配置名前空間に置き換えてください。
kubectl get certificate -n <ACC-deployment-namespace>
-
次のコマンドを使用して、現在インストールされているシークレットと証明書を削除します。
kubectl delete cert cert-manager-certificates -n <ACC-deployment-namespace> kubectl delete secret secure-testing-cert -n <ACC-deployment-namespace>
-
次のコマンドを使用して、 CA の秘密鍵ファイルと証明書ファイルを使用して新しい TLS シークレットを作成し、括弧 <> の引数を適切な情報に置き換えます。
kubectl create secret tls <secret-name> --key <private-key-filename> --cert <certificate-filename> -n <ACC-deployment-namespace>
-
次のコマンドと例を使用して、クラスタカスタムリソース定義( CRD )ファイルを編集し、「 pec.selfSigned` 」の値を「 pec.ca.secretName` 」に変更して、前の手順で作成した TLS シークレットを参照します。
kubectl edit clusterissuers.cert-manager.io/cert-manager-certificates -n <ACC-deployment-namespace> .... #spec: # selfSigned: {} spec: ca: secretName: <secret-name>
-
次のコマンドと出力例を使用して、変更が正しく、クラスタが証明書を検証できる状態にあることを確認します。「 <ACC-deployment-namespace> 」は Astra Control Center 配置名前空間に置き換えてください。
kubectl describe clusterissuers.cert-manager.io/cert-manager-certificates -n <ACC-deployment-namespace> .... Status: Conditions: Last Transition Time: 2021-07-01T23:50:27Z Message: Signing CA verified Reason: KeyPairVerified Status: True Type: Ready Events: <none>
-
次の例を使用して 'certificate.yaml ファイルを作成します括弧 <> のプレースホルダ値を適切な情報に置き換えます
apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: <certificate-name> namespace: <ACC-deployment-namespace> spec: secretName: <certificate-secret-name> duration: 2160h # 90d renewBefore: 360h # 15d dnsNames: - <astra.dnsname.example.com> #Replace with the correct Astra Control Center DNS address issuerRef: kind: ClusterIssuer name: cert-manager-certificates
-
次のコマンドを使用して証明書を作成します。
kubectl apply -f certificate.yaml
-
次のコマンドと出力例を使用して、証明書が正しく作成されていること、および作成時に指定した引数(名前、期間、更新期限、 DNS 名など)を使用していることを確認します。
kubectl describe certificate -n <ACC-deployment-namespace> .... Spec: Dns Names: astra.example.com Duration: 125h0m0s Issuer Ref: Kind: ClusterIssuer Name: cert-manager-certificates Renew Before: 61h0m0s Secret Name: <certificate-secret-name> Status: Conditions: Last Transition Time: 2021-07-02T00:45:41Z Message: Certificate is up to date and has not expired Reason: Ready Status: True Type: Ready Not After: 2021-07-07T05:45:41Z Not Before: 2021-07-02T00:45:41Z Renewal Time: 2021-07-04T16:45:41Z Revision: 1 Events: <none>
-
次のコマンドおよび例を使用して、入力 CRD TLS オプションを編集し、新しい証明書シークレットを指定します。括弧 <> のプレースホルダ値を適切な情報に置き換えます。
kubectl edit ingressroutes.traefik.containo.us -n <ACC-deployment-namespace> .... # tls: # options: # name: default # secretName: secure-testing-cert # store: # name: default tls: options: name: default secretName: <certificate-secret-name> store: name: default
-
Web ブラウザを使用して、 Astra Control Center の導入 IP アドレスにアクセスします。
-
証明書の詳細がインストールした証明書の詳細と一致していることを確認します。
-
証明書をエクスポートし、結果を Web ブラウザの証明書マネージャにインポートします。