Изменяет ли сертификат соединение / состояние SSL «указывает», если я загружаю новый сертификат в OpenSSL? - PullRequest
4 голосов
/ 27 мая 2011

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

Теперь я знаю из документов сайта OpenSSL, что их внутреннее хранилище сертификатов OpenSSL может содержать одну пару сертификат / ключ для шифра RSA.У меня такой вопрос:

Предположим, у меня есть структура SSL с именем ssl1 , которую я создал из своего SSL_CTX, где я не установил сертификат / ключ для использования в SSL_CTX (таким образом, не наследуясертификат / ключ).Затем я продолжаю устанавливать сертификат / ключ для ssl1 , который связан с каким-либо пользователем.Затем предположим, что у меня есть другая структура SSL с именем ssl2 , созданная из того же SSL_CTX.Затем я продолжаю устанавливать сертификат / ключ для ssl2 , который связан с пользователем, отличным от первого.

Если в этот момент я вызову API SSL_connect () для ssl1 , будет ли он использовать сертификат / ключ, который я установил для ssl2 ?Я спрашиваю, так как магазин говорит, что он содержит только одну пару сертификат / ключ, и я загрузил сертификат / ключ для ssl2 последний, поэтому я предполагаю, что он перезапишет тот, который я загрузил первым для ssl1 .

Спасибо за чтение моего поста.Я ценю любую помощь / мудрость / указатели, которые вы можете предоставить.

Ответы [ 2 ]

0 голосов
/ 05 октября 2012

Насколько я понимаю, SSL_CTX действует как шаблон для объектов SSL.Поэтому, когда вы создаете новый объект SSL, он наследует свойства / атрибуты SSL_CTX, из которого он создан.Здесь четко упоминается здесь

Так что по вашему вопросу оба объекта ssl1 и ssl2 будут использовать свой собственный сертификат / ключ.

0 голосов
/ 29 июля 2011

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

Я считаю, что вы действительно хотите установить соединения, используя настройки, обеспечивающие Perfect Forward Secrecy . Для этого вы хотите использовать шифры TLS, имена которых начинаются с TLS_DHE_. Они используют обмен ключами Диффи-Хелмана, что делает роль ключа сервера в основном одной из аутентификаций сервера для пользователей.

...