我有一个带有一些端点的基本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,以防有人知道他们做的一些奇怪的默认配置可能导致这种情况。我专门打开了运行该应用程序的端口。
有没有人对可能导致问题的原因有任何其他建议?
答案 0 :(得分:0)
我将继续使用Flask开发服务器来解决这个问题。我使用与Apache完全相同的代码部署了我的应用程序(具体来说,我遵循了这个方便的指南:https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps)并且它有效。