2010-03-24 3 views
2

OpenSSL에 X.509 인증서 기반 인증을위한 SSL_set_connect_state()/SSL_set_accept_state()에 대한 대안이 있습니까?OpenSSL을 사용하는 X.509 인증서 기반 인증 (소켓을 사용하지 않음)

내 응용 프로그램에서 클라이언트와 서버가 소켓을 사용하여 통신하지 못하기 때문에 문제가 발생하며 직접 연결을 설정할 수 없습니다. 그래서 OpenSSL에서 내가 원했던 것은 다른 쪽에서 파티에 전달할 중간 SSL 컨텍스트 설정 메시지를 '노출'하는 것입니다.

도움 주셔서 감사합니다.

+0

* * 그들이 어떻게 의사 소통을 할 ? – Pointy

+0

그건 중요하지 않지만 XMPP를 사용하여 통신한다고 가정 할 수 있습니다. – hartem

답변

2

OpenSSL BIO 인터페이스를 사용할 수 있습니다.

  1. 연결된 BIO 쌍을 생성하려면 BIO_new_bio_pair()을 사용하십시오. 하나의 BIO는 SSL 루틴에 의해 읽고 쓰여지고, 다른 BIO는 응용 프로그램에 의해 읽고 쓰여질 것입니다 (원하는 모든 방법으로 다른 쪽 끝으로 데이터를 전달할 수 있습니다).

  2. 새 SSL 개체에 SSL_set_bio()을 사용하여 읽기 및 쓰기 BIO를 생성 된 쌍의 BIO 중 하나로 설정하십시오.

  3. SSL 프로토콜 데이터를 읽고 쓸 수있는 쌍의 다른 BIO에 BIO_read()BIO_write()을 사용하십시오.

  4. 사용 SSL_accept()의 SSL 객체에 정상적으로 SSL_connect(), SSL_read()SSL_write().

+0

OpenSSL을 비동기 소켓과 함께 사용할 수 있도록 'BIO' 인터페이스를 사용하는 코드가 있지만'커넥터 '코드는 SSL 스트림을 모든 전송에 연결하는 데 사용될 수 있습니다. 자세한 내용 및 코드는 http://www.lenholgate.com/archives/000456.html을 참조하십시오. –

+0

힌트를 보내 주셔서 감사합니다! 시도해 볼 것입니다. – hartem

0

예, SSL 소켓 레이어와 동일한 X.509 확인 루틴을 사용할 수 있습니다.

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

문서는 약간 (당신이 생각하는 것 그들이 1.0 모두 완료 한 것) ... 여기이 부족하다고 생각. 도서관의 이러한 측면에 익숙하다고 말할 수는 없지만 openssl에는 x509 검증 도구가 포함되어 있습니다. 그것을하는 방법에 대한 소스 코드를 들여다 볼 수 있어야합니다.

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