【问题标题】:netty terminate tls using kubernetes certificatenetty 使用 kubernetes 证书终止 tls
【发布时间】:2021-10-16 23:43:51
【问题描述】:

我正在尝试终止 Kubernetes 集群中 netty 网络服务器中的 TLS。

我正在使用cert-manager 来管理我网站的证书

这是结果 kubernetes get secret websitesslcert-staging -o yaml

apiVersion: v1
data:
  tls.crt: REDACTED=
  tls.key: REDACTED=
kind: Secret
metadata:
  annotations:
    cert-manager.io/alt-names: mysite.com
    cert-manager.io/certificate-name: websitesslcert-staging
    cert-manager.io/common-name: mysite.com
    cert-manager.io/ip-sans: ""
    cert-manager.io/issuer-group: cert-manager.io
    cert-manager.io/issuer-kind: ClusterIssuer
    cert-manager.io/issuer-name: letsencrypt-staging
    cert-manager.io/uri-sans: ""
  creationTimestamp: "2021-10-17T00:00:00Z"
  name: websitesslcert-staging
  namespace: default
  resourceVersion: "123456"
  uid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
type: kubernetes.io/tls

kubernetes.io/tls 的格式描述为in the Kubernetes docs

公钥/私钥对必须事先存在。公钥 --cert 的证书必须是 .PEM 编码的(Base64 编码的 DER 格式),并匹配给定的私钥作为--key。私钥 必须采用通常所说的 PEM 私钥格式, 未加密。在这两种情况下,PEM 的初始行和最后一行 (例如,--------BEGIN CERTIFICATE----- 和 --------END CERTIFICATE---- 用于证书)不包括在内。

我有一个必须terminate TLS 的 Java (Netty) 应用程序。 在本地,我可以复制秘密(“tls.crt”和“tls.key”)并将它们写入文件,但是我无法在本地服务器 Netty 4 中使用它们来接受 TLS 连接。

 ChannelPipeline p = channel.pipeline();
 SslContext sslCtx = SslContextBuilder.forServer(tlsKeyFile, tlsCertFile).build();
 p.addLast("ssl", sslCtx.newHandler(channel.alloc()));

导致错误:

Execution error (CertificateException) at io.netty.handler.ssl.PemReader/readCertificates (PemReader.java:98).
found no certificates in input stream

将 --------BEGIN CERTIFICATE----- 和 --------END CERTIFICATE---- 添加到文件中会导致

Execution error (CertificateParsingException) at sun.security.x509.X509CertImpl/parse (X509CertImpl.java:1826).
signed overrun, bytes = 919

我应该如何处理这个问题,从 Netty 读取我的证书?

【问题讨论】:

    标签: java ssl ssl-certificate netty


    【解决方案1】:

    原来证书是 yaml 输出中的 base64 编码。 base64 --decode 显示文件内容。

    【讨论】:

      猜你喜欢
      • 2017-08-15
      • 2018-12-12
      • 2020-01-17
      • 2017-11-17
      • 2021-05-01
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多