如何在启用 tls 的情况下连接到 nomad/consul UI?

问题描述 投票:0回答:4

我现在正在研究 Hashistack 并尝试在其上部署基于 pet 微服务的项目。我在裸机节点上部署了具有 Ansible 角色的 Nomad 和 Consul 集群:

Nomad和Consul的服务器放在同一个节点上。

我不使用Vault。我创建了单独的私有 CA,为这些服务生成了 TLS 证书和私钥,并配置了 Nomad 和 Consul 服务器和客户端来使用它们。

我的目标是设置生产就绪的 Hashistack 集群。所以我想为这两项服务设置完整的 TLS。

我通过 HTTP 成功连接到两个 UI,但当我尝试 HTTPS 时,收到 SSL_ERROR_BAD_CERT_ALERT 错误。

如果您建议在生产中操作 Hashistack 的最佳实践以及需要执行哪些步骤,我将不胜感激。

谢谢!

https production consul nomad
4个回答
3
投票

您首先需要为您的网络浏览器生成客户端证书。

然后将其转换为PKCS12格式。

openssl pkcs12 -export -inkey ./nomad-cli.key -in ./nomad-cli.pem -out ./nomad-cli.p12

假设您正在使用 Chrome,

转到

chrome://settings/certificates?search=certificate
并导入转换后的证书
nomad-cli.p12


2
投票

我找到了相同案例的答案。

当使用 mTLS 部署的 nomad 集群需要将 cli 密钥部署到每个服务器节点或至少在您要配置连接的节点上。

指令生成的cli密钥https://learn.hashicorp.com/tutorials/nomad/security-enable-tls#nomad-ca-key-pem

以及通过指令配置的 nginx https://learn.hashicorp.com/tutorials/nomad/reverse-proxy-ui?in=nomad/manage-clusters

但是本手册不包含配置 mTLS 的描述。

您需要在位置/中添加以下参数。

 location / {
    ....
    proxy_pass      https://127.0.0.1:4646;
    proxy_ssl_certificate     /etc/nomad.d/cli.pem;
    proxy_ssl_certificate_key /etc/nomad.d/cli-key.pem;
    proxy_ssl_verify              off;
    ....
}

在这种情况下,nginx 可以使用 TLS 与 nomad http 端口建立加密连接。 另外,至少不要忘记启用 http basic auth。


0
投票

我回复有点晚了,但遇到了同样的错误。我想我会留下我的解决方案,以防未来的读者发现它有帮助......

对我来说,问题归结为我的 Nomad

verify_https_client
配置块中的
tls
标志。由于 Nomad 配置为相互 TLS,因此所有客户端(包括 Web 浏览器)都需要提供由 Nomad 使用的同一 CA 签名的客户端证书才能进行连接。您需要生成/签署该证书,并了解如何配置您的浏览器以在需要时自动提供该证书。

对于生产用途,这是最安全的途径。对于开发环境,您只需在 Nomad 配置中将

verify_https_client
配置设置为
false

这里是此标志的 Nomad 文档的链接:https://www.nomadproject.io/docs/configuration/tls#verify_https_client


0
投票

我发现这个答案对我来说是正确的方法,但我想添加有关如何生成通过

openssl
命令导出的证书的额外上下文。

我通过中间 CA 颁发了证书:

vault write \
    -format=json \
    pki_int/issue/nomad \
    common_name=client.global.nomad \
    alt_names="${NOMAD_SERVER_IP},localhost" \
    > nomad-cli.json

jq -r .data.ca_chain[] nomad-cli.json > ca.pem
jq -r .data.certificate nomad-cli.json > cert.pem
jq -r .data.private_key nomad-cli.json > key.pem

openssl \
    pkcs12 -export \
    -inkey key.pem \
    -in cert.pem \
    -out browser-cert.p12 \
    -password pass:

我使用 Firefox 代替 Chrome,并通过

browser-cert.p12
导入了
Settings > Privacy & Security > Certificate > View Certificates > Your Certificates
证书文件。

© www.soinside.com 2019 - 2024. All rights reserved.