Quá trình tạo chứng chỉ SSL / TLS là một nhiệm vụ phổ biến đối với nhiều quản trị viên hệ thống Linux. May mắn thay, ngay cả khi bạn không phải là quản trị viên, bạn cũng có thể dễ dàng thực hiện điều này bằng cách sử dụng OpenSSL, một công cụ mã nguồn mở được cài đặt mặc định trên nhiều bản phân phối Linux. Sau đây, chúng tôi giải thích OpenSSL là gì, cách cài đặt nó và quan trọng nhất là cách sử dụng nó để tạo chứng chỉ SSL và TLS trên hệ thống của bạn.
OpenSSL là gì?
OpenSSL là một thư viện được phát triển bởi Dự án OpenSSL để cung cấp triển khai SSL và TLS nguồn mở để mã hóa lưu lượng mạng. Nó có sẵn cho nhiều loại phân phối dựa trên Unix và có thể được sử dụng để tạo chứng chỉ, khóa riêng RSA và thực hiện các tác vụ chung liên quan đến mật mã.
Giới hạn của Chứng chỉ SSL tự ký
Khi bạn sử dụng OpenSSL để tạo chứng chỉ SSL, chứng chỉ đó được coi là “tự ký”. Có nghĩa là chứng chỉ SSL được ký bằng khóa riêng của nó chứ không phải từ Tổ chức phát hành chứng chỉ (CA).
Do đó, chứng chỉ SSL không thể “đáng tin cậy” và không nên được sử dụng cho bất kỳ trang web công khai nào. Nếu được sử dụng, người dùng có thể sẽ thấy cảnh báo từ trình duyệt của họ về chứng chỉ.
Chứng chỉ tự ký rất hữu ích cho việc phát triển cục bộ hoặc bất kỳ ứng dụng nào chạy trong nền không có Internet.
Ngoài ra, bạn có thể sử dụng LetsEncrypt hoặc lấy chứng chỉ được xác minh bởi cơ quan đáng tin cậy, chẳng hạn như Comodo CA.
Cài đặt
Hầu hết các bản phân phối Linux đều đã có phiên bản OpenSSL được tích hợp sẵn theo mặc định. Nếu không, bạn có thể dễ dàng cài đặt nó.
Bạn có thể cài đặt nó trên Ubuntu và Debian bằng cách sử dụng apt
lệnh:
sudo apt install openssl
Trên CentOS (hoặc thay thế của nó), bạn có thể cài đặt nó bằng cách sử dụng yum
lệnh:
sudo yum install openssl
Bạn cũng có thể dễ dàng tải xuống từ trang web của nó dưới dạng tệp “.tar.gz”.
Cách sử dụng Cơ bản
Bây giờ bạn đã cài đặt OpenSSL, chúng ta có thể xem một số chức năng cơ bản mà chương trình cung cấp.
Bạn có thể bắt đầu bằng cách xem phiên bản và thông tin liên quan khác về cài đặt OpenSSL của mình:
openssl version -a
Bạn có thể xem hướng dẫn sử dụng được cung cấp:
openssl help
Tạo chứng chỉ bằng tệp cấu hình
Có thể tạo chứng chỉ bằng OpenSSL theo nhiều cách. Một trong số đó là sử dụng tệp cấu hình sẽ chỉ định thông tin chi tiết về tổ chức.
Để bắt đầu, bạn có thể tạo một tệp cấu hình có tên “config.conf” và chỉnh sửa nó bằng Nano:
sudo nano example.conf
Đây là một ví dụ về nội dung của tệp cấu hình:
[req] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext x509_extensions= v3_ca distinguished_name = dn [dn] C = US ST = California L = Los Angeles O = Org OU = Sales emailAddress = [email protected] CN = www.org.test.com [ v3_ca ] subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer:always basicConstraints = CA:true [req_ext] subjectAltName = @alt_names [alt_names] DNS.1 = test.example.com
Bạn chỉ có thể sao chép và dán phần này vào tệp và thực hiện các thay đổi cần thiết để phản ánh thông tin của tổ chức bạn.
Tiếp theo, bạn phải tạo khóa cá nhân RSA, khóa này sau đó sẽ được sử dụng để tạo chứng chỉ gốc -:
openssl genrsa -out example.key 2048
-out
cờ được sử dụng trong trường hợp này để chỉ định tên của khóa sẽ được tạo. Kích thước khóa 2048 bit cũng được chỉ định, là kích thước mặc định cho khóa RSA.
Bạn cũng sẽ phải tạo Yêu cầu ký chứng chỉ (CSR):
openssl req -new -key example.key -out example.csr -config example.conf
Trong trường hợp này, -key
cờ được sử dụng để chỉ định khóa RSA, -out
cờ chỉ định tên của tệp CSR và -config
cờ được sử dụng để chỉ định tên của tệp cấu hình.
Sau đó, bạn có thể tạo chứng chỉ gốc, được sử dụng để tạo chứng chỉ cuối cùng của chúng tôi:
openssl req -x509 -sha256 -nodes -new -key example.key -out example.crt -config example.conf
Trong quá trình tạo chứng chỉ gốc này, -sha256
cờ được sử dụng để chỉ định SHA256 làm thông báo thông báo.
Bây giờ, đối với bước cuối cùng, cuối cùng chúng ta có thể nhập như sau để tạo chứng chỉ của mình:
openssl x509 -sha256 -CAcreateserial -req -days 30 -in example.csr -extfile example.conf -CA example.crt -CAkey example.key -out final.crt
-CA
cờ chỉ định chứng chỉ gốc, -CAkey
cờ chỉ định khóa cá nhân và -extfile
chỉ định tên của tệp cấu hình. Tệp “final.crt” sẽ là chứng chỉ SSL bạn muốn.
Tạo chứng chỉ mà không có tệp cấu hình
Ngoài ra, bạn cũng có thể tạo chứng chỉ bằng OpenSSL mà không cần tệp cấu hình.
Bạn có thể bắt đầu bằng cách tạo khóa cá nhân RSA:
openssl genrsa -out example.key 2048
Tiếp theo, bạn sẽ phải tạo CSR:
openssl req -new -key example.key -out example.csr
Khi tạo CSR, bạn sẽ được nhắc trả lời các câu hỏi về tổ chức của mình.
Cuối cùng, chúng ta có thể tự tạo chứng chỉ:
openssl x509 -req -days 30 -in example.csr -signkey example.key -out example.crt
Xác minh Khóa và Chứng chỉ
Khóa và chứng chỉ dễ dàng được kiểm tra và xác minh bằng OpenSSL, với -check
cờ:
openssl rsa -check -in example.key
Bạn có thể kiểm tra các yêu cầu ký chứng chỉ:
openssl req -text -noout -in example.csr
và các chứng chỉ nữa:
openssl x509 -text -noout -in example.crt
Câu hỏi thường gặp
1. Tôi có còn phải lo lắng về Heartbleed không?
Heartbleed (CVE-2014-0160) là một lỗ hổng cũ được tìm thấy trong OpenSSL vào năm 2014. Máy chủ TLS và máy khách chạy OpenSSL đều bị ảnh hưởng. Một bản vá nhanh chóng được phát hành vài ngày sau khi được phát hiện và lỗ hổng này không phải là điều đáng lo ngại vào năm 2022, miễn là bạn đang chạy phiên bản OpenSSL hiện đại và cập nhật.
Nếu bạn đang sử dụng OpenSSL trên các hệ thống dựa trên Debian và Ubuntu, bạn luôn có thể cập nhật nó bằng cách chạy các lệnh sau:
sudo apt update && sudo apt upgrade openssl
2. Chứng chỉ SSL tồn tại trong bao lâu trước khi chúng hết hạn?
Điều này phụ thuộc vào giá trị bạn chọn khi tạo chứng chỉ. Điều này có thể được chỉ định bằng cách sử dụng -days
gắn cờ khi tạo chứng chỉ.