Порой нужно развернуть собственный сервер, и важно чтобы он был secure, https. И сегодня мы рассмотрим как это делается, используя самоподписанные сертификаты. Для начала установите openssl с помощью менеджера пакетов, если он еще не установлен

Сенерируем ключ сервера

1
$ openssl genrsa -des3 -out server.key 1024

Вам будет предложено ввести пароль для вашего ключа. Введите, подтвердите и продолжите.

Создайте свой запрос подписи сертификата (CSR)

1
$ openssl req -new -key server.key -out server.csr

Вам будет предложено ввести пароль для ключа. Введите тот, который вы создали с шага 1 выше. Затем вы можете принять значения по умолчанию для всех приглашений, которые вам представлены, за исключением Common Name. Это как раз и сделает расширенную проверку сертификатов валидной. Поскольку мы делаем локальную разработку, ваше Common name будет localhost.

1
Common Name (e.g. server FQDN or YOUR name) []:localhost

Создайте свой сертификат.

Наконец, нам нужно создать наш сертификат. Опять же, используйте свой пароль для ключа, указанный ранее.

1
$ openssl x509 -req -days 1024 -in server.csr -signkey server.key -out server.crt

Сгенерировать файл pem

1
$ cat server.crt server.key> server.pem

Реализация сервера Python:

1
2
3
4
5
6
7
8
#!/usr/bin/python
import BaseHTTPServer, SimpleHTTPServer
import ssl
httpd = BaseHTTPServer.HTTPServer (('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket (httpd.socket, certfile = '/ path / to / server.pem', server_side = True)
httpd.serve_forever ()

Запустить $ python server.py

Хост по умолчанию здесь - localhost, а порт - 4443.

Отлично! Мы развернули сервер https. Перейдем в https://localhost:4443 и нажмем «Дополнительно»> «Перейти» на «localhost» (небезопасно), чтобы принимать сертификаты и просматривать файлы сервера