В чем разница между set_client_CA_list_from_file () и load_verify_info () M2Crypto и когда вы будете использовать каждый из них? - PullRequest
2 голосов
/ 04 декабря 2009

Библиотека M2Crypto имеет несколько связанных с CA функций для своего объекта SSL.Context , но документация очень неясна относительно того, когда вы будете использовать определенные функции и почему. Фактически, документы почти для всех из них таковы: «Загрузите сертификаты CA в контекст», поэтому кажется вероятным, что все они делают одно и то же.

Есть несколько примеров , которые используют set_client_CA_list_from_file() и load_verify_info(), но есть и другие подобные функции, такие как load_client_ca() и load_verify_locations().

Я пишу как клиентские, так и серверные части. Какие функции я должен использовать и почему? Что конкретно они делают?

Edit:

Просматривая код, который я вижу:

# Deprecated.
load_client_CA = load_client_ca = set_client_CA_list_from_file

и

# Deprecated.
load_verify_info = load_verify_locations

Так что это немного помогает. Это сводит нас к двум функциям: set_client_CA_list_from_file() и load_verify_locations(). Но я до сих пор не могу понять разницу между ними.

1 Ответ

2 голосов
/ 04 декабря 2009

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

Клиент указывает, кто является действительными издателями сертификатов сервера, вызывая load_verify_locations . Это должны делать почти все клиенты.

И клиент, и сервер могут вызывать load_cert , чтобы установить собственный сертификат. Серверы должны почти всегда делать это. Вероятно, клиенты должны делать это только в том случае, если сервер требует, чтобы клиент представил сертификат.

Я рекомендую вам выбрать копию Сетевая безопасность с OpenSSL Джона Виеги, Мэтта Мессье и Правира Чандры, ISBN 059600270X, которая должна прояснить эти проблемы более подробно.

...