2012-02-24 2 views
2

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

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

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

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

ответ

3

это сделает трюк. Обратите внимание, что 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) 

EDIT: Только для потомков, комментарий Бруно ниже является допустимым и вот статья, как свернуть его с помощью сокета SSL и гнездовые модули в STDLIB в случае его необходимости.

EDIT2: Кажется, я не могу размещать ссылки - просто сделать веб-поиска для «Проверка сертификата сервера SSL с Python 2.x другой день»

+0

Вы, вероятно, следует использовать другую библиотеку, так как 'httplib' не делает ничего проверка сертификата сервера, что делает уязвимость HTTPSConnection уязвимой для атак MITM. – Bruno

+0

Спасибо Dariusz! Бруно: текущий код использует ** curl -k **, поэтому он также уязвим. –

Смежные вопросы