Google App Engine Node.js TLS 1.2



我们的应用程序托管在Google App Engine Node.js(灵活环境)上。我们现在正在接受安全检查审查,但未能解决Google App Engine支持TLS 1.0和1.1版本的问题。

有没有办法强制仅使用 TLS 1.2?还有低于 128 位的分组密码?

所以我也遇到了这个问题...并发现 GCP 并没有那么有帮助。如果提出支持票证,他们将在域级别进行有益的限制。这解决了安全问题...但您仍然会收到误报,需要在每次渗透测试中解释(GAE 共享 IP 接受其他域的其他版本的 TLS)。

对于一个干净整洁的解决方案;将Cloudflare用于您的DNS。它们本质上充当中间人/Web 应用程序防火墙。除其他功能(免费证书,WAF,DDOS缓解,CDN,HTTPS强制,HSTS等)外,您可以根据需要设置最低TLS版本。我的现在是最低TLS 1.2,如果浏览器接受TLS 1.3,则支持TLS 1.3。我基本上也只将 GAE 上的端口 80/443 连接到 cloudflare,根本没有公共访问权限,因为所有流量都首先通过 cloudflare。非常整洁 - 零端口向公众开放,一个全面运营的网站!渗透测试人员只是挠了挠头,收拾了一下。

哦。。。仅供参考 - 此级别的配置是免费的。快乐的安全测试;-)

我可以确认您可以向Google支持提出请求,并且最多需要4周才能进行更改。不知道为什么。希望他们将来能加快速度。但是,您也可以在应用程序层(在中间件中)而不是网络层处理此逻辑。请参阅下面的片段:

// using NODEJS + TYPESCRIPT 
// disable tls 1.0 and 1.1 weak ciphers
this.app.use((req, res, next) => {
// const cipher = ((req.socket) as TLSSocket).getCipher()
const protocol = ((req.socket) as TLSSocket).getProtocol()
// console.log('cipher: ', cipher);
// output eg: { name: 'ECDHE-RSA-AES128-GCM-SHA256', version: 'TLSv1/SSLv3' }
console.log('protocol: ', protocol);
// output eg: TLSv1.2
if (protocol === 'TLSv1.2' || protocol === 'TLSv1.3') {
next();
} else {
res.status(426);
res.send('request requires TLSv1.2 or greater, please upgrade');
}
});

我没有尝试过这个,所以我不能保证它会起作用,但似乎您可以使用 HTTP(S) 负载均衡器。 SSL 策略是可配置的,因此它可能满足安全审查的要求。

最新更新