Google App Engine Node.js TLS 1.2

时间:2018-01-23 14:48:17

标签: node.js google-app-engine ssl google-cloud-platform tls1.2

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

有没有办法强制只使用TLS 1.2?还会阻塞低于128位的密码?

3 个答案:

答案 0 :(得分:0)

我没试过这个,所以我无法保证它会起作用,但似乎你可以使用HTTP(S) Load BalancerSSL policies are configurable,以便它可能符合您的安全审核要求。

答案 1 :(得分:0)

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

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

哦...还有FYI-此级别的配置免费。快乐的安全测试;-)

答案 2 :(得分:0)

我可以确认您可以向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');
      }
  });