---
title: "Lỗi Giao Thức SSL: Hướng Dẫn Toàn Diện để Xác Định và Sửa Chữa"
description: "Lỗi giao thức SSL (Secure Sockets Layer) là một trong những vấn đề liên quan đến bảo mật phổ biến nhất khi thiết lập kết nối an toàn giữa máy khách và máy chủ. Những lỗi này xảy ra khi có sự không khớp hoặc không tương thích trong quá trình bắt tay SSL/TLS, ngăn chặn việc thiết lập kết nối an toàn."
url: https://cloudfly.vn/loi-giao-thuc-ssl-huong-dan-toan-dien-de-xac-dinh-va-sua-chua
image: https://media.cloudfly.vn/posts/loi-giao-thuc-ssl.png
---

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

### 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:

```bash
sudo apt update
```

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

```bash
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:

```bash
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:

```bash
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ủ:

```bash
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ợ:

```bash
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:

```bash
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ụ:

```bash
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.
