Аутентификация на основе сертификатов X.509 с OpenSSL (без использования сокетов) - PullRequest
2 голосов
/ 25 марта 2010

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

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

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

Ответы [ 2 ]

2 голосов
/ 25 марта 2010

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

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

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

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

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

0 голосов
/ 30 марта 2010

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

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

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

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

...