Bộ giải mã CSR

Trước khi Tổ chức cấp chứng chỉ ký vào chứng chỉ TLS, bạn cần gửi cho họ một Yêu cầu cấp chứng chỉ (Certificate Signing Request: CSR), một tập dữ liệu dạng base64 chứa thông tin chủ thể bạn muốn ghi trên chứng chỉ và khóa công khai của bạn, cùng một chữ ký chứng minh bạn đang nắm giữ khóa riêng tương ứng. Bộ giải mã này nhận CSR được mã hóa bằng PEM và hiển thị các trường chủ thể cùng thông số khóa công khai, để bạn có thể kiểm tra tên chung, tổ chức và kích thước khóa trước khi gửi yêu cầu cho CA.

Cách giải mã CSR

  1. 1

    Dán CSR

    Bao gồm các điểm đánh dấu `-----BEGIN CERTIFICATE REQUEST-----` và `-----END CERTIFICATE REQUEST-----`. Khoảng trắng được chấp nhận.

  2. 2

    Chạy bộ giải mã

    Yêu cầu được phân tích và các trường chủ thể cùng khóa công khai được đọc ra.

  3. 3

    Xem lại kết quả

    Kiểm tra các trường chủ thể như tên chung và tổ chức, cùng thuật toán và kích thước khóa.

  4. 4

    Hành động theo kết quả

    Nếu chủ thể hoặc khóa có vẻ sai, hãy tạo lại CSR trước khi gửi cho CA.

Bộ giải mã hiển thị gì

CSR là một cấu trúc ASN.1 (PKCS #10). Bộ giải mã đọc hai thứ từ nó:

  • Chủ thể: các trường Tên phân biệt (Distinguished Name) đã được yêu cầu, thường là quốc gia (C), tổ chức (O), đơn vị tổ chức (OU), địa phương (L), tiểu bang (ST) và tên chung (CN).
  • Khóa công khai: thuật toán (RSA, EC, DSA) và kích thước khóa tính bằng bit.

Chữ ký bên trong CSR là thứ chứng minh với CA rằng người gửi đang nắm giữ khóa riêng tương ứng. Bộ giải mã này không hiển thị chữ ký; CA sẽ xác minh nó khi xử lý yêu cầu.

Ví dụ về kết quả

Với một yêu cầu chứng chỉ tên miền thông thường, kết quả có dạng như sau:

Subject: commonName=www.example.com, organizationName=Example Inc., countryName=US
Key bits: 2048
Key type: RSA

Tên chính xác của các thuộc tính trong chủ thể phụ thuộc vào cách yêu cầu được tạo ra.

Các trường để kiểm tra lại

  • Tên thông dụng (CN): phải là tên máy chủ chính. Các trình duyệt hiện đại không xem xét CN mà chỉ kiểm tra các tên miền SAN; tuy nhiên, nhiều tổ chức cấp chứng chỉ (CA) vẫn yêu cầu phải có CN hợp lệ.
  • Các tên thay thế cho chủ thể (SAN): liệt kê tất cả các tên máy chủ và ký tự đại diện mà chứng chỉ sẽ bảo vệ. Trình duyệt đối chiếu theo SAN, chứ không phải CN.
  • Quốc gia (C): Mã ISO gồm hai chữ cái (ví dụ: US, GB, DE); không phải tên đầy đủ. Các cơ quan chứng nhận (CA) sẽ từ chối các mã không đúng.
  • Kích thước khóa: RSA 2048 là kích thước tối thiểu; các giá trị 3072 hoặc 4096 được sử dụng để tăng độ bảo mật. ECDSA P-256 là một giải pháp thay thế hiện đại tốt và tạo ra chứng chỉ có kích thước nhỏ hơn.
  • Thuật toán chữ ký: SHA-256 hoặc cao hơn; SHA-1 đã bị loại bỏ từ lâu và sẽ không được chấp nhận.

Về các Tên thay thế cho chủ thể (SAN)

Bộ giải mã hiển thị chủ thể của yêu cầu nhưng không hiển thị phần mở rộng SAN. Trình duyệt đối chiếu chứng chỉ theo SAN chứ không theo CN; nếu chứng chỉ cần bao phủ thêm tên máy chủ, hãy đưa chúng vào khi tạo yêu cầu, ví dụ:

openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr -addext "subjectAltName=DNS:example.com,DNS:www.example.com"

Khi bộ giải mã không phân tích được CSR

Các nguyên nhân phổ biến nhất là khối PEM bị cắt ngắn hoặc bị hỏng:

  • Văn bản bị cắt: hãy dán lại toàn bộ khối, bao gồm cả hai điểm đánh dấu.
  • Bị chèn xuống dòng: dán khối đúng như lúc nó được tạo ra.
  • Sai nội dung: khóa công khai, chứng chỉ hoặc khóa riêng dán nhầm sẽ không được phân tích như một CSR.

Tạo khóa tương ứng

Một CSR luôn được tạo ra cùng với một khóa riêng tư. Lệnh tiêu biểu:

openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr

Hoặc đối với ECDSA:

openssl req -new -newkey ec:<(openssl ecparam -name prime256v1) -nodes -keyout example.key -out example.csr

Hãy bảo vệ khóa riêng; nếu khóa này bị rò rỉ, chứng chỉ phải được hủy bỏ.

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

Một CSR chỉ chứa thông tin công khai (khóa công khai, chủ thể và các SAN) cùng với một chữ ký, nên có thể chia sẻ an toàn với một CA hoặc dán vào bộ giải mã. Thứ phải giữ bí mật là khóa riêng tương ứng.

Không. Bộ giải mã này nhận dạng văn bản PEM với các điểm đánh dấu BEGIN/END CERTIFICATE REQUEST. Để dùng một yêu cầu DER nhị phân, trước tiên hãy chuyển nó sang PEM, ví dụ với openssl req -in request.der -inform DER -out request.pem.

Không. Hầu hết các cơ quan cấp chứng chỉ công cộng (như Let’s Encrypt, DigiCert, Sectigo) chỉ yêu cầu thông tin CN và SAN; họ không tính đến các trường O, OU, L, ST, C trong các chứng chỉ đã được xác thực theo miền. Các chứng chỉ được xác thực theo tổ chức hoặc có xác thực mở rộng sẽ kiểm tra riêng từng trường này.

Thường là do văn bản dán vào bị cắt ngắn hoặc bị chèn dấu xuống dòng, hoặc do dán nhầm khóa hay chứng chỉ thay vì CSR. Hãy dán lại toàn bộ khối vào giữa hai điểm đánh dấu.

Công cụ liên quan