Hướng dẫn cài đặt chứng chỉ SSL từ Certificate Authority trả phí

Hướng dẫn cài đặt chứng chỉ SSL từ Certificate Authority trả phí

DataOnline sẽ chỉ cho bạn cách để mua và cài đặt một chứng chỉ SSL từ một Certificate Authority (CA) thương mại (trả phí) được tin cậy.

Chứng chỉ SSL cho phép các máy chủ web mã hóa lưu lượng truy cập của mình, đồng thời cung cấp cơ chế để xác thực danh tính của máy chủ với khách truy cập. Các website sử dụng SSL được truy cập qua giao thức https://.

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

Tuy nhiên, chứng chỉ của Let’s Encrypt có một số hạn chế. Chúng hết hạn sau mỗi 3 tháng, thường yêu cầu bạn phải có một script tự động gia hạn hoạt động, và có thể gây khó khăn khi sử dụng trong môi trường không thể thiết lập tự động như vậy. Let’s Encrypt cũng không cung cấp chứng chỉ Extended Validation (EV) xác thực quyền sở hữu hợp pháp của website, cũng như chứng chỉ Wildcard cho phép khớp tự động với mọi subdomain của website (như shop.example.com) mà không cần đăng ký từng subdomain một cách thủ công.

Đối với hầu hết người dùng, những hạn chế này không quá đáng kể. Let’s Encrypt là lựa chọn phổ biến cho nhiều website cá nhân và thương mại. Tuy nhiên, nếu bạn có yêu cầu phần mềm doanh nghiệp cụ thể, hoặc một hoạt động thương mại quy mô lớn, bạn nên cân nhắc mua chứng chỉ từ một CA thương mại.

Hướng dẫn này sẽ trình bày cách lựa chọn và triển khai một chứng chỉ SSL từ một Certificate Authority đáng tin cậy. Sau khi bạn đã mua chứng chỉ SSL, hướng dẫn này sẽ hướng dẫn cách cài đặt chứng chỉ đó trên các máy chủ web Nginx và Apache.

Yêu cầu

Có một số yêu cầu cần có trước khi bạn có thể lấy được chứng chỉ SSL từ một CA thương mại:

Tên miền đã đăng ký. Hướng dẫn này sẽ sử dụng example.com làm ví dụ. Bạn có thể mua tên miền từ Namecheap, nhận miễn phí từ Freenom, hoặc sử dụng nhà đăng ký tên miền mà bạn ưa thích.

Quyền truy cập vào một địa chỉ email nào đó trong bản ghi WHOIS của tên miền hoặc một địa chỉ email kiểu “admin” của tên miền. Các CA thường xác thực quyền kiểm soát tên miền bằng cách gửi email xác nhận đến một trong những địa chỉ có trong bản ghi WHOIS hoặc đến địa chỉ admin chung của tên miền. Để nhận được chứng chỉ Extended Validation, bạn cũng sẽ cần cung cấp các giấy tờ chứng minh danh tính hợp pháp của chủ sở hữu website, cùng với những thứ khác.

Cài đặt các bản ghi DNS cho máy chủ của bạn. Nếu bạn đang sử dụng DataOnline, hãy tham khảo tài liệu DNS của chúng tôi để biết cách thêm các bản ghi.

Hướng dẫn này sẽ cung cấp các hướng dẫn cấu hình cho máy chủ Ubuntu 22.04 được cài đặt theo hướng dẫn Cài đặt ban đầu cần thiết Ubuntu, bao gồm việc tạo người dùng không phải root có quyền sudo và cấu hình Firewall. 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, theo hướng dẫn Cách Cài Đặt Nginx trên Ubuntu 22.04 mới nhất hoặc Cách Cài Đặt Máy Chủ Web Apache Trên Ubuntu. Hãy chắc chắn rằng bạn có một server block (hoặc Apache virtual host) cho tên miền của bạn.

Bước 1 – Lựa chọn Certificate Authority của bạn

Nếu bạn chưa biết nên chọn CA nào, có một số yếu tố cần xem xét.

Thành viên của chương trình Root Certificate

Điều quan trọng nhất là CA mà bạn chọn phải là thành viên của các chương trình chứng chỉ gốc (root certificate programs) của các hệ điều hành và trình duyệt web phổ biến, tức là nó là một CA “đáng tin cậy”, và chứng chỉ gốc của nó được các trình duyệt và phần mềm phổ biến tin cậy. Nếu chứng chỉ SSL của website bạn được ký bởi một CA đáng tin cậy, danh tính của nó sẽ được phần mềm tin cậy.

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

Các loại chứng chỉ

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

Single Domain: Dùng cho một tên miền duy nhất, ví dụ: example.com. Lưu ý rằng các subdomain bổ sung, như www.example.com, không được bao gồm.

Wildcard: Dùng cho một tên miền và bất kỳ subdomain nào của nó. Ví dụ, một chứng chỉ wildcard cho *.example.com cũng có thể được dùng cho www.example.com và store.example.com.

Multiple Domain: Được biết đến là chứng chỉ SAN hoặc UC, có thể được sử dụng cho nhiều tên miền và subdomain được thêm vào trường Subject Alternative Name. Ví dụ, một chứng chỉ đa miền có thể dùng cho example.com, www.example.com, và example.net.

Ngoài các loại chứng chỉ nêu trên, các CA còn cung cấp các mức độ xác thực khác nhau:

Domain Validation (DV): Chứng chỉ DV được cấp sau khi CA xác nhận rằng người yêu cầu sở hữu hoặc kiểm soát tên miền được đề cập.

Organization Validation (OV): Chứng chỉ OV chỉ được cấp sau khi CA xác thực danh tính hợp pháp của người yêu cầu.

Extended Validation (EV): Chứng chỉ EV chỉ được cấp sau khi CA xác minh danh tính hợp pháp, cùng với một tập hợp các hướng dẫn nghiêm ngặt khác của người yêu cầu. Mục đích của loại chứng chỉ này là cung cấp sự đảm bảo bổ sung về tính hợp pháp của danh tính tổ chức đối với khách truy cập website. Chứng chỉ EV có thể là chứng chỉ cho một hoặc nhiều tên miền, nhưng không hỗ trợ wildcard.

Các tính năng bổ sung

Nhiều CA cung cấp một loạt các tính năng “thưởng” để phân biệt mình với các nhà cung cấp chứng chỉ SSL khác. Một số tính năng này có thể giúp bạn tiết kiệm chi phí, vì vậy việc cân nhắc giữa nhu cầu của bạn và các dịch vụ cung cấp là rất quan trọng.

Ví dụ về các tính năng cần chú ý bao gồm việc cấp lại chứng chỉ miễn phí hoặc một chứng chỉ cho một miền đơn có thể hoạt động cho cả www. và tên miền cơ sở, ví dụ: www.example.com với một SAN là example.com.

Bước 2 – Tạo CSR và Private Key

Sau khi đã chuẩn bị đầy đủ các yêu cầu ban đầu và biết loại chứng chỉ bạn cần, đã đến lúc tạo Certificate Signing Request (CSR) và Private Key.

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

Để tạo một Private Key, được gọi là example.com.key, và một CSR, được gọi là example.com.csr, hãy chạy lệnh sau (thay thế example.com bằng tên miền của bạn):

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 yêu cầu nhập một số thông tin sẽ được bao gồm trong yêu cầu chứng chỉ của bạn. Phần quan trọng nhất là trường Common Name, trường này phải khớp với tên mà bạn muốn sử dụng cho chứng chỉ – ví dụ: example.com, www.example.com, hoặc (đối với yêu cầu chứng chỉ wildcard) *.example.com. Nếu bạn đị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 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ụ:

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 []:

Lệnh trên sẽ tạo ra file .key.csr. File .key là Private Key của bạn và cần được giữ an toàn. File .csr là file bạn sẽ gửi cho CA để yêu cầu chứng chỉ SSL của bạn.

Kiểm tra các file đã tạo với lệnh:

ls example.com*
Output
example.com.csr  example.com.key

Bạn sẽ cần sao chép và dán nội dung của CSR khi gửi yêu cầu chứng chỉ cho CA của bạn. Để in nội dung của CSR, sử dụng lệnh:

cat example.com.csr

Giờ bạn đã sẵn sàng để mua chứng chỉ từ một CA.

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

Có rất nhiều nhà cung cấp CA thương mại, bạn có thể so sánh và lựa chọn tùy theo nhu cầu của mình. Ví dụ, Namecheap hoạt động như một nhà bán lẻ chứng chỉ SSL và đã từng thay đổi nhà cung cấp CA để cung cấp giá trị tốt nhất. Hiện tại, họ cung cấp chứng chỉ từ Comodo CA. Dưới đây là một ví dụ về các lựa chọn của họ tính đến tháng 12 năm 2022.

Thiet ke chua co ten 53

Sau khi 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ể có bước “Approver”, trong đó sẽ gửi email xác nhận tới một địa chỉ có trong bản ghi WHOIS của tên miền hoặc tới một địa chỉ email kiểu admin của tên miền bạn đang lấy chứng chỉ.

Sau khi phê duyệt chứng chỉ, chứng chỉ sẽ được gửi qua email đến quản trị viên đã chỉ định. Hãy sao chép và lưu chúng vào máy chủ của bạn cùng vị trí với Private Key và CSR đã tạo. Đặt tên chứng chỉ với tên miền và đuôi .crt, ví dụ: example.com.crt, và đặt tên chứng chỉ trung gian là intermediate.crt.

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

Bước 4 – Cập nhật Firewall cho phép HTTPS

Nếu bạn đã kích hoạt firewall ufw như được khuyến nghị trong hướng dẫn cài đặt Ubuntu 22.04, 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 số profile với ufw khi cài đặt.

Bạn có thể xem cài đặt hiện tại bằng cách gõ:

sudo ufw status

Nếu bạn nhận được kết quả chỉ chứa Nginx HTTP hoặc Apache, điều đó có nghĩa là chỉ lưu lượng HTTP được cho phép truy cập máy chủ:

Output
Status: active

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

Để cho phép lưu lượng HTTPS, bạn cần cho phép profile Nginx Full hoặc Apache Full và xoá bỏ profile HTTP dư thừa:

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
Output
Status: active

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

Ở bước cuối, bạn sẽ tiến hành 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 có chứng chỉ từ CA bạn lựa chọn, bạn cần cài đặt nó trên máy chủ web. Việc này bao gồm thêm một vài dòng cấu hình liên quan đến SSL vào cấu hình phần mềm máy chủ web. Hướng dẫn này sẽ hướng dẫn cấu hình cho Nginx và Apache trên Ubuntu 22.04, nhưng hầu hết các bản phân phối Linux hiện đại sẽ hoạt động tương tự. Hướng dẫn này giả định:

● Private Key, chứng chỉ SSL, và nếu có, chứng chỉ trung gian của CA được lưu trong thư mục home, tại /home/sammy

● Private Key được đặt tên là example.com.key

● Chứng chỉ SSL được đặt tên là example.com.crt

● Chứng chỉ trung gian của CA được trả về bởi nhà cung cấp nằm trong file intermediate.crt

Lưu ý: Trong môi trường sản xuất, các file này nên được lưu trữ ở nơi mà chỉ tiến trình máy chủ web (thường là root) có quyền truy cập, và Private Key phải được giữ an toàn. Ví dụ, Let’s Encrypt lưu trữ các chứng chỉ tạo ra trong /etc/letsencrypt. Các ví dụ trong môi trường sản xuất sẽ khác nhau tùy thuộc vào cấu hình đa máy chủ phức tạp.

Nginx

Các bước dưới đây hướng dẫn bạn triển khai thủ công chứng chỉ SSL trên Nginx.

Nếu CA của bạn chỉ trả về chứng chỉ trung gian, bạn cần tạo một file chứng chỉ “chained” duy nhất bao gồm cả chứng chỉ của bạn và các chứng chỉ trung gian của CA.

Giả sử file chứng chỉ của bạn là example.com.crt, bạn có thể sử dụng lệnh cat để nối các file lại với nhau tạo thành file example.com.chained.crt:

cat example.com.crt intermediate.crt > example.com.chained.crt

Mở file server block mặc định của Nginx để chỉnh sửa bằng nano hoặc trình soạn thảo ưa thích:

sudo nano /etc/nginx/sites-enabled/default

Tìm directive listen và sửa lại để lắng nghe trên cổng 443 với ssl:

/etc/nginx/sites-enabled/default
…
server {
    listen 443 ssl;
…

Tiếp theo, tìm directive server_name trong cùng một khối server, và đảm bảo rằng giá trị của nó khớp với Common Name trong chứng chỉ của bạn. Ngoài ra, thêm các directive ssl_certificatessl_certificate_key để chỉ định đường dẫn tới file chứng chỉ và Private Key:

/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à cipher SSL an toàn nhất, thêm các dòng sau vào file:

/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 về HTTPS theo mặc định, bạn có thể thêm một khối server phụ ở đầu file:

/etc/nginx/sites-enabled/default
server {
    listen 80;
    server_name example.com;
    rewrite ^/(.*) https://example.com/$1 permanent;
}
…

Lưu và đóng file. Nếu sử dụng nano, nhấn Ctrl+X, sau đó nhấn Y khi được hỏi và nhấn Enter.

Trước khi khởi động lại Nginx, bạn có thể kiểm tra cấu hình bằng lệnh:

sudo nginx -t

Nếu không có lỗi, khởi động lại Nginx để kích hoạt SSL qua HTTPS:

sudo systemctl restart nginx

Kiểm tra lại bằng cách truy cập website qua HTTPS, ví dụ: https://example.com. Bạn cũng nên thử truy cập qua HTTP, ví dụ: http://example.com để đảm bảo chuyển hướng hoạt động chính xác.

Apache

Các bước dưới đây hướng dẫn bạn triển khai thủ công chứng chỉ SSL trên Apache.

Mở file Apache virtual host mặc định để chỉnh sửa bằng nano hoặc trình soạn thảo yêu thích:

sudo nano /etc/apache2/sites-available/000-default.conf

Tìm phần <VirtualHost *:80> và sửa lại để máy chủ web lắng nghe trên cổng 443:

/etc/apache2/sites-available/000-default.conf
…
<VirtualHost *:443>
…

Tiếp theo, thêm directive ServerName nếu nó chưa tồn tại:

/etc/apache2/sites-available/000-default.conf
…
ServerName example.com
…

Sau đó, thêm các dòng sau để chỉ định đường dẫn tới chứng chỉ và Private Key:

/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 cấu hình để chỉ lắng nghe HTTPS (cổng 443), vì vậy các yêu cầu đến HTTP (cổng 80) sẽ không được phục vụ. Để chuyển hướng yêu cầu HTTP về HTTPS, thêm đoạn sau vào đầu file (thay thế tên miền cho phù hợp):

/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
   ServerName example.com
   Redirect permanent / https://example.com/
</VirtualHost>
…

Lưu và đóng file. Nếu sử dụng nano, nhấn Ctrl+X, sau đó nhấn YEnter.

Kích hoạt module SSL của Apache bằng lệnh:

sudo a2enmod ssl

Sau đó, khởi động lại Apache để nạp cấu hình mới và kích hoạt TLS/SSL qua HTTPS:

sudo systemctl restart apache2

Kiểm tra lại bằng cách truy cập website qua HTTPS, ví dụ: https://example.com. Bạn cũng nên thử truy cập qua HTTP, ví dụ: http://example.com để đảm bảo chuyển hướng hoạt động đúng.

Kết luận

Qua hướng dẫn này, bạn đã hiểu rõ khi nào nên mua chứng chỉ SSL từ một CA thương mại và cách đánh giá các tùy chọn phù hợp với nhu cầu bảo mật của mình. Ngoài ra, bạn cũng đã nắm được quy trình cấu hình HTTPS trên máy chủ web Nginx hoặc Apache, cũng như cách tối ưu hóa cài đặt để đảm bảo hiệu suất và bảo mật tốt nhất trong môi trường sản xuất. Với những kiến thức này, bạn có thể triển khai HTTPS một cách chuyên nghiệp, nâng cao độ tin cậy và bảo vệ dữ liệu người dùng hiệu quả.

Tiếp theo, bạn có thể tìm hiểu về các trường hợp sử dụng SSL khác, ví dụ như khi làm việc với load balancers.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *