使用密钥创建 OpenShift TLS 路由

4
我希望了解如何创建一个安全的(tls)路由,使其从包含我的证书和密钥(或JAVA密钥库)的Secret中创建,或者使用2个Secret(一个包含证书,另一个包含密钥),以便我不需要直接在“route.yaml”文件中编写它们,而只需引用它们......更新:看起来这是不可能的。除非我通过pod进行透传...请参见此处--->https://access.redhat.com/solutions/1582583。尽管如此,我不希望这成为最终答案,因为我认为应该支持这一点。有人能告诉我否则吗?拜托了!
5个回答

3

很遗憾,据我所知,无法将证书配置为secretroute中。如果您只想使用除yaml文件以外的其他方法创建route对象,则可以使用以下CLI配置route

oc create route edge --service=frontend \
    --cert=${MASTER_CONFIG_DIR}/ca.crt \
    --key=${MASTER_CONFIG_DIR}/ca.key \
    --ca-cert=${MASTER_CONFIG_DIR}/ca.crt \
    --hostname=www.example.com

我希望这可以帮到您:^)

它同时做和不做。我已经探索过了。它确实比在“不安全”的GIT存储库中直接使用YAML文件更安全。那么我想我会将其用作我的流水线中的附加步骤。再次感谢! - yield
我在RedHat绑定了一个请求功能增强的工单。似乎已经有一个类似的工单被搁置了,所以我又将它提交给了RedHat。如果有更新的情况,我会尽量在此帖子中进行更新。希望事情能够积极向好发展。 - yield

3

可以使用TLS处理路由模板,而无需共享证书和私钥密钥。

  1. 将CA证书、服务器证书和服务器私钥存储在TLS secret中
  2. 运行oc get secrets命令以获取tls.key/tls.crt/ca.crt文件
  3. 在路由模板中设置:
  • TLS_PRIVATE_KEY/TLS_CERTIFICATE/CA_CERTIFICATE参数
  • tls.key: ${TLS_PRIVATE_KEY},tls.certificate: ${TLS_CERTIFICATE},tls.caCertificate: ${CA_CERTIFICATE}
  1. 使用 -p "TLS_PRIVATE_KEY=$(cat tls.key)" -p "TLS_CERTIFICATE=$(cat tls.crt)" -p "CA_CERTIFICATE=$(cat ca.crt)" 命令运行oc process模板

多行参数的想法来自于:https://github.com/openshift/origin/issues/10687

使用Helm更容易从secret中获取TLS值:lookup函数可以完成这项工作。

tls:
    insecureEdgeTerminationPolicy: Redirect
    termination: edge
    key: {{ index (lookup "v1" "Secret" .Release.Namespace "my-tls-secret").data "tls.key" | b64dec | quote }}
    certificate: {{ index (lookup "v1" "Secret" .Release.Namespace "my-tls-secret").data "tls.crt" | b64dec | quote }}
    caCertificate: {{ index (lookup "v1" "Secret" .Release.Namespace "my-tls-secret").data "ca.crt" | b64dec | quote }}

这个提示指向了:https://dev59.com/ilMI5IYBdhLWcg3wd7PB#64325744


2

0

Cert Utils Operator 的一个功能是填充路由证书

假设您有一个路由myroute和一个密钥mysecret

$ oc annotate route/myroute cert-utils-operator.redhat-cop.io/certs-from-secret=mysecret

运算符将负责使用密钥/证书/CA证书从密钥库中更新路由。

0

我的RFE被RedHat关闭了,因为它应该是OpenShift4的一个要求。与此同时,我开始使用tls secrets,并直接在我的容器中管理TLS终止,而不是在路由上。

它就像这样进行。有一种用于TLS的秘密类型。

oc create secret tls mytlsSecret --cert= --key=

希望这可以帮到你!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接