OpenSSLには、X.509証明書ベースの認証用のSSL_set_connect_state()/ SSL_set_accept_state()に代わるものはありますか?
問題は、私のアプリケーションでは、クライアントとサーバーがソケットを使用して通信せず、それらの間の直接接続を確立できないことです。したがって、OpenSSLに必要なのは、中間SSLコンテキスト確立メッセージを「公開」して、それを相手側に伝達することです。
ご協力いただきありがとうございます!
これには、OpenSSLBIO
インターフェイスを使用できます。
BIO_new_bio_pair()
接続された BIO ペアを作成するために使用します。1 つの BIO は SSL ルーチンによって読み書きされ、もう 1 つの BIO はアプリケーションによって読み書きされます (必要な方法でデータを相手側に渡すことができます)。
新しい SSL オブジェクトで使用SSL_set_bio()
して、読み取りと書き込みの両方の BIO を、生成されたペアの BIO の 1 つに設定します。
BIO_read()
ペアのもう一方の BIO でとを使用BIO_write()
して、SSL プロトコル データを読み書きします。
SSL オブジェクトではSSL_accept()
、 、SSL_connect()
、SSL_read()
およびを通常どおり使用します。SSL_write()
はい、SSL ソケット層のものと同じ X.509 検証ルーチンを使用できます。
http://openssl.org/docs/crypto/x509.html
ここでは、ドキュメントが少し不足しているようです... (1.0 ですべてが終了したと思われるでしょう)。ライブラリのこの側面に精通しているとは言えませんが、openssl にはコマンド ライン x509 検証ツールが付属しています。それを行う方法については、ソースコードを覗くことができるはずです。