Cách fix lỗi ssl alert number 40?

1. Lỗi ssl alert number 40 là gì?

Lỗi SSL Alert Number 40 là một mã lỗi trong giao thức SSL/TLS. SSL (Secure Sockets Layer) và phiên bản tiếp theo của nó, TLS (Transport Layer Security), là các giao thức được sử dụng để bảo vệ thông tin truyền tải qua mạng bằng cách mã hóa nó và đảm bảo tính toàn vẹn của dữ liệu. Các mã lỗi SSL Alert Number là cách để các máy chủ và máy khách giao tiếp với nhau để báo cáo về các tình huống lỗi hoặc vấn đề xảy ra trong quá trình thiết lập hoặc duy trì kết nối SSL/TLS.

SSL Alert Number 40 thường được gọi là “Handshake Alert” hoặc “Unexpected Message” và có thể xuất hiện trong nhiều tình huống khác nhau. Lỗi này thường xảy ra khi có sự không đồng bộ trong giao tiếp giữa máy chủ và máy khách SSL/TLS

2. Cách fix lỗi ssl alert number 40?

 

Bước 1: Trong Nginx, một vị trí cụ thể đã được xác định sẽ tải nội dung:

location = /uripath {
proxy_pass https://external.example.com/;
}

Bước 2: Tái tạo số cảnh báo SSL 40 bằng openssl

Chỉ cần kết nối với địa chỉ IP máy chủ ngược dòng, lỗi SSL tương tự sẽ xuất hiện:

openssl s_client -connect 104.26.3.5:443
CONNECTED(00000003)
140542033261888:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:../ssl/record/rec_layer_s3.c:1543:SSL alert number 40

no peer certificate available

No client certificate CA names sent

SSL handshake has read 7 bytes and written 283 bytes
Verification: OK

New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)

Bước 3: Khi thêm tên miền của máy chủ ngược tuyến, kết nối TLS có thể được thiết lập:

openssl s_client -connect 104.26.3.5:443 -servername external.example.com
CONNECTED(00000003)
depth=2 C = IE, O = Baltimore, OU = CyberTrust, CN = Baltimore CyberTrust Root
verify return:1
depth=1 C = US, O = “Cloudflare, Inc.”, CN = Cloudflare Inc ECC CA-3
verify return:1
depth=0 C = US, ST = California, L = San Francisco, O = “Cloudflare, Inc.”, CN = sni.cloudflaressl.com
verify return:1

Certificate chain
 0 s:C = US, ST = California, L = San Francisco, O = “Cloudflare, Inc.”, CN = sni.cloudflaressl.com
   i:C = US, O = “Cloudflare, Inc.”, CN = Cloudflare Inc ECC CA-3
 1 s:C = US, O = “Cloudflare, Inc.”, CN = Cloudflare Inc ECC CA-3
   i:C = IE, O = Baltimore, OU = CyberTrust, CN = Baltimore CyberTrust Root

Server certificate
—–BEGIN CERTIFICATE—–
[…]

Bước 4: Yêu cầu Nginx sử dụng tên máy chủ SSL chính xác

Để cho Nginx biết rằng nên sử dụng tên máy chủ (gốc) (chính tên miền ngược dòng), có thể thêm một tham số cụ thể proxy_ssl_server_name :

  location = /uripath {
    proxy_ssl_server_name on;
    proxy_pass https://external.example.com/;
  }

Sau khi tải lại Nginx, yêu cầu từ máy khách hiện đã hoạt động và kết nối với máy chủ ngược dòng hiện có thể được thiết lập.

2021/08/30 11:50:58 [debug] 2240173#2240173: *77 http upstream request: “/uripath?”
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 http upstream send request handler
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 malloc: 0000558101039030:88
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 upstream SSL server name: “external.example.com”
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 set session: 0000000000000000
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 tcp_nodelay
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 SSL_do_handshake: -1
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 SSL_get_error: 2
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 SSL handshake handler: 0
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 SSL_do_handshake: -1
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 SSL_get_error: 2
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 SSL handshake handler: 1
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 SSL_do_handshake: -1
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 SSL_get_error: 2
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 SSL handshake handler: 0
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 save session: 00005581012175D0
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 SSL_do_handshake: 1
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 SSL: TLSv1.2, cipher: “ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD”
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 http upstream ssl handshake: “/uripath?”
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 http upstream send request
2021/08/30 11:50:58 [debug] 2240173#2240173: *77 http upstream send request body

3. Kết luận:

OK vậy là đã xong – bạn có thể check và kiểm tra lại

 

0/5 (0 Reviews)

Leave a Comment