Trình tạo chứng chỉ SSL

Thông tin định danh

Chứng chỉ tự ký mặc định không được trình duyệt tin cậy: chỉ dùng cho phát triển cục bộ, kiểm thử hoặc mạng riêng.

Tạo một chứng chỉ tự ký cho phát triển cục bộ hoặc thử nghiệm nội bộ, ngay trong trình duyệt của bạn. Bạn chọn kích thước khóa RSA (2048, 3072 hoặc 4096 bit), Common Name, các Subject Alternative Names, khoảng hiệu lực và thông tin cơ bản của tổ chức. Chứng chỉ và khóa riêng của nó được tạo trong trình duyệt và không bao giờ gửi tới máy chủ của chúng tôi, và bạn tải cả hai về dưới dạng tệp PEM sẵn sàng cho Nginx hoặc Apache.

Cách tạo chứng chỉ hoạt động

  1. 1

    Chọn kích thước khóa RSA

    2048 bit đủ cho hầu hết thử nghiệm; 3072 hoặc 4096 cho khóa lớn hơn nhưng đổi lại tốc độ.

  2. 2

    Nhập chủ thể và SAN

    Common Name cùng mọi tên host hoặc IP mà chứng chỉ cần bao phủ (trình duyệt hiện đại bỏ qua CN và dùng SAN).

  3. 3

    Tạo trong trình duyệt

    Một chứng chỉ tự ký được tạo và ký bằng khóa riêng tương ứng, tất cả cục bộ trong trình duyệt của bạn.

  4. 4

    Tải kết quả về

    Một chứng chỉ mã hóa PEM (`cert.pem`) và khóa riêng dạng PEM (`key.pem`), sẵn sàng cài đặt.

Mọi thứ diễn ra trong trình duyệt của bạn

Trình tạo này chạy hoàn toàn trong trình duyệt của bạn. Cặp khóa RSA được tạo cục bộ bằng một thư viện mật mã JavaScript, chứng chỉ được ký ngay trên thiết bị của bạn, và cả khóa riêng lẫn chứng chỉ đều không bao giờ được tải lên máy chủ của chúng tôi. Dù vậy, hãy coi khóa riêng như một bí mật: bất kỳ ai có nó đều có thể mạo danh chứng chỉ.

Tự ký nghĩa là gì

Bạn vừa là đơn vị cấp vừa là chủ thể: chứng chỉ được ký bằng chính khóa riêng của nó, nên không có tổ chức chứng thực (CA) công khai nào bảo chứng. Vì thế trình duyệt hiển thị cảnh báo. Nó phù hợp cho thử nghiệm, phát triển cục bộ (localhost, dev.local) và máy chủ nội bộ nơi bạn có thể phân phối chứng chỉ tới các máy khách cần tin cậy nó.

Nếu bạn cần một chứng chỉ mà internet công khai tin cậy, công cụ này không phải bước phù hợp: bạn cần một chứng chỉ do CA ký (ví dụ từ Let’s Encrypt hoặc một CA trả phí), điều này đòi hỏi một yêu cầu ký chứng chỉ (CSR) và xác thực tên miền mà công cụ trong trình duyệt này không thực hiện.

Chứng chỉ chứa những gì

Trường Ghi chú
Chủ thể (CN, O, C) Common Name, Tổ chức, Quốc gia
Subject Alternative Names Mọi miền hoặc IP được bao phủ (quan trọng!)
Khóa công khai RSA, dẫn xuất từ khóa riêng đã tạo
Đơn vị cấp Trùng với chủ thể, vì là tự ký
Hiệu lực Not Before / Not After (số ngày hiệu lực của bạn)
Key Usage digitalSignature, keyEncipherment
Extended Key Usage serverAuth, clientAuth
Basic Constraints CA:FALSE (chứng chỉ lá, không phải CA)

Tệp đầu ra

  • key.pem, khóa riêng (hãy bảo vệ, chế độ 0600)
  • cert.pem, chứng chỉ tự ký (công khai, có thể phân phối)

Cho Nginx

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate     /etc/ssl/certs/cert.pem;
    ssl_certificate_key /etc/ssl/private/key.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;
}

Cho Apache 2.4+

<VirtualHost *:443>
    ServerName example.com
    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/cert.pem
    SSLCertificateKeyFile /etc/ssl/private/key.pem
</VirtualHost>

Tin cậy chứng chỉ trên máy của chính bạn

Để tắt cảnh báo trình duyệt trên một máy do bạn kiểm soát, hãy nhập cert.pem vào kho tin cậy của hệ thống hoặc trình duyệt đó. Chỉ làm điều này với chứng chỉ do chính bạn tạo, trên thiết bị thuộc về bạn. Các công cụ như mkcert tự động hóa một CA cục bộ cho nhiều dịch vụ; trình tạo này tạo một chứng chỉ tự ký mỗi lần.

Chứng chỉ tự ký không phù hợp cho việc gì

  • Website công khai. Người dùng thấy cảnh báo, và nhiều người rời đi.
  • Tích hợp API bên thứ ba. Hầu hết máy khách từ chối đơn vị cấp lạ.
  • Môi trường sản xuất. Tuyệt đối không. Dùng Let’s Encrypt (miễn phí) hoặc một CA trả phí cho mọi thứ trên internet mở.

Câu hỏi thường gặp

Không. Cặp khóa và chứng chỉ được tạo trong trình duyệt của bạn và ở lại thiết bị của bạn; không có gì được tải lên. Dù vậy, hãy giữ kín tệp key.pem đã tải về, vì bất kỳ ai có nó đều có thể mạo danh chứng chỉ.

Không, nếu bên thứ ba sẽ kết nối. Trình duyệt hiển thị cảnh báo rõ rệt. Hãy dùng chứng chỉ do CA ký, miễn phí (Let’s Encrypt, ZeroSSL) hoặc trả phí. Chứng chỉ tự ký ổn cho giao tiếp máy-với-máy trong mạng nội bộ nơi bạn kiểm soát cả hai đầu.

Trước đây CN chứa miền chính. Trình duyệt hiện đại bỏ qua CN khi xác thực host và chỉ dùng SAN. Luôn đặt mọi tên host vào SAN; chỉ đặt CN là miền chính để nhận diện dễ đọc.

Có, đặt *.example.com vào SAN. Nó bao phủ một cấp tên miền phụ. Với nhiều cấp, hãy thêm nhiều ký tự đại diện (*.example.com*.dev.example.com).

Công cụ liên quan