【问题标题】:Run python program via https通过 https 运行 python 程序
【发布时间】:2021-09-25 22:27:41
【问题描述】:

我正在运行 python 程序,“app.run”指定主机名和端口。 它默认运行在 Http 上,但我想运行在 Https 上。

我该怎么做?

【问题讨论】:

  • 什么是“app.run”?请出示minimal reproducible example
  • 您使用的是哪个 Web 应用程序框架?流行的在他们的教程中有关于如何将它们部署到生产环境的部分,然后您可以在其中获得 true HTTPS 支持。
  • 如果app.run是Flask,那么请看:can you add HTTPS functionality to a python flask web server?
  • 您好,Mempin,感谢您提供详细信息。是的,app.run 是 Fl​​ask。根据链接,我尝试了“OpenSSL import SSL”和“import ssl context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)”但失败并显示消息“AttributeError:模块'OpenSSL.SSL'没有属性'PROTOCOL_TLSv1_2'”或“ SyntaxError: 无效语法”。
  • 我现在可以使用 "ssl_context='adhoc'" 命令在 https 中运行程序。但是当尝试从另一个服务器/源连接这个程序时,得到响应“HTTP 错误 404。找不到请求的资源。”或“无法访问此站点”,源和目标之间的 telnet 工作正常,因此没有防火墙问题。使用默认 http 协议运行时能够从源连接到程序。

标签: python


【解决方案1】:

我宁愿建议你设置一个 Nginx 代理来做 SSL 脏活。它经过了良好的测试和常规。

由于 Python 只能在一个进程中使用一个 cpu 逻辑核心 - 无论其中有多少线程或协程,它执行 SSL 密码工作是个坏主意。假设您租用了一个双核服务器,设置一个 Nginx 来将 https 转为 http 并返回到您的 python http 服务器将使服务器更加健康。

【讨论】:

  • 嗨乔治,我不太会使用代理(重定向),并且无法在机器上安装/租用任何东西,因为它属于客户端并由其他应用程序运行。我在想是否有任何方法可以将协议定义为 https(就像对端口所做的那样)并使用它而不是默认的 http。
  • 如果您使用的是 aiohttp,请查看 - stackoverflow.com/questions/41701791/…
  • 不,我正在使用烧瓶
  • 我现在可以使用 "ssl_context='adhoc'" 命令在 https 中运行程序。但是当尝试从另一个服务器/源连接这个程序时,得到响应“HTTP 错误 404。找不到请求的资源。”或“无法访问此站点”,源和目标之间的 telnet 工作正常,因此没有防火墙问题。使用默认 http 协议运行时能够从源连接到程序。
  • 也许你可以搜索“flask ssl”。
猜你喜欢
  • 2018-11-08
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 2012-11-14
  • 1970-01-01
  • 2021-01-16
相关资源
最近更新 更多