我正在尝试将现有的后端移动到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之前进行身份验证。
2条答案
按热度按时间wn9m85ua1#
你不能用Cloud Run来实现这一点。SSL连接在负载均衡端终止(在HTTPS负载均衡上,或在Cloud Run内置负载均衡上)。您只接收到服务的HTTP流量。
实际上,您可以在请求头中添加额外的安全信息,但是您失去了SSL的味道。
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