У меня был рабочий HTTP-сервер с использованием BaseHTTPServer
в Python, поэтому я попытался добавить SSL-сертификат для https с использованием LetsEncrypt, и теперь он не будет обслуживать ни один файлы или отвечать. Никаких исключений или ошибок не было брошено, и он не будет обслуживать какой-либо контент.Попытка использования LetsEncrypt для запуска SSL-обернутого BaseHTTPServer в Python не удалась
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
Попытка получить доступ к сайту через веб-браузер от https://example.com
возвращает качестве стандарта не-ответ «Сервер не найден».
Я следовал следующие инструкции для создания сертификата с помощью LetsEncrypt: https://certbot.eff.org/#ubuntuxenial-other
sudo apt-get install letsencrypt
Вслед за:
letsencrypt certonly --standalone -d example.com
Есть ли способ, я могу легко выяснить, в чем проблема? Использование Python 3.5. Приятно предоставить дополнительную информацию, если необходимо.
Что делает MyHandler? Это вилка? Какой URL-адрес вы используете для доступа к нему? Учитывая код, URL должен включать протокол https, а также явно порт 80, потому что это не стандартный порт для https. Кроме того, любой доступ без HTTPS приведет к тому, что сервер остановится для всех пользователей, см. Http://stackoverflow.com/questions/26531146/truly-non-blocking-https-server-in-python. –
@SteffenUllrich добавил код для MyHandler, а также информацию об URL-адресе, используемом для доступа к нему (протокол https). – ReactingToAngularVues