使用Google Cloud Run进行SSL客户端身份验证

hzbexzde  于 2023-05-18  发布在  Go
关注(0)|答案(2)|浏览(167)

我正在尝试将现有的后端移动到Google Cloud Run。某些端点(在特定子域下)需要SSL客户端身份验证。目前处理的方式是在Nginx配置级别:

server {
    listen 443 ssl http2;
    server_name secure.subdomain.example.com;
    [...]

    # SSL Client Certificate:
    ssl_client_certificate xxx.pem;
    ssl_verify_client on;

    [...]

    location / {
        if ($ssl_client_verify != "SUCCESS") { return 403 $ssl_client_verify; }
        [...]
    }
}

使用Google Cloud Run处理SSL客户端证书身份验证的最佳方法是什么?我假设这需要在正确的网络层上使用某种负载平衡器,并支持云运行?
当然,在ExpressJS应用程序中总是可以选择进行身份验证,但如果可能的话,我希望在到达Cloud Run之前进行身份验证。

wn9m85ua

wn9m85ua1#

你不能用Cloud Run来实现这一点。SSL连接在负载均衡端终止(在HTTPS负载均衡上,或在Cloud Run内置负载均衡上)。您只接收到服务的HTTP流量。
实际上,您可以在请求头中添加额外的安全信息,但是您失去了SSL的味道。

f3temu5u

f3temu5u2#

[更新05-12-2023]
我的答案已经过时了。查看这些Google文档:

[结束更新]
使用Google Cloud Run处理SSL客户端证书身份验证的最佳方法是什么?
Cloud Run不支持SSL客户端证书身份验证。GFE(Google前端)代理Cloud Run应用程序的请求,而不传递请求。唯一支持SSL客户端证书的Google Cloud负载均衡器基于Google Maglev。
Google Cloud托管计算服务均不支持SSL客户端证书身份验证(双向TLS身份验证)。
考虑使用Compute Engine而不是Cloud Run。然后配置Nginx来处理客户端身份验证。对于负载平衡,请使用直通负载平衡器,如External TCP/UDP Network Load Balancer

相关问题