Mục lục

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly

Lỗi Giao Thức SSL: Hướng Dẫn Toàn Diện để Xác Định và Sửa Chữa

Ngày đăng: July 17, 2025

Security

Giới thiệu các lỗi giao thức SSL phổ biến

Lỗi giao thức SSL là một sự cố phía trình duyệt hoặc máy chủ ngăn cản việc thiết lập thành công một kết nối HTTPS an toàn. Khi điều này xảy ra, người dùng thường thấy các lỗi phổ biến như:

ERR_SSL_PROTOCOL_VERSION_ALERT

Lỗi này xảy ra khi máy khách và máy chủ không thể thống nhất được một phiên bản giao thức SSL/TLS chung. Các trình duyệt hiện đại yêu cầu TLS 1.2 trở lên, trong khi các máy chủ cũ có thể chỉ hỗ trợ các phiên bản đã lỗi thời. Điều này thường xảy ra khi:

  • Máy chủ được cấu hình để sử dụng các giao thức cũ không an toàn như SSL 3.0 hoặc TLS 1.0
  • Máy khách (trình duyệt) đã tắt hỗ trợ các giao thức cũ vì lý do bảo mật
  • Có proxy hoặc tường lửa ở giữa can thiệp vào quá trình đàm phán giao thức

ERR_SSL_HANDSHAKE_FAILURE

Lỗi này xảy ra khi quá trình bắt tay SSL/TLS không thành công trong việc thiết lập kết nối an toàn giữa máy khách và máy chủ. Quá trình bắt tay bao gồm các bước:

  1. Client Hello: Máy khách bắt đầu kết nối bằng cách gửi các phiên bản SSL/TLS và bộ mã hóa được hỗ trợ
  2. Server Hello: Máy chủ phản hồi với phiên bản giao thức và bộ mã hóa được chọn
  3. Certificate Exchange: Máy chủ gửi chứng chỉ SSL để xác thực
  4. Key Exchange: Hai bên thiết lập các khóa mã hóa cho phiên làm việc
  5. Finished: Quá trình bắt tay hoàn tất và bắt đầu giao tiếp an toàn

Nguyên nhân phổ biến của lỗi bắt tay bao gồm:

  • Bộ mã hóa không tương thích giữa máy khách và máy chủ
  • Lỗi xác thực chuỗi chứng chỉ
  • Vấn đề xác thực máy khách
  • Gián đoạn mạng trong quá trình bắt tay
  • Cấu hình máy chủ sai lệch với thiết lập SSL/TLS
  • Không khớp phiên bản giao thức
  • Chứng chỉ không hợp lệ hoặc đã hết hạn
  • Phần mềm bảo mật phía máy khách gây can thiệp

ERR_SSL_NO_CYPHER_OVERLAP

Lỗi này xảy ra khi máy khách và máy chủ không có bất kỳ bộ mã hóa chung nào để mã hóa. Điều này thường xảy ra khi:

  • Máy chủ được cấu hình với bộ mã hóa rất giới hạn
  • Bộ mã hóa hỗ trợ của máy khách quá mới so với máy chủ
  • Cấu hình bộ mã hóa của máy chủ không phù hợp với phiên bản giao thức SSL/TLS
  • Chính sách bảo mật ở một trong hai phía quá nghiêm ngặt

ERR_SSL_CERTIFICATE_INVALID

Lỗi này xảy ra khi có vấn đề với chứng chỉ SSL, như hết hạn, không khớp hostname hoặc chuỗi chứng chỉ không hợp lệ. Các nguyên nhân cụ thể gồm:

  • Chứng chỉ đã hết hạn hoặc chưa đến ngày hiệu lực
  • Tên chung (Common Name - CN) hoặc các Tên Thay Thế Chủ Đề (Subject Alternative Names - SANs) không khớp với tên miền
  • Chuỗi chứng chỉ không đầy đủ hoặc bị lỗi
  • Chứng chỉ được cấp bởi một Cơ Quan Chứng Thực (CA) không đáng tin cậy
  • Chứng chỉ bị thu hồi
  • Thuật toán ký của chứng chỉ bị xem là không an toàn

Việc không khớp chứng chỉ xảy ra khi tên miền trong chứng chỉ SSL không trùng khớp với tên miền thực tế được truy cập. Điều này có thể xảy ra theo nhiều cách:

  • Không khớp tên miền: Chứng chỉ được cấp cho example.com nhưng được sử dụng trên www.example.com hoặc một tên miền phụ
  • Không khớp địa chỉ IP: Chứng chỉ cấp cho tên miền nhưng sử dụng trên một địa chỉ IP
  • Vấn đề với chứng chỉ Wildcard: Chứng chỉ dạng wildcard (*.example.com) có thể không bao phủ hết tất cả các tên miền phụ nếu không cấu hình đúng
  • Vấn đề chứng chỉ đa miền: Chứng chỉ có nhiều SANs có thể không bao gồm tất cả các miền cần thiết

Để sửa lỗi không khớp chứng chỉ:

  1. Đảm bảo Common Name (CN) của chứng chỉ trùng với tên miền chính của bạn
  2. Thêm tất cả các tên miền cần thiết vào SANs
  3. Sử dụng chứng chỉ wildcard nếu cần phủ nhiều tên miền phụ
  4. Xác minh chứng chỉ đã được cài đặt trên máy chủ và tên miền chính xác

Dưới đây là bảng tóm tắt các lỗi giao thức SSL phổ biến và nguyên nhân:

Nguyên nhân Mô tả Giải pháp
Chứng chỉ SSL không hợp lệ Chứng chỉ hết hạn, cấu hình sai hoặc tự ký Gia hạn chứng chỉ, cấu hình lại chuỗi chứng chỉ, hoặc lấy chứng chỉ hợp lệ từ CA tin cậy
Không khớp giao thức SSL Máy chủ và trình duyệt hỗ trợ các phiên bản không tương thích (ví dụ: TLS 1.0 so với 1.3) Cập nhật cấu hình máy chủ hỗ trợ phiên bản TLS hiện đại (1.2 trở lên) và cho phép thương lượng giao thức
Lỗi đồng hồ hệ thống Thời gian/ngày hệ thống sai gây lỗi xác thực chứng chỉ Đồng bộ thời gian hệ thống với máy chủ NTP bằng ntpdate hoặc bật đồng bộ tự động
Phần mềm diệt virus hoặc tường lửa chặn Công cụ bảo mật can thiệp vào lưu lượng SSL Cấu hình để cho phép lưu lượng SSL/TLS hoặc tạm thời vô hiệu để kiểm tra
Bộ nhớ cache hoặc cookie của trình duyệt Dữ liệu cache hỏng gây gián đoạn phiên an toàn Xóa bộ nhớ cache và cookie hoặc thử ở chế độ ẩn danh
Hệ điều hành hoặc trình duyệt lỗi thời Phiên bản cũ không hỗ trợ giao thức SSL/TLS mới Cập nhật hệ điều hành và trình duyệt lên phiên bản mới nhất
Xung đột DNS hoặc file Hosts DNS hoặc file host tùy chỉnh gây lỗi chứng chỉ Kiểm tra bản ghi DNS, xóa cache DNS, kiểm tra file hosts
Cấu hình máy chủ sai Cài đặt HTTPS sai hoặc chứng chỉ hết hạn trên máy chủ Kiểm tra và cập nhật cấu hình SSL máy chủ, đảm bảo chứng chỉ được cài đúng
Lỗi cache SSL Cache phiên SSL hỏng gây lỗi bắt tay Xóa cache phiên SSL bằng openssl s_client -connect với flag -no_ticket hoặc khởi động lại dịch vụ SSL
Cache DNS hệ thống Bản ghi DNS lỗi thời gây lỗi xác thực chứng chỉ Xóa cache DNS hệ thống bằng systemd-resolve --flush-caches hoặc khởi động lại dịch vụ DNS

Cài Đặt Công Cụ Chẩn Đoán

Trước khi khắc phục lỗi SSL, bạn cần cài đặt các công cụ chẩn đoán cần thiết để phân tích cấu hình SSL và xác định các vấn đề cụ thể.

Cập nhật danh sách gói:

sudo apt update

Cài đặt OpenSSL để kiểm tra chứng chỉ và kết nối:

sudo apt install openssl

Lệnh openssl cung cấp các khả năng kiểm tra SSL/TLS toàn diện, bao gồm xác thực chứng chỉ, thử nghiệm giao thức và phân tích bộ mã hóa.

Cài đặt curl để kiểm tra HTTP/HTTPS:

sudo apt install curl

Curl cho phép gửi yêu cầu HTTP/HTTPS kèm thông tin gỡ lỗi SSL chi tiết, rất quan trọng để khắc phục sự cố kết nối.

Cài đặt nmap để quét cổng và dịch vụ SSL:

sudo apt install nmap

Nmap giúp quét các cổng mở và kiểm tra dịch vụ SSL, hỗ trợ bạn xác định các vấn đề cấu hình ở cấp mạng.


Cách Chẩn Đoán Lỗi Giao Thức SSL trên Máy Chủ

Bây giờ bạn đã có các công cụ cần thiết, chúng ta bắt đầu chẩn đoán lỗi giao thức SSL một cách có hệ thống.

Kiểm tra kết nối SSL với OpenSSL

Sử dụng OpenSSL để kiểm tra kết nối SSL đến máy chủ:

openssl s_client -connect your-domain.com:443 -servername your-domain.com

Thay your-domain.com bằng tên miền thực tế của bạn. Tham số -servername kích hoạt Server Name Indication (SNI), cần thiết với máy chủ lưu trữ nhiều chứng chỉ SSL.

Lệnh này sẽ hiển thị thông tin chi tiết về quá trình bắt tay SSL. Các chỉ báo quan trọng gồm:

  • Phiên bản giao thức: Nên là TLS 1.2 hoặc TLS 1.3
  • Bộ mã hóa: Phương pháp mã hóa đang sử dụng
  • Chuỗi chứng chỉ: Kiểm tra tính hợp lệ của chứng chỉ
  • Trạng thái bắt tay: Kết nối có thành công hay không

Ví dụ kết nối SSL thành công:

CONNECTED(00000003)
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = your-domain.com
verify return:1
---
Certificate chain
 0 s:/CN=your-domain.com
   i:/C=US/O=Let's Encrypt/CN=R3
 1 s:/C=US/O=Let's Encrypt/CN=R3
   i:/C=US/O=Internet Security Research Group/CN=ISRG Root X1
---
Server certificate
-----BEGIN CERTIFICATE-----
... (chi tiết chứng chỉ)
-----END CERTIFICATE-----
subject=/CN=your-domain.com
issuer=/C=US/O=Let's Encrypt/CN=R3
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3053 bytes and written 456 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN, server accepted to use h2
---

Ví dụ kết nối SSL thất bại:

CONNECTED(00000003)
depth=0 CN = your-domain.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = your-domain.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/CN=your-domain.com
   i:/C=US/O=Let's Encrypt/CN=R3
---
Server certificate
-----BEGIN CERTIFICATE-----
... (chi tiết chứng chỉ)
-----END CERTIFICATE-----
subject=/CN=your-domain.com
issuer=/C=US/O=Let's Encrypt/CN=R3
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3053 bytes and written 456 bytes
Verification error: unable to verify the first certificate
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN, server accepted to use h2
---

Giải thích và cách sửa:

Kết nối SSL thất bại do lỗi xác thực chuỗi chứng chỉ. Cụ thể:

  • verify error:num=20:unable to get local issuer certificate: Máy khách (trong trường hợp này là openssl s_client) không tìm thấy chứng chỉ của nhà phát hành trong kho tin cậy. Thường do chứng chỉ trung gian bị thiếu hoặc cấu hình sai.
  • verify error:num=21:unable to verify the first certificate: Lỗi này là hệ quả của lỗi trên, vì máy khách không xác thực được chứng chỉ đầu tiên do thiếu chứng chỉ trung gian.

Để khắc phục, bạn cần:

  1. Lấy chứng chỉ trung gian từ Cơ Quan Chứng Thực (CA) hoặc nguồn tin cậy.
  2. Cài đặt chứng chỉ trung gian trên máy chủ, thường đặt trong thư mục hoặc tệp cấu hình riêng.
  3. Cấu hình máy chủ sử dụng chứng chỉ trung gian trong quá trình bắt tay SSL/TLS, bao gồm cập nhật các tệp cấu hình SSL/TLS.

Sau khi sửa lỗi, thử kiểm tra lại kết nối SSL để xác nhận chuỗi chứng chỉ được cấu hình đúng và kết nối thành công.

Kiểm tra các phiên bản SSL/TLS được hỗ trợ

Kiểm tra phiên bản SSL/TLS mà máy chủ hỗ trợ:

openssl s_client -connect your-domain.com:443 -tls1_2 -servername your-domain.com

Kết quả:

(Thông tin chuỗi chứng chỉ và bắt tay tương tự ví dụ trước)

Kiểm tra hỗ trợ TLS 1.3:

openssl s_client -connect your-domain.com:443 -tls1_3 -servername your-domain.com

Kết quả tương tự với minh họa bắt tay TLS 1.3.

Nếu bạn nhận được lỗi wrong version number, nghĩa là máy chủ không hỗ trợ phiên bản TLS đó. Ví dụ:

openssl s_client -connect your-domain.com:443 -tls1_1 -servername your-domain.com

Có thể xuất hiện lỗi như:

140255555555:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:s3_pkt.c:1492:SSL alert number 40
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN, server accepted to use h2
---

Để sửa lỗi wrong version number, cần đảm bảo máy chủ được cấu hình hỗ trợ phiên bản TLS bạn muốn dùng.

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Share

0 replies