タグとコメントに基づいて、TLS接続のみが必要だと思います。クライアントは TLS 接続のみを開始する必要があります。もしそうなら、なぜあなたは主張するのSSLv23_client_method
ですか?しかし、以下は私のテストで TLS 1.0 client hello を送信しました:
ctx = SSL_CTX_new(SSLv23_client_method());
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3);
POODLE 攻撃を防ぐには、クライアントとサーバーで SSL3 サポートを完全に無効にするのが最善です。あなたの場合、サーバーはTLSのみをサポートしていると述べました。したがって、SSL3 上のクライアントとの下位互換性は必要ありません。サーバーが SSL3 と通信する場合、POODLE 攻撃を防ぐために、クライアントとサーバーは TLS フォールバック シグナリング暗号スイート値を実装する必要があります。 https://datatracker.ietf.org/doc/html /draft-ietf-tls-downgrade-scsv-05
クライアント側で TLS を設定する例:
/* Exclude SSLv2 and SSLv3 */
ctx = SSL_CTX_new(TLSv1_client_method());
SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2);
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3);
/* Exclude SSLv2, SSLv3 and TLS 1.0 */
ctx = SSL_CTX_new(TLSv1_1_client_method());
SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2);
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3);
SSL_CTX_set_options(ctx,SSL_OP_NO_TLSv1);
/* Exclude SSLv2, SSLv3 ,TLS 1.0 and TLS 1.1 */
ctx = SSL_CTX_new(TLSv1_2_client_method());
SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2);
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3);
SSL_CTX_set_options(ctx,SSL_OP_NO_TLSv1);
SSL_CTX_set_options(ctx,SSL_OP_NO_TLSv1_1);
オプションを OR してSSL_CTX_set_options
、一度に渡すこともできます。