Kubernetes入口tls

use*_*872 3 ssl kubernetes

我使用以下命令在本地生成密钥。

openssl genrsa -out测试vc.testns.ing.lb.xyz.io.key.pem 2048

然后使用下面的命令生成CSR(证书签名请求)。

openssl req -new -sha256 -key testsvc.testns.ing.lb.xyz.io.key.pem -subj“ /CN=testsvc.testns.ing.lb.xyz.io”

我使用上面的CSR文件生成了证书链文件,最后得到了下面的文件。

testsvc.testns.ing.lb.xyz.io.chain.pem

我正在尝试将它们用于入口tls,以下是入口tls的命令。

kubectl创建秘密tls custom-tls-cert --key /path/to/tls.key --cert /path/to/tls.crt

不确定,如何使用上述命令使用chain.pem文件和key.pem文件。试图从chain.pem生成crt并在kubectl上出错会创建秘密。

"error: failed to load key pair tls: failed to find any PEM data in certificate input"
Run Code Online (Sandbox Code Playgroud)

我想创建以下秘密。

apiVersion: v1
data:
  tls.crt: base64 encoded cert
  tls.key: base64 encoded key
kind: Secret
metadata:
  name: testsecret
  namespace: default
type: Opaque
Run Code Online (Sandbox Code Playgroud)

不确定如何使用chain.pem文件生成.crt和.key文件。

谢谢

VAS*_*VAS 6

首先,让我们弄清密钥,CSR和证书是什么。

key-本地生成的秘密文件显示/发送给任何人(key.pem)
csr-key.pem生成的文件(request.pem),需要发送到CA(证书颁发机构)。(您可以拥有自己的CA,但通常是由其他人管理)。
cert-CA根据request.pem及其自身的CA私钥创建的文件(cert.pem)

现在,您可以使用这两个文件- key.pemcert.pem-在服务和客户端之间创建安全连接。

我想您只创建了一个密钥和一个请求。因此,您需要更进一步,并从CA获得证书。

为了进行测试,您可以使用以下命令创建新密钥和自签名证书:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj“ / C = US / ST = Florida / L = Miami / O = SomeCompany / OU = ITdepartment / CN = www.mydomain.com”

(根据您的需要进行调整)

密钥和证书有不同类型,很容易找到将一种格式转换为另一种格式的方法。

创建密钥时,以PEM格式使用证书和密钥应该可以正常工作。

只需将密钥和证书插入该命令,如下所示:

kubectl create secret tls testsecret --key key.pem --cert cert.pem  
Run Code Online (Sandbox Code Playgroud)

此命令创建一个Secret对象,key.pemcert.pem使用base64对其进行编码和内容。

您可以使用以下命令检查创建的对象的内容:

kubectl get secret testsecret -o yaml

echo "tls.crt: content" | base64 --decode
Run Code Online (Sandbox Code Playgroud)

例如:

echo "LS0t...tLS0tLQo=" | base64 --decode
Run Code Online (Sandbox Code Playgroud)

在此处阅读有关使用和生成证书的更多信息:https :
//www.sslshopper.com/article-most-common-openssl-commands.html

如何使用openssl创建自签名证书?

https://docs.bitnami.com/kubernetes/how-to/secure-kubernetes-services-with-ingress-tls-letsencrypt/

https://kubernetes.io/docs/concepts/configuration/secret/