---
title: "Cách cài đặt chứng chỉ SSL từ cơ quan cấp chứng chỉ thương mại"
description: "Cách cài đặt chứng chỉ SSL từ cơ quan cấp chứng chỉ thương mại"
url: https://cloudfly.vn/techblog/cach-cai-dat-chung-chi-ssl-tu-co-quan-cap-chung-chi-thuong-mai
image: https://media.cloudfly.vn/posts/techblog_QiWHz7o.jpg
---

# Cách cài đặt chứng chỉ SSL từ cơ quan cấp chứng chỉ thương mại

## Giới thiệu

Hướng dẫn này sẽ chỉ cho bạn cách lấy và cài đặt chứng chỉ SSL từ Tổ chức phát hành chứng chỉ thương mại đáng tin cậy (Certificate Authority - CA). Chứng chỉ SSL cho phép máy chủ web mã hóa lưu lượng truy cập của họ và cũng cung cấp cơ chế xác thực danh tính máy chủ cho khách truy cập của họ. Các trang web sử dụng SSL được truy cập thông qua giao thức `https://`.

Trước giữa những năm 2010, nhiều trang web nhỏ hơn không phải lúc nào cũng sử dụng SSL hoặc HTTPS. Kể từ đó, kỳ vọng về bảo mật đã tăng lên và dự án Let's Encrypt được tạo ra để cung cấp chứng chỉ SSL miễn phí, đáng tin cậy trên quy mô lớn, cho phép hầu hết mọi người sử dụng HTTPS khi cần.

Tuy nhiên, có một số hạn chế đối với chứng chỉ của Let's Encrypt. Chúng hết hạn 3 tháng một lần, thường yêu cầu bạn phải có tập lệnh tự động gia hạn đang hoạt động và có thể khó sử dụng trong những môi trường không thể thực hiện được điều này. Let's Encrypt cũng không cung cấp chứng chỉ **Extended Validation** (Xác thực mở rộng) xác thực quyền sở hữu hợp pháp đối với sự hiện diện trên web của bạn hoặc **Wildcard Certificates** (Chứng chỉ ký tự đại diện) sẽ tự động khớp với mọi miền phụ có thể có của trang web của bạn (chẳng hạn như <^>shop<^>.example.com) mà không cần bạn phải đăng ký từng miền theo cách thủ công .

Đối với hầu hết người dùng, đây sẽ không phải là những hạn chế đáng kể. Let's Encrypt là một tùy chọn phổ biến cho nhiều trang web cá nhân và thương mại. Tuy nhiên, nếu bạn có các yêu cầu phần mềm doanh nghiệp cụ thể hoặc hoạt động thương mại rất lớn, bạn nên xem xét việc mua chứng chỉ từ một CA thương mại.

Hướng dẫn này bao gồm cách chọn và triển khai chứng chỉ SSL từ cơ quan cấp chứng chỉ đáng tin cậy. Sau khi bạn đã có được chứng chỉ SSL, hướng dẫn này sẽ bao gồm việc cài đặt nó trên các máy chủ web Nginx và Apache.

## Điều kiện tiên quyết

Có một số điều kiện tiên quyết để cố gắng lấy chứng chỉ SSL từ CA thương mại:

* Một tên miền đã đăng ký. Hướng dẫn này sẽ sử dụng `example.com xuyên suốt. Bạn có thể mua một tên miền từ CloudFly, nhận một tên miễn phí với Freenom hoặc sử dụng công ty đăng ký tên miền mà bạn chọn.
* Truy cập vào một trong các địa chỉ email trên bản ghi WHOIS của miền của bạn hoặc vào địa chỉ email "admin type" tại chính miền đó. Cơ quan cấp chứng chỉ cấp chứng chỉ SSL thường sẽ xác thực quyền kiểm soát miền bằng cách gửi email xác thực tới một trong các địa chỉ trên bản ghi WHOIS của miền hoặc tới địa chỉ email quản trị viên chung tại chính miền đó. Để được cấp chứng chỉ Xác thực mở rộng, bạn cũng sẽ được yêu cầu cung cấp cho CA giấy tờ để thiết lập danh tính hợp pháp của chủ sở hữu trang web, trong số những thứ khác.
* Bản ghi DNS được thiết lập cho máy chủ của bạn. 

Hướng dẫn này sẽ cung cấp hướng dẫn cấu hình cho máy chủ Ubuntu 22.04 được thiết lập bằng cách làm theo hướng dẫn cài đặt máy chủ ban đầu cho Ubuntu 22.04 này, bao gồm non-root user đã bật sudo và tường lửa. Hầu hết các bản phân phối Linux hiện đại sẽ hoạt động tương tự.

Bạn cũng nên cài đặt một máy chủ web như Nginx hoặc Apache, làm theo Cách cài đặt Nginx trên Ubuntu 22.04 hoặc Cách cài đặt máy chủ web Apache trên Ubuntu 22.04. Đảm bảo rằng bạn có khối máy chủ (hoặc máy chủ ảo Apache) cho miền của mình.

## Bước 1 – Chọn cơ quan cấp chứng chỉ của bạn

Nếu bạn không chắc chắn nên sử dụng Tổ chức phát hành chứng chỉ nào, có một số yếu tố cần xem xét.

### Tư cách thành viên chương trình chứng chỉ gốc

Điểm quan trọng nhất là CA mà bạn chọn là thành viên của chương trình chứng chỉ gốc của các hệ điều hành và trình duyệt web được sử dụng phổ biến nhất, tức là đó là một CA “đáng tin cậy” và chứng chỉ gốc của nó được các trình duyệt thông thường và các phần mềm khác tin cậy. Nếu chứng chỉ SSL của trang web của bạn được ký bởi một CA đáng tin cậy, thì danh tính của nó được phần mềm tin cậy CA đó coi là hợp lệ.

Hầu hết các CA thương mại mà bạn sẽ gặp sẽ là thành viên của các chương trình CA gốc phổ biến, nhưng bạn không cần phải kiểm tra trước khi mua chứng chỉ của mình. Ví dụ: Apple xuất bản danh sách chứng chỉ gốc SSL đáng tin cậy.

### Các loại chứng chỉ

Đảm bảo rằng bạn chọn một CA cung cấp loại chứng chỉ mà bạn yêu cầu. Nhiều CA cung cấp các biến thể của các loại chứng chỉ này dưới nhiều tên và cấu trúc giá khác nhau. Dưới đây là một mô tả ngắn về từng loại:

* **Single Domain**: Được sử dụng cho một tên miền duy nhất, ví dụ: `example.com`. Lưu ý rằng các tên miền phụ bổ sung, chẳng hạn như `www.example.com`, không được bao gồm
* **Wildcard**: Được sử dụng cho một miền và bất kỳ miền phụ nào của nó. Ví dụ: chứng chỉ ký tự đại diện cho `*.example.com` cũng có thể được sử dụng cho `www.example.com` và `store.example.com`
* **Multiple Domain**: Được gọi là chứng chỉ SAN hoặc UC, những chứng chỉ này có thể được sử dụng với nhiều miền và miền phụ được thêm vào trường Subject Alternative Name (Tên thay thế chủ đề). Ví dụ: một chứng chỉ đa miền có thể được sử dụng với `example.com`, `www.example.com` và `example.net`

Ngoài các loại chứng chỉ đã nói ở trên, còn có các mức xác nhận khác nhau mà CA cung cấp:

* **Domain Validation (DV)**: Chứng chỉ DV được cấp sau khi CA xác thực rằng người yêu cầu sở hữu hoặc kiểm soát miền được đề cập
* **Organization Validation (OV)**: Chứng chỉ OV chỉ có thể được cấp sau khi CA phát hành xác thực danh tính pháp lý của người yêu cầu
* **Extended Validation (EV)**: Chứng chỉ EV chỉ có thể được cấp sau khi CA phát hành xác thực danh tính pháp lý của người yêu cầu, theo một bộ nguyên tắc nghiêm ngặt. Mục đích của loại chứng chỉ này là cung cấp thêm sự đảm bảo về tính hợp pháp của danh tính tổ chức của bạn đối với khách truy cập trang web của bạn. Chứng chỉ EV có thể là một hoặc nhiều miền, nhưng không phải là ký tự đại diện

### Tính năng bổ sung

Nhiều CA cung cấp nhiều tính năng “bonus” khác nhau để tạo sự khác biệt với phần còn lại của các nhà cung cấp cấp chứng chỉ SSL. Một số tính năng này cuối cùng có thể giúp bạn tiết kiệm tiền, vì vậy, điều quan trọng là bạn phải cân nhắc nhu cầu của mình với các dịch vụ trước khi mua hàng. Ví dụ về các tính năng cần chú ý bao gồm phát hành lại chứng chỉ miễn phí hoặc chứng chỉ theo giá tên miền duy nhất hoạt động cho `www.` và tên miền cơ sở, ví dụ: `www.example.com` với SAN là `example.com`.

## Bước 2 – Tạo CSR và private key

Sau khi bạn đã sắp xếp các điều kiện tiên quyết và bạn biết loại chứng chỉ mình cần, đã đến lúc tạo yêu cầu ký chứng chỉ (certificate signing request - CSR) và khóa riêng (private key).

Nếu bạn dự định sử dụng Apache HTTP hoặc Nginx làm máy chủ web của mình, bạn có thể sử dụng lệnh `openssl` để tạo khóa riêng và CSR trên máy chủ web của mình. Trong hướng dẫn này, bạn có thể giữ tất cả các tệp có liên quan trong thư mục chính của mình, nhưng vui lòng lưu trữ chúng ở bất kỳ vị trí an toàn nào trên máy chủ của bạn:

Để tạo khóa riêng, được gọi là `example.com.key` và CSR, được gọi là `example.com.csr`, hãy chạy lệnh này (thay thế `example.com` bằng tên miền của bạn):
```command
openssl req -newkey rsa:2048 -nodes -keyout <^>example.com<^>.key -out <^>example.com<^>.csr
```

Tại thời điểm này, bạn sẽ được nhắc nhập một số dòng thông tin sẽ được đưa vào yêu cầu chứng chỉ của bạn. Phần quan trọng nhất là trường `Common Name`, phải khớp với tên mà bạn muốn sử dụng chứng chỉ của mình – ví dụ: `example.com`, `www.example.com` hoặc (đối với yêu cầu chứng chỉ ký tự đại diện) `*.example.com`. Nếu bạn dự định lấy chứng chỉ OV hoặc EV, hãy đảm bảo rằng tất cả các trường khác phản ánh chính xác thông tin chi tiết về tổ chức hoặc doanh nghiệp của bạn. Việc cung cấp “challenge password” là không cần thiết.

Ví dụ:
```
[secondary_label Output]
Country Name (2 letter code) [AU]:<^>US<^>
State or Province Name (full name) [Some-State]:<^>New York<^>
Locality Name (eg, city) []:<^>New York<^>
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<^>My Company<^>
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:<^>example.com<^>
Email Address []:<^>sammy@example.com<^>

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
```

Thao tác này sẽ tạo tệp `.key` và `.csr`. Tệp `.key` là khóa riêng tư của bạn và phải được giữ an toàn. Tệp `.csr` là tệp bạn sẽ gửi tới CA để yêu cầu chứng chỉ SSL của mình.
```command
ls example.com*
```

```
[secondary_label Output]
example.com.csr  example.com.key
```

Bạn sẽ cần sao chép và dán CSR của mình khi gửi yêu cầu chứng chỉ tới CA của bạn. Để in nội dung của CSR của bạn, hãy sử dụng `cat`:
```custom_prefix()
cat example.com.csr
```

Bây giờ bạn đã sẵn sàng để mua chứng chỉ từ CA.

## Bước 3 – Mua và lấy chứng chỉ

Có nhiều nhà cung cấp CA thương mại và bạn có thể so sánh và đối chiếu các tùy chọn thích hợp nhất cho thiết lập của riêng mình. Ví dụ: Namecheap hoạt động như một đại lý bán lại chứng chỉ SSL và trước đây đã thay đổi các nhà cung cấp CA ngược dòng để mang lại giá trị tốt nhất. Hiện tại, họ cung cấp chứng chỉ từ Comodo CA. Đây là một mẫu các dịch vụ của họ kể từ tháng 12 năm 2022:

![description image](https://media.cloudfly.vn/posts/namecheap_options.png)

Sau khi thực hiện lựa chọn, bạn sẽ cần tải lên CSR mà bạn đã tạo ở bước trước. Nhà cung cấp CA của bạn cũng có thể sẽ có bước “Approver”, bước này sẽ gửi email yêu cầu xác thực tới một địa chỉ trong bản ghi WHOIS của miền của bạn hoặc tới một địa chỉ loại *administrator* của miền mà bạn đang nhận chứng chỉ.

Sau khi phê duyệt chứng chỉ, chứng chỉ sẽ được gửi qua email cho quản trị viên có tên. Sao chép và lưu chúng vào máy chủ của bạn ở cùng vị trí mà bạn đã tạo khóa riêng và CSR. Đặt tên cho chứng chỉ bằng tên miền và phần mở rộng `.crt`, ví dụ: `example.com.crt` và đặt tên cho chứng chỉ trung gian là `intermediate.crt`.

Chứng chỉ hiện đã sẵn sàng để được cài đặt trên máy chủ web của bạn, nhưng trước tiên, bạn có thể phải thực hiện một số thay đổi đối với tường lửa của mình.

## Bước 4 – Cập nhật Tường lửa của bạn để cho phép HTTPS

Nếu bạn đã bật tường lửa `ufw` theo khuyến nghị trong hướng dẫn thiết lập Ubuntu 22.04 của chúng tôi, bạn sẽ cần điều chỉnh cài đặt để cho phép lưu lượng HTTPS. Cả Nginx và Apache đều đăng ký một vài cấu hình với `ufw` khi cài đặt.

Bạn có thể xem cài đặt hiện tại bằng cách nhập:
```command
sudo ufw status
```

Nếu bạn nhận được đầu ra chỉ chứa `Nginx HTTP` hoặc `Apache`, thì chỉ lưu lượng HTTP được phép đến máy chủ web:
```
[secondary_label Output]
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)
```

Ngoài ra, để cho phép lưu lượng HTTPS, hãy cho phép cấu hình `Nginx Full` hoặc `Apache Full` và xóa phụ cấp cấu hình HTTP dư thừa:
```command
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
```

Điều đó sẽ tạo ra một kết quả như thế này:
```command
sudo ufw status
```

```
[secondary_label Output]
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)
```

Trong bước cuối cùng, bạn sẽ cài đặt chứng chỉ.

## Bước 5 – Cài đặt chứng chỉ trên máy chủ của bạn

Sau khi nhận được chứng chỉ từ CA mà bạn chọn, bạn cần cài đặt nó trên máy chủ web của mình. Điều này liên quan đến việc thêm một vài dòng liên quan đến SSL vào cấu hình phần mềm máy chủ web của bạn.

Hướng dẫn này sẽ đề cập đến việc định cấu hình Nginx và Apache trên Ubuntu 22.04, nhưng hầu hết các phiên bản Linux hiện đại sẽ hoạt động tương tự. Hướng dẫn này cũng đưa ra các giả định sau:

* Khóa riêng, chứng chỉ SSL và, nếu có, các chứng chỉ trung gian của CA được đặt trong thư mục chính, tại `/home/sammy`
* Khóa riêng được gọi là `example.com.key`
* Chứng chỉ SSL được gọi là `example.com.crt`
* (Các) chứng chỉ trung gian CA do nhà cung cấp của bạn trả về nằm trong một tệp có tên là `intermediate.crt`

<$>[note]
**Lưu ý:** Trong môi trường sản xuất, các tệp này phải được lưu trữ ở đâu đó mà chỉ quy trình máy chủ web (thường là `root`) mới có thể truy cập và khóa riêng phải được giữ an toàn. Ví dụ: Let's Encrypt lưu trữ các chứng chỉ mà nó tạo ra trong `/etc/letsencrypt`. Các ví dụ sản xuất sẽ khác nhau do sự phức tạp của cấu hình nhiều máy chủ..
<$>

### Nginx

Đây là các bước để triển khai thủ công chứng chỉ SSL trên Nginx.

Nếu CA của bạn chỉ trả về một chứng chỉ trung gian, thì bạn phải tạo một tệp chứng chỉ “chained” duy nhất chứa chứng chỉ của bạn và các chứng chỉ trung gian của CA.

Giả sử tệp chứng chỉ của bạn có tên là `example.com.crt`, bạn có thể sử dụng lệnh `cat` để nối các tệp lại với nhau để tạo một tệp kết hợp có tên là `example.com.chained.crt`:
```command
cat <^>example.com<^>.crt intermediate.crt > <^>example.com<^>.chained.crt
```

Sử dụng `nano` hoặc trình soạn thảo văn bản yêu thích của bạn, hãy mở tệp khối máy chủ Nginx mặc định của bạn để chỉnh sửa:
```command
sudo nano /etc/nginx/sites-enabled/default
```

Tìm lệnh `listen` và sửa đổi nó để `listen 443 ssl`:
```nginx
[label /etc/nginx/sites-enabled/default]
…
server {
    listen 443 ssl;
…
```

Tiếp theo, tìm chỉ thị `server_name` trong cùng khối máy chủ đó và đảm bảo rằng giá trị của nó khớp với tên chung (common name) của chứng chỉ của bạn. Ngoài ra, hãy thêm các chỉ thị `ssl_certificate` và `ssl_certificate_key` để chỉ định đường dẫn của chứng chỉ và tệp khóa riêng của bạn:
```nginx
[label /etc/nginx/sites-enabled/default]
…
    server_name <^>example.com<^>;
    ssl_certificate <^>/home/sammy/example.com.chained.crt<^>;
    ssl_certificate_key <^>/home/sammy/example.com.key<^>;
…
```

Để chỉ cho phép các giao thức và mật mã SSL an toàn nhất, hãy thêm các dòng sau vào tệp:
```nginx
[label /etc/nginx/sites-enabled/default]
…
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
…
```

Cuối cùng, để chuyển hướng các yêu cầu HTTP sang HTTPS theo mặc định, bạn có thể thêm một khối máy chủ bổ sung ở đầu tệp:
```nginx
[label /etc/nginx/sites-enabled/default]
server {
    listen 80;
    server_name example.com;
    rewrite ^/(.*) https://example.com/$1 permanent;
}
…
```

Lưu và đóng tập tin. Nếu bạn đang sử dụng `nano`, hãy nhấn `Ctrl + X`, sau đó khi được nhắc, hãy nhấn `Y` rồi Enter.

Trước khi khởi động lại Nginx, bạn có thể xác thực cấu hình của mình bằng cách sử dụng `nginx -t`:
```command
sudo nginx -t
```

Nếu không có vấn đề gì, hãy khởi động lại Nginx để kích hoạt SSL qua HTTPS:
```command
sudo systemctl restart nginx
```

Kiểm tra nó bằng cách truy cập trang web của bạn qua HTTPS, ví dụ: `https://example.com`. Bạn cũng sẽ muốn thử kết nối qua HTTP, ví dụ: `http://example.com` để đảm bảo rằng chuyển hướng đang hoạt động bình thường.

### Apache

Đây là các bước để triển khai thủ công chứng chỉ SSL trên Apache.

Sử dụng `nano` hoặc trình soạn thảo văn bản yêu thích của bạn, hãy mở tệp máy chủ ảo Apache mặc định của bạn để chỉnh sửa:
```command
sudo nano /etc/apache2/sites-available/000-default.conf
```

Tìm mục `<VirtualHost *:80>` và sửa đổi nó để máy chủ web của bạn sẽ lắng nghe trên cổng `443`:
```nginx
[label /etc/apache2/sites-available/000-default.conf]
…
<VirtualHost *:443>
…
```

Tiếp theo, thêm chỉ thị `ServerName`, nếu nó chưa tồn tại:
```nginx
[label /etc/apache2/sites-available/000-default.conf]
…
ServerName <^>example.com<^>
…
```

Sau đó, thêm các dòng sau để chỉ định đường dẫn chứng chỉ và khóa của bạn:
```nginx
[label /etc/apache2/sites-available/000-default.conf]
…
SSLEngine on
SSLCertificateFile <^>/home/sammy/example.com.crt<^>
SSLCertificateKeyFile <^>/home/sammy/example.com.key<^>
SSLCACertificateFile <^>/home/sammy/intermediate.crt<^>
…
```

Tại thời điểm này, máy chủ của bạn được định cấu hình để chỉ nghe trên HTTPS (cổng 443), do đó, các yêu cầu tới HTTP (cổng 80) sẽ không được phục vụ. Để chuyển hướng các yêu cầu HTTP sang HTTPS, hãy thêm phần sau vào đầu tệp (thay thế tên ở cả hai vị trí):
```nginx
[label /etc/apache2/sites-available/000-default.conf]
<VirtualHost *:80>
   ServerName <^>example.com<^>
   Redirect permanent / https://<^>example.com<^>/
</VirtualHost>
…
```

Lưu và đóng tập tin. Nếu bạn đang sử dụng `nano`, hãy nhấn `Ctrl + X`, sau đó khi được nhắc, hãy nhấn `Y` rồi Enter.

Kích hoạt mô-đun SSL Apache bằng cách chạy lệnh này:
```command
sudo a2enmod ssl
```

Bây giờ, hãy khởi động lại Apache để tải cấu hình mới và bật TLS/SSL qua HTTPS.
```command
sudo systemctl restart apache2
```

Kiểm tra nó bằng cách truy cập trang web của bạn qua HTTPS, ví dụ: `https://example.com`. Bạn cũng sẽ muốn thử kết nối qua HTTP, ví dụ: `http://example.com` để đảm bảo rằng chuyển hướng đang hoạt động bình thường.

## Kết luận

Trong hướng dẫn này, bạn đã học cách xác định khi nào bạn có thể cần mua chứng chỉ SSL từ một CA thương mại cũng như cách so sánh và đối chiếu các tùy chọn có sẵn. Bạn cũng đã học cách định cấu hình Nginx hoặc Apache để hỗ trợ HTTPS và cách điều chỉnh cấu hình của chúng để sản xuất.
