Аутентификация на основе сертификата X.509 с OpenSSL (без использования сокетов)

Есть ли в OpenSSL альтернатива SSL_set_connect_state () / SSL_set_accept_state () для аутентификации на основе сертификата X.509?

Проблема в том, что в моем приложении клиент и сервер не взаимодействуют с помощью сокетов, и установление прямого соединения между ними невозможно. Итак, что я хочу от OpenSSL, так это «раскрыть» промежуточные сообщения об установлении контекста SSL, которые я затем передам стороне на другом конце.

Спасибо за вашу помощь!


person hartem    schedule 24.03.2010    source источник
comment
Это не имеет значения, но вы можете предположить, что они общаются с помощью XMPP.   -  person hartem    schedule 25.03.2010


Ответы (2)


Для этого можно использовать интерфейс OpenSSL BIO.

  1. Используйте BIO_new_bio_pair() для создания подключенной пары BIO. Один BIO будет считываться и записываться подпрограммами SSL, а другой BIO будет считываться и записываться вашим приложением (позволяя ему передавать данные на другой конец любым способом, который он пожелает).

  2. Используйте SSL_set_bio() на новом объекте SSL, чтобы установить как чтение, так и запись BIO. к одному из BIO в сгенерированной паре.

  3. Используйте BIO_read() и BIO_write() на другом BIO в паре для чтения и записи данных протокола SSL.

  4. Используйте SSL_accept(), SSL_connect(), SSL_read() и SSL_write() как обычно для объекта SSL.

person caf    schedule 25.03.2010
comment
У меня есть код, который использует интерфейс BIO, позволяющий использовать OpenSSL с асинхронными сокетами, но код для «коннектора» можно использовать для подключения потока SSL к любому транспорту. Подробную информацию и код см. Здесь: lenholgate.com/archives/000456.html. - person Len Holgate; 25.03.2010
comment
Спасибо за подсказку! Попробую. - person hartem; 25.03.2010

Да, вы можете использовать те же процедуры проверки X.509, что и материал уровня сокетов SSL.

http://openssl.org/docs/crypto/x509.html

Документации здесь немного не хватает ... (можно было подумать, что для 1.0 они бы все закончили). Я не могу сказать, что знаком с этим аспектом библиотеки, но openssl поставляется с инструментом проверки x509 из командной строки. Вы должны иметь возможность заглянуть в его исходный код, чтобы узнать, как это сделать.

http://openssl.org/docs/apps/verify.html

person NUXI    schedule 30.03.2010