11.3.4. 独自の CA 証明書の更新
この手順では、以前にインストールした CA 証明書および鍵を更新する方法を説明します。期限切れ間近の CA 証明書を交換するには、更新期間中にこの手順を実施する必要があります。
以下の手順を使用して、独自のクラスターまたはクライアント CA 証明書をインストールできます。
この手順では、PEM 形式の CA 証明書の更新を説明します。PKCS #12 形式の証明書を使用することもできます。
前提条件
- Cluster Operator が稼働している必要があります。
- 以前に独自の CA 証明書と秘密鍵をインストールした Kafka クラスターが必要です。
- クラスターおよびクライアントの PEM 形式による新しい X.509 証明書と鍵が必要です。
これらは、openssl
コマンドを使用して生成できます。以下に例を示します。
openssl req -x509 -new -days NUMBER-OF-DAYS-VALID --nodes -out ca.crt -keyout ca.key
手順
Secret
で現在の CA 証明書の詳細を確認します。oc describe secret CA-CERTIFICATE-SECRET
CA-CERTIFICATE-SECRETは
Secret
の名前で、クラスタCA証明書の場合はKAFKA-CLUSTER-NAME-cluster-ca-cert
であり、クライアントCA証明書の場合はKAFKA-CLUSTER-NAME-clients-ca-cert
となります。シークレットに既存の CA 証明書が含まれるディレクトリーを作成します。
mkdir new-ca-cert-secret cd new-ca-cert-secret
更新する各 CA 証明書のシークレットを取得します。
oc get secret CA-CERTIFICATE-SECRET -o 'jsonpath={.data.CA-CERTIFICATE}' | base64 -d > CA-CERTIFICATE
CA-CERTIFICATE を各 CA 証明書の名前に置き換えます。
古い
ca.crt
ファイルの名前をca-DATE.crt
に変更します。ここで DATEは、YEAR-MONTH-DAYTHOUR-MINUTE-SECONDZ形式の証明書の有効期限です。例:
ca-2018-09-27T17-32-00Z.crt
mv ca.crt ca-$(date -u -d$(openssl x509 -enddate -noout -in ca.crt | sed 's/.*=//') +'%Y-%m-%dT%H-%M-%SZ').crt
新規 CA 証明書をディレクトリーにコピーし、
ca.crt
という名前を付けます。cp PATH-TO-NEW-CERTIFICATE ca.crt
CA 証明書を対応する
Secret
に配置します。既存のシークレットを削除します。
oc delete secret CA-CERTIFICATE-SECRET
CA-CERTIFICATE-SECRET は最初のステップで返される
Secret
の名前です。「Not Exists」エラーを無視します。
シークレットを再作成します。
oc create secret generic CA-CERTIFICATE-SECRET --from-file=.
作成したディレクトリーを削除します。
cd .. rm -r new-ca-cert-secret
CA キーを対応する
Secret
に配置します。既存のシークレットを削除します。
oc delete secret CA-KEY-SECRET
CA-KEY-SECRET は CA キーの名前です。これは、クラスター CA キーの場合は
KAFKA-CLUSTER-NAME-cluster-ca
、クライアント CA キーの場合はKAFKA-CLUSTER-NAME-clients-ca
です。新しい CA 鍵でシークレットを再作成します。
oc create secret generic CA-KEY-SECRET --from-file=ca.key=CA-KEY-SECRET-FILENAME
シークレットに
strimzi.io/kind=Kafka
およびstrimzi.io/cluster=KAFKA-CLUSTER-NAME
ラベルを付けます。oc label secret CA-CERTIFICATE-SECRET strimzi.io/kind=Kafka strimzi.io/cluster=KAFKA-CLUSTER-NAME oc label secret CA-KEY-SECRET strimzi.io/kind=Kafka strimzi.io/cluster=KAFKA-CLUSTER-NAME