Скручиваемая отправка клиентских сертификатов без PyCurl: как? - PullRequest
2 голосов
/ 24 февраля 2012

Наш клиент хочет, чтобы клиентский скрипт, который будет установлен на компьютерах его клиентов, был как можно более простым в установке. Это означает, что дополнительные пакеты не устанавливаются, в данном случае PyCurl.

Мы должны иметь возможность подключаться к веб-сайту с использованием SSL и ожидая сертификата клиента. В настоящее время это делается вызовом Curl с помощью os.system (), но чтобы получить код возврата http, это похоже на то, что нам придется использовать опцию -v для Curl и прочесать этот вывод. Не сложно, просто немного неприглядно.

Есть ли другой способ сделать это, используя стандартную библиотеку, поставляемую с Python 2.6? Я прочитал все, что мог найти на этом, и я не мог видеть не-Curl способ сделать это.

Заранее благодарен за любые указания по этому вопросу!

1 Ответ

3 голосов
/ 24 февраля 2012

это сделает свое дело. Обратите внимание, что Verisign не требует сертификата клиента, это просто случайно выбранный HTTPS-сайт.

import httplib

conn = httplib.HTTPSConnection('verisign.com', key_file='./my-key.pem', cert_file='./my-cert.pem')

conn.connect()
conn.request('GET', '/')

conn.set_debuglevel(20)

response = conn.getresponse()
print('HTTP status', response.status)

РЕДАКТИРОВАТЬ: Просто для потомков, комментарий Бруно ниже является действительным, и вот статья о том, как его свернуть, используя sdl и сокет модули stdlib в случае необходимости.

РЕДАКТИРОВАТЬ 2: Кажется, я не могу публиковать ссылки - просто выполните поиск в Интернете для «Проверка сертификата сервера SSL с Python 2.x другой день»

...