75

我知道您可以使用 Python 3 创建一个简单的 HTTP Web 服务器

python -m http.server

但是,有没有一种简单的方法来保护与 WebServer 的连接,我需要生成证书吗?我该怎么做?

4

1 回答 1

83

首先,您需要一个证书 - 假设我们将它放在一个localhost.pem包含私钥和公钥的文件中,然后

import http.server, ssl

server_address = ('localhost', 4443)
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket,
                               server_side=True,
                               certfile='localhost.pem',
                               ssl_version=ssl.PROTOCOL_TLS)
httpd.serve_forever()

确保为wrap_socket!

注意:如果您使用它来服务网络流量,您需要使用'0.0.0.0'代替'localhost'来绑定到所有接口,将端口更改为 443(HTTPS 的标准端口),并以超级用户权限运行以获得权限绑定到一个众所周知的端口。

于 2013-10-31T12:33:33.337 回答