创建 k8s secret 导致公私钥不匹配

创建 k8s secret 导致公私钥不匹配

我已经使用 ACM 创建了证书。现在,我想使用 kubernetes 创建 TLS 密钥,以便我可以使用该密钥来配置 Ingress 资源。

我正在尝试使用创建 TLS 密钥kubectl create secret tls fsi-secret --cert=fsi.chain.pem --key=fsi.key.pem 然而它返回一个错误说error: failed to load key pair tls: failed to parse private key

私钥是使用密码创建的,因此在阅读了一点内容之后,我决定使用未加密的私钥,因此我执行了以下步骤:

openssl rsa -in fsi.key.pem -out fsi.key.decrypted.pem -passin pass: abcdefgxxxx

上述步骤生成了原始私钥的未加密版本。接下来,我尝试了create secret上述命令,只是将 --key 更改为使用未加密的密钥:

kubectl create secret tls fsi-secret --cert=fsi.chain.pem --key=fsi.key.decrypted.pem

然而,这导致了 error: failed to load key pair tls: private key does not match public key

我正在创建这个 tls 密钥以便在入口资源定义中使用它。

任何帮助,将不胜感激。

答案1

您应该检查的一件事是证书的链顺序,因为第一个证书将根据私钥进行检查。因此,您的证书如下所示:

-----BEGIN MY CERTIFICATE-----
-----END MY CERTIFICATE-----
-----BEGIN INTERMEDIATE CERTIFICATE-----
-----END INTERMEDIATE CERTIFICATE-----
-----BEGIN INTERMEDIATE CERTIFICATE-----
-----END INTERMEDIATE CERTIFICATE-----
-----BEGIN ROOT CERTIFICATE-----
-----END ROOT CERTIFICATE-----

将确保订单正确。

您可以在下面找到有关该主题的更多深入资料:

如果情况仍然不是这样,请告知我们并更新您的问题。

答案2

从根证书和中间证书创建 Kubernetes 机密时遇到了此问题。

问题是由于我的连接证书文件存在错误。

我使用以下命令连接根证书和中间证书:

cat root-certificate.crt intermediate-certificate.pem > bundled-certificate.crt

当我运行下面的命令来生成秘密时:

kubectl create secret tls myapp-tls --key=my-cert-private.key --cert=bundled-certificate.crt --namespace production --dry-run=client -o yaml > myapp_bundle_cert.yaml

我收到错误:

error: tls: private key does not match public key

以下是我修复的方法

当我检查连接的证书文件时,我发现有一个重叠部分,如下所示:

-----END CERTIFICATE----------BEGIN CERTIFICATE-----

我所要做的就是修复格式:

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----

之后,当我运行命令时:

kubectl create secret tls myapp-tls --key=my-cert-private.key --cert=bundled-certificate.crt --namespace production --dry-run=client -o yaml > myapp_bundle_cert.yaml

它工作得很好。

相关内容