簡體   English   中英

我如何在客戶端支持多個版本的TLS?

[英]How would i support multiple version of TLS on client side?

嗨我想在客戶端使用SSLV23方法支持多個版本的TLS。但是我無法連接獲取錯誤:

SSL23_GET_SERVER_HELLO:sslv3警報握手失敗

任何人都可以告訴我如何使用openssl支持多個版本的TLS?

SSLV23的代碼片段(不工作)

cctx = SSL_CTX_new(SSLv23_client_method());
  if(cctx) {
  SSL_CTX_set_options(cctx, SSL_OP_NO_SSLv3);
  }

僅適用於TLS V1(工作)

cctx = SSL_CTX_new(TLSv1_client_method());

根據您的標簽和評論,我假設您只想要TLS連接。 客戶端應僅啟動TLS連接。 如果是這樣,為什么你堅持使用SSLv23_client_method 但是以下確實在我的測試中發出了TLS 1.0客戶端問候:

ctx = SSL_CTX_new(SSLv23_client_method());
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3);

要防止POODLE攻擊,最好是在客戶端和服務器上完全禁用SSL3支持。 在您的情況下,您提到服務器僅支持TLS。 因此,不需要與SSL3上的客戶端向后兼容如果服務器確實在談論SSL3,為了防止POODLE攻擊,客戶端和服務器應該實現TLS回退信令密碼套件值 - https://tools.ietf.org/html/draft -ietf-TLS降級-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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM