Flask SSL接收垃圾请求

时间:2017-11-16 02:14:55

标签: python ssl flask https

我有一个带有一些端点的基本Flask服务器设置。我正在尝试使用curl测试它(我已尝试从localhost和远程,结果是相同的。)

如果我通过http卷曲路径,它的效果很好。如果我通过https执行,请求看起来像垃圾(见下文),curl返回“curl:(35)gnutls_handshake()失败:收到意外的TLS数据包。”

通过https收到的请求通常类似于:

136.152.142.32 - - [16/Nov/2017 01:32:56] code 400, message Bad request syntax ('\x16\x03\x01\x00\xe3\x01\x00\x00\xdf\x03\x03Z\x0c\xea\xcf\rG\x12,\xea}\xc4\x17n\xb7\x0c\x0b\xea\xdbM\x87n\xf3\x95\xa7(\x15+\xb5lyzY\x00\x00n\x00\xff\xc0,\xc0+\xc0$\xc0#\xc0')
136.152.142.32 - - [16/Nov/2017 01:32:56] "??Z
G,?}?n?           

                        ??

我通过简单地将ssl_context添加到我的烧瓶应用程序中来添加SSL功能。

if __name__ == '__main__':
    context = ('fullcert.pem', 'privkey.pem')
    app.run(debug=False, ssl_context=context)

密钥由CA签名并在类似的节点应用程序中正常工作(我正在尝试将该节点应用程序转换为python / flask)。

我基本上尝试过从头开始重新安装,但没有成功。

这是托管在DigitalOcean,以防有人知道他们做的一些奇怪的默认配置可能导致这种情况。我专门打开了运行该应用程序的端口。

有没有人对可能导致问题的原因有任何其他建议?

1 个答案:

答案 0 :(得分:0)

我将继续使用Flask开发服务器来解决这个问题。我使用与Apache完全相同的代码部署了我的应用程序(具体来说,我遵循了这个方便的指南:https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps)并且它有效。