无法在 web.py - Python 2.7 中创建 ssl 会话
can't create ssl session in web.py - Python 2.7
我正在尝试让我的服务器使用 https/ssl 连接。我有证书和密钥。
我已经尝试使用 http://webpy.org/cookbook/ssl 中的示例,但它仍然使用 http 而不是 https。我的 web.py 版本是最新的 (0.38),但我也尝试使用站点中提供的旧实现,这导致了错误:
Traceback (most recent call last):
File "/path/server.py", line 7, in <module>
from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter
File "/Library/Python/2.7/site-packages/web/wsgiserver/ssl_builtin.py", line 14, in <module>
from cherrypy import wsgiserver
ImportError: cannot import name wsgiserver
行中:
from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter
有什么解决办法吗? (我猜不是因为错误,因为它是由适合旧版本 web.py 的使用引起的,而是因为第一次实现)。
谢谢
编辑:
我的代码是 运行:
import sys
import web
from web.wsgiserver import CherryPyWSGIServer
from utils.tools import Tools
from pages.index import index
from pages.search import search
from pages.update_location import update_location
from pages.add_sn_tracking import add_sn_tracking
from pages.edit_sn_tracking import edit_sn_tracking
from pages.add_sheet_tracking import add_sheet_tracking
from pages.edit_sheet_tracking import edit_sheet_tracking
class WebServer:
def __init__(self):
CherryPyWSGIServer.ssl_certificate = r"/Volumes/wlutils/Users/TesterUs/snserver/server.crt"
CherryPyWSGIServer.ssl_private_key = r"/Volumes/wlutils/Users/TesterUs/snserver/server.key"
self.urls = (
'/', 'index',
'/search', 'search',
'/update_location', 'update_location',
'/add_sn_tracking', 'add_sn_tracking',
'/edit_sn_tracking', 'edit_sn_tracking',
'/add_sheet_tracking', 'add_sheet_tracking',
'/edit_sheet_tracking', 'edit_sheet_tracking',
)
# web.config.debug = False
self.app = web.application(self.urls, globals())
self.app.run()
if __name__ == "__main__":
w = WebServer()
要为 SSL 设置 web.py,只需设置内部 CherryPyWSGIServer:
from web.wsgiserver import CherryPyWSGIServer
CherryPyWSGIServer.ssl_certificate = "/file/my.crt"
CherryPyWSGIServer.ssl_private_key = "/file/my.key"
在致电 app = web.application(urls, globals())
之前执行此操作。如果这对您不起作用,让我们探讨一下,而不是您正在尝试的 pre-v.0.38 解决方案,已知不适用于当前 web.py
.
跟进:似乎使用了旧版本的 web.py
。一旦将其更新为 0.38+,示例就可以正常工作了。
我正在尝试让我的服务器使用 https/ssl 连接。我有证书和密钥。 我已经尝试使用 http://webpy.org/cookbook/ssl 中的示例,但它仍然使用 http 而不是 https。我的 web.py 版本是最新的 (0.38),但我也尝试使用站点中提供的旧实现,这导致了错误:
Traceback (most recent call last):
File "/path/server.py", line 7, in <module>
from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter
File "/Library/Python/2.7/site-packages/web/wsgiserver/ssl_builtin.py", line 14, in <module>
from cherrypy import wsgiserver
ImportError: cannot import name wsgiserver
行中:
from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter
有什么解决办法吗? (我猜不是因为错误,因为它是由适合旧版本 web.py 的使用引起的,而是因为第一次实现)。
谢谢
编辑: 我的代码是 运行:
import sys
import web
from web.wsgiserver import CherryPyWSGIServer
from utils.tools import Tools
from pages.index import index
from pages.search import search
from pages.update_location import update_location
from pages.add_sn_tracking import add_sn_tracking
from pages.edit_sn_tracking import edit_sn_tracking
from pages.add_sheet_tracking import add_sheet_tracking
from pages.edit_sheet_tracking import edit_sheet_tracking
class WebServer:
def __init__(self):
CherryPyWSGIServer.ssl_certificate = r"/Volumes/wlutils/Users/TesterUs/snserver/server.crt"
CherryPyWSGIServer.ssl_private_key = r"/Volumes/wlutils/Users/TesterUs/snserver/server.key"
self.urls = (
'/', 'index',
'/search', 'search',
'/update_location', 'update_location',
'/add_sn_tracking', 'add_sn_tracking',
'/edit_sn_tracking', 'edit_sn_tracking',
'/add_sheet_tracking', 'add_sheet_tracking',
'/edit_sheet_tracking', 'edit_sheet_tracking',
)
# web.config.debug = False
self.app = web.application(self.urls, globals())
self.app.run()
if __name__ == "__main__":
w = WebServer()
要为 SSL 设置 web.py,只需设置内部 CherryPyWSGIServer:
from web.wsgiserver import CherryPyWSGIServer
CherryPyWSGIServer.ssl_certificate = "/file/my.crt"
CherryPyWSGIServer.ssl_private_key = "/file/my.key"
在致电 app = web.application(urls, globals())
之前执行此操作。如果这对您不起作用,让我们探讨一下,而不是您正在尝试的 pre-v.0.38 解决方案,已知不适用于当前 web.py
.
跟进:似乎使用了旧版本的 web.py
。一旦将其更新为 0.38+,示例就可以正常工作了。