Сервер / клиент Python HTTPServer - Как использовать SSL-сертификат от GoDaddy? - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь создать очень простой Python HTTPS-сервер, используя SSL-сертификаты.Клиент требует, чтобы у меня был сертификат от одного из главных CA (не может быть самоподписанным), поэтому я купил его у GoDaddy.com.Клиент сказал мне, что у них уже есть корневые и промежуточные сертификаты от всех основных CA, установленных в их системах.Я не выполняю проверку сертификата клиента, но клиент выполняет проверку сертификата моего сертификата сервера.

GoDaddy предоставляет закрытый ключ (файл, который содержит «BEGIN PRIVATE KEY» и «END PRIVATE KEY), а такжеZIP-файл с двумя файлами:

xxxxxxxxxxxxxxxx.crt (which contains 1 certificate)
gd_bundle-g2-g1.crt  (which contains 3 certificates)

Я не хочу устанавливать сертификаты на машину, я хочу загружать их только с помощью кода.Вот мой код сервера:

httpd = HTTPServer(('0.0.0.0', 443), Handler)
httpd.socket = ssl.wrap_socket(httpd.socket, cert_reqs = ssl.CERT_REQUIRED, keyfile='private.key', certfile='xxxxxxxxxxxxxxxx.crt', server_side=True, ca_certs='gd_bundle-g2-g1.crt')
httpd.serve_forever()

Сервер загружает сертификаты и запускается нормально.

Я написал базовый клиент для проверки SSL и проверки возможности взаимодействия с сервером:

req = requests.Request('POST', 'https://localhost:443/TESTURL', headers=headers, files=files)
prepared = req.prepare()
s = requests.Session()
resp = s.send(prepared, verify=False, cert='certs/gd_bundle-g2-g1.crt')

Но я получаю исключение в последней строке:

OpenSSL.SSL.Error: [('PEM routines', 'PEM_read_bio', 'no start line'), ('SSL routines', 'SSL_CTX_use_PrivateKey_file', 'PEM lib')]

Моя проблема с кодом сервера или кодом клиента?

Как я могу проверитьсервер с фиктивным клиентом?

Использую ли я здесь правильный сертификат клиента?

Я новичок в цепочках сертификатов SSL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...