Mục lục

Không có 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

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

Ngày đăng: 27 tháng 6 năm 2023

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.comstore.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.comexample.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):

  1. 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ụ:

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

  1. ls example.com*
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:

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

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:

  1. 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:

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:

  1. sudo ufw allow 'Nginx Full'
  2. sudo ufw delete allow 'Nginx HTTP'

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

  1. sudo ufw status
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

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:

  1. 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:

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

Tìm lệnh listen và sửa đổi nó để listen 443 ssl:

/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_certificatessl_certificate_key để chỉ định đường dẫn của chứng chỉ và tệp khóa riêng của bạn:

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

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

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

  1. 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:

  1. 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:

  1. 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:

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

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

/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í):

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

  1. 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.

  1. 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.

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
Chia sẻ

0 câu trả lời