如何使用podman或docker中主机的PKI证书从Caddy反向代理到HTTPS上游服务?

ohtdti5x  于 2022-12-18  发布在  Docker
关注(0)|答案(1)|浏览(280)

在Caddy中,当我禁用auto_https并将tls证书和密钥设置为主机上的证书和密钥,并让我的上游应用程序(s)使用相同的证书,我不断收到一个错误,说tls: bad certificate。这在NGINX中工作,我试图复制我在NGINX中所做的事情,但没有用。请注意我没有权限更改证书的管理方式。我们位于企业飞地上,而且我们需要使用他们的官方PKI。即使我可以获得在覆盖服务网络上使用证书的许可,在那里它们将被隔离,服务仍然必须调用飞地网络上的其他服务,而且我无法让其他服务信任我的Caddy示例管理的证书。2因此,如果您愿意,请将讨论集中在我提供的证书和配置可能存在的问题上。
我已经尝试了文档中所有可能改变行为的选项,我当前的方法可以从my github repository克隆而来,如果你有一台运行podman的机器,你就可以运行它,Caddy文件展示了我的方法:

{
    debug
    auto_https off
    ocsp_stapling off
}

:8443 {
    tls /certs/test.crt /certs/test.key
    handle /greeting-service/* {
        reverse_proxy https://greeting-service:8443 {
            header_up Host                   {env.OUTER_HOST}
            transport http {
                tls_insecure_skip_verify
                tls_server_name              {env.OUTER_HOST}
                tls_trusted_ca_certs         /certs/trust.pem
                tls_client_auth              /certs/test.crt /certs/test.key
            }
        }
    }
}

我也试过将主机头设置为{upstream_hostport},但结果是一样的。提前感谢任何能为我指明更好方向的人。

qq24tv8q

qq24tv8q1#

原来我是用CA证书签名证书,然后立即通过自签名覆盖它。当我解决了这个问题后,事情似乎更好地工作了。然后我尝试了一些选项,并找到了成功/工作配置:

{
    debug
    auto_https off
    ocsp_stapling off
}

:8443 {
    tls /certs/test.crt /certs/test.key {
        client_auth {
            mode                   require_and_verify
            trusted_ca_cert_file   /certs/trust.pem
        }
    }
    handle /greeting-service/* {
        reverse_proxy https://greeting-service:8443 {
            header_up Host                   {$OUTER_HOST}
            transport http {
                tls_server_name              {$OUTER_HOST}
                tls_trusted_ca_certs         /certs/trust.pem
                tls_client_auth              /certs/test.crt /certs/test.key
            }
        }
    }
}

相关问题