对于基于X.509证书的身份验证,OpenSSL中是否有替代SSL_set_connect_state()/ SSL_set_accept_state()的替代方法?
问题是在我的应用程序中,客户端和服务器不使用套接字进行通信,并且无法建立它们之间的直接连接。所以我想从OpenSSL中“暴露”中间SSL上下文建立消息,然后我将传达给另一端的一方。
感谢您的帮助!
答案 0 :(得分:2)
可以使用OpenSSL BIO
接口。
使用BIO_new_bio_pair()
创建连接的BIO对。一个BIO将由SSL例程读取和写入,另一个BIO将由您的应用程序读取和写入(允许它通过任何方法将数据传递到另一端)。
在新的SSL对象上使用SSL_set_bio()
将读取和写入BIO设置为生成的对中的一个BIO。
在对中的另一个BIO上使用BIO_read()
和BIO_write()
来读取和写入SSL协议数据。
在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验证工具。您应该能够查看它的源代码,了解如何执行此操作。