使用OpenSSL进行基于X.509证书的身份验证(不使用套接字)

时间:2010-03-24 22:55:38

标签: c security openssl x509

对于基于X.509证书的身份验证,OpenSSL中是否有替代SSL_set_connect_state()/ SSL_set_accept_state()的替代方法?

问题是在我的应用程序中,客户端和服务器不使用套接字进行通信,并且无法建立它们之间的直接连接。所以我想从OpenSSL中“暴露”中间SSL上下文建立消息,然后我将传达给另一端的一方。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

可以使用OpenSSL BIO接口。

  1. 使用BIO_new_bio_pair()创建连接的BIO对。一个BIO将由SSL例程读取和写入,另一个BIO将由您的应用程序读取和写入(允许它通过任何方法将数据传递到另一端)。

  2. 在新的SSL对象上使用SSL_set_bio()将读取和写入BIO设置为生成的对中的一个BIO。

  3. 在对中的另一个BIO上使用BIO_read()BIO_write()来读取和写入SSL协议数据。

  4. 在SSL对象上正常使用SSL_accept()SSL_connect()SSL_read()SSL_write()

答案 1 :(得分:0)

是的,您可以使用与SSL套接字层相同的X.509验证例程。

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

这里的文档似乎有点缺乏......(你认为他们已经为1.0完成了所有工作)。我不能说我熟悉这个库的这个方面,但是openssl附带了一个命令行x509验证工具。您应该能够查看它的源代码,了解如何执行此操作。

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