对于基于 X.509 证书的身份验证,OpenSSL 中是否有 SSL_set_connect_state()/SSL_set_accept_state() 的替代方法?
问题是在我的应用程序中,客户端和服务器不使用套接字进行通信,并且无法在它们之间建立直接连接。因此,我想要从 OpenSSL 中“公开”中间 SSL 上下文建立消息,然后我会将这些消息传达给另一端的一方。
谢谢你的帮助!
OpenSSLBIO
接口可用于此。
用于BIO_new_bio_pair()
创建连接的 BIO 对。一个 BIO 将由 SSL 例程读取和写入,另一个 BIO 将由您的应用程序读取和写入(允许它通过所需的任何方法将数据传递到另一端)。
在新的 SSL 对象上使用SSL_set_bio()
以将读取和写入 BIO 设置为生成的对中的一个 BIO。
在对中的另一个 BIO 上使用BIO_read()
和读取和写入 SSL 协议数据。BIO_write()
在 SSL 对象上正常使用、SSL_accept()
和SSL_connect()
。SSL_read()
SSL_write()
是的,您可以使用与 SSL 套接字层相同的 X.509 验证例程。
http://openssl.org/docs/crypto/x509.html
这里的文档似乎有点缺乏......(你会认为他们已经为 1.0 完成了这一切)。我不能说我对库的这方面很熟悉,但是 openssl 带有一个命令行 x509 验证工具。您应该能够查看它的源代码以了解如何执行此操作。