尝试在 Python 中对 运行 SSL 包装的 BaseHTTPServer 使用 LetsEncrypt 失败
Attempting to use LetsEncrypt to run SSL-wrapped BaseHTTPServer in Python fails
我在 Python 中有一个使用 BaseHTTPServer
的工作 HTTP 服务器,所以我尝试添加一个 SSL 证书以允许使用 LetsEncrypt 的 https,现在它不会提供任何文件或响应.不会抛出异常或错误,也不会提供任何内容。
server_address = ('0.0.0.0', 80)
httpd = HTTPServer(server_address, MyHandler)
# I can comment out the following line and it'll work
httpd.socket = ssl.wrap_socket(httpd.socket, keyfile=ssl_key, certfile=ssl_cert, server_side=True)
httpd.serve_forever()
#ssl_key = '/etc/letsencrypt/live/example.com/privkey.pem'
#ssl_cert = '/etc/letsencrypt/live/example.com/fullchain.pem'
其中 MyHandler
如下:
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(204)
self.send_header("Content-Type", "text/html")
self.end_headers()
return
def do_POST(self):
self.send_response(204)
self.send_header("Content-Type", "text/html")
self.end_headers()
return
正在尝试通过 Web 浏览器从 https://example.com
returns 标准无响应 "Server not found" 访问站点。
我按照以下说明使用 LetsEncrypt 生成证书:https://certbot.eff.org/#ubuntuxenial-other
sudo apt-get install letsencrypt
其次是:
letsencrypt certonly --standalone -d example.com
有什么方法可以轻松找出问题所在?使用 Python 3.5。如果需要,很乐意提供更多信息。
server_address = ('0.0.0.0', 80)
Attempting to access the site via web browser from https://example.com
returns a standard no-response "Server not found".
https://host
没有明确的端口说明意味着在 https 协议的默认端口上访问服务器,即 443。但是,您已将服务器设置为在 server_address
中使用端口 80 .
有两种方法可以解决此问题:在 URL 中明确指定 https 的非标准端口,即 https://host:80
或将 server_address
中的端口从 80 更改为443. 最后一个选项可能是更好的选项。
我在 Python 中有一个使用 BaseHTTPServer
的工作 HTTP 服务器,所以我尝试添加一个 SSL 证书以允许使用 LetsEncrypt 的 https,现在它不会提供任何文件或响应.不会抛出异常或错误,也不会提供任何内容。
server_address = ('0.0.0.0', 80)
httpd = HTTPServer(server_address, MyHandler)
# I can comment out the following line and it'll work
httpd.socket = ssl.wrap_socket(httpd.socket, keyfile=ssl_key, certfile=ssl_cert, server_side=True)
httpd.serve_forever()
#ssl_key = '/etc/letsencrypt/live/example.com/privkey.pem'
#ssl_cert = '/etc/letsencrypt/live/example.com/fullchain.pem'
其中 MyHandler
如下:
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(204)
self.send_header("Content-Type", "text/html")
self.end_headers()
return
def do_POST(self):
self.send_response(204)
self.send_header("Content-Type", "text/html")
self.end_headers()
return
正在尝试通过 Web 浏览器从 https://example.com
returns 标准无响应 "Server not found" 访问站点。
我按照以下说明使用 LetsEncrypt 生成证书:https://certbot.eff.org/#ubuntuxenial-other
sudo apt-get install letsencrypt
其次是:
letsencrypt certonly --standalone -d example.com
有什么方法可以轻松找出问题所在?使用 Python 3.5。如果需要,很乐意提供更多信息。
server_address = ('0.0.0.0', 80)
Attempting to access the site via web browser from
https://example.com
returns a standard no-response "Server not found".
https://host
没有明确的端口说明意味着在 https 协议的默认端口上访问服务器,即 443。但是,您已将服务器设置为在 server_address
中使用端口 80 .
有两种方法可以解决此问题:在 URL 中明确指定 https 的非标准端口,即 https://host:80
或将 server_address
中的端口从 80 更改为443. 最后一个选项可能是更好的选项。