Toàn tập về định dạng chứng chỉ SSL và các công cụ chuyển đổi

Toàn tập về định dạng chứng chỉ SSL và các công cụ chuyển đổi
Sau khi đã tìm hiểu chứng chỉ SSL là gì và cách thức hoạt động của nó như thế nào? Câu hỏi được nhiều khách hàng đặt ra tiếp theo sẽ là cài đặt chứng chỉ như thế nào? Với rất nhiều định dạng chứng chỉ SSL khác nhau được sử dụng cho từng yêu cầu máy chủ cụ thể. Tất cả những gì bạn cần biết là một số loại tệp mở rộng và định dạng mã hóa. Ngoài ra, để cài đặt thành công chứng chỉ SSL trên máy chủ của bạn, bạn sẽ cần phải biết chính xác loại máy chủ hoặc phần mềm webserver sử dụng là gì? Một số máy chủ có thể chấp nhận các định dạng chứng chỉ khác nhau và chúng có thể được hoán đổi cho nhau, nhưng cũng có một số yêu cầu loại định dạng mã hóa cụ thể. Trong bài viết này chúng tôi sẽ phân tích chi tiết từng loại định dạng chứng chỉ và các công cụ chuyển đổi chúng.

Hiện nay, tất cả các chứng chỉ SSL đều là chứng chỉ X.509. X.509 định nghĩa các nội dung về một chứng thực, bao gồm số phiên bản, số serial, ID chữ ký, tên công bố, thời điểm có hiệu lực, định nghĩa chủ đề, phần mở rộng và chữ ký trên các trường trên. Đây là định dạng chứng chỉ chuẩn để xác định rằng máy chủ là chủ sở hữu hợp pháp của khóa công khai (public key) được liên kết. Và chúng ta sẽ tìm hiểu về một số đuôi mở rộng như: DER, PEM, PKCS#7 và PKCS#12.

1. Định dạng DER

DER là viết tắt của Distinguished Encoding Rules, là một trong những quy tắc mã hóa ASN.1 được định nghĩa trong ITU-T X.690, 2002, đặc điểm kỹ thuật. Quy tắc mã hóa ASN.1 có thể được sử dụng để mã hóa bất kỳ đối tượng dữ liệu nào thành tệp nhị phân.

Quy tắc mã hóa cơ bản của DER là giá trị dữ liệu của tất cả các loại dữ liệu phải được mã hóa thành bốn thành phần theo thứ tự sau:
  • Số nhận dạng octet
  • Chiều dài octet
  • Nội dung octet
  • Octet cuối nội dung
DER được sử dụng làm định dạng mã hóa phổ biến nhất để lưu trữ chứng chỉ X.509 trong các tệp chứng chỉ. Các tệp chứng chỉ DER là các tệp nhị phân, không thể xem được bằng các trình soạn thảo văn bản. Nhưng chúng có thể được xử lý trơn tru bằng các ứng dụng.

Các tệp chứng chỉ dưới định dạng DER được hỗ trợ bởi hầu hết các ứng dụng quen thuộc như "OpenSSL" hay "keytool".

2. Định dạng PEM

PEM là viết tắt của Privacy Enhanced Mail, PEM đã thất bại ở nhiệm vụ chính của nó là mang lại sự bảo mật cho email, nhưng nó vẫn là một định dạng chứng chỉ được các ứng dụng hỗ trợ. Về bản chất, các tệp PEM là các tệp DER được mã hóa Base64, ở đây số 0 và các tệp được mã hóa theo một chuỗi các ký tự có thể in được. Bằng cách này bạn có thể mở chúng bằng bất kỳ trình soạn thảo văn bản nào, kể cả Notepad.

PEM là định dạng chứng chỉ phổ biến nhất và là định dạng bạn dễ dàng gặp phải. Phần lớn các CA cung cấp Chứng chỉ SSL ở định dạng PEM với các phần mở rộng tệp khác nhau, chẳng hạn như .pem, .crt, .cer hoặc .key.

Một tệp .pem có thể chứa chứng chỉ máy chủ (server certificate), chứng chỉ trung gian (intermediate certificate) và khóa bảo mật (private key). Ngoài ra, bạn có thể nhận chứng chỉ máy chủ và chứng chỉ trung gian của mình trong một tệp .crt hoặc .cer riêng biệt, trong khi khóa bảo mật của bạn có thể nằm trong tệp .key.

3. Định dạng PKCS#7

PKCS là viết tắt của Public Key Cryptography Standards là một chuẩn do phòng thí nghiệm RSA Data Security Inc phát triển. Nó dựa vào các cấu trúc ASN.1 và thiết kế cho phù hợp với chứng chỉ X.09. PKCS#7 là một định dạng mã hóa cho việc lưu trữ một chứng chỉ số và chuỗi chứng nhận của nó dưới dạng các ký tự ASCII. Nó chủ yếu đươc sử dụng trên các nền tảng của Window và Java Tomcat. Hiện nay, khách hàng đang sử dụng CMS (Cryptographic Message Syntax), cũng giống như với SSL và TLS, PKCS#7 là tên thông thường mà tất cả chúng ta sử dụng và đang được thay thế. PKSC#7 có 2 định dạng mở rộng là: p7b và p7c. Không giống như PEM, PKCS#7 không thể lưu trữ khóa bảo mật (private key), nó chỉ có thể lưu trữ chứng chỉ gốc và chứng chỉ trung gian.

4. Định dạng PKCS#12

PKCS#12 có khả năng bảo mật tốt hơn PKCS#7 do có mật khẩu bảo vệ. Giống như tệp PEM, nó có thể chứa bất kỳ thứ gì từ chứng chỉ đơn lẻ đến toàn bộ chuỗi chứng chỉ và cặp khóa nhưng khác ở chỗ, PKCS#12 có thể được bảo vệ bằng mật khẩu và được mã hóa hoàn toàn. Nếu trong quá trình tạo chứng chỉ SSL bạn được nhắc nhập mật khẩu, nó có thể được sử dụng để mở tệp .pfx.

Như vậy bạn đã biết các định dạng chứng chỉ SSL và các phần mở rộng của chúng, bây giờ CER.vn sẽ hướng dẫn các bạn cách chuyển đổi chứng chỉ SSL thành bất kỳ định dạng nào. Có nhiều cách để chuyển đổi định dạng chứng chỉ. Xong cách nhanh nhất là sử dụng công cụ chuyển đổi SSL tự động. Tất cả những gì bạn phải làm là chọn thao tác mong muốn. Ví dụ: chuyển đổi PEM sang PKCS7, tải tệp lên, sau đó nhấn Convert.

Ngoài ra bạn có thể sử dụng phần mềm Open SSL miễn phí để chuyển đổi các tệp SSL của mình. OpenSSL là một thư viện phần mềm bao gồm tập hợp mã, kịch bản, cấu hình và thủ tục giúp tạo điều kiện cho một chức năng nhất định. Open SSL cho phép giao thức SSL/ TLS hoạt động trên rất nhiều các máy chủ và nó được viết bằng ngôn ngữ lập trình C, làm cho nó trở nên tiếp dàng tiếp cận với bất kỳ ai.

Một số lệnh chuyển đổi được sử dụng trong OpenSSL

Chuyển đổi X.509 sang PEM
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem

Chuyển đổi DER thành PEM (Mã hóa nhị phân thành Base64 ASCII)
openssl x509 -inform der -in certificatename.der -out certificatename.pem

Chuyển đổi PEM sang DER (Base65 ASCII sang mã hóa nhị phân)
openssl x509 -inform der -in certificatename.der -out certificatename.pem

Chuyển đổi PEM sang PKCS#7 (tệp .p7b không bao gồm khóa riêng)
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer

Chuyển đổi PKCS#7 sang PEM
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem

Chuyển đổi PKCS#12 thành PEM (tệp PKCS#12 được bảo vệ bằng mật khẩu)
openssl pkcs12 -in certificatename.pfx -out certificatename.pem

Chuyển đổi PKCS#7 sang PKCS#12
Điều này đòi hỏi hai bước. Trước tiên, bạn sẽ chuyển đổi tệp P7B sang CER và sau đó kết hợp CER và Khóa riêng thành PFX.
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer


Hy vọng với bài viết trên, bạn có thể hiểu rõ các loại định dạng chứng chỉ SSL và cách chuyển đổi các định dạng này. Bây giờ bạn có thể nhanh chóng chuyển đổi và cài đặt bất kỳ loại tệp SSL nào trên máy chủ của mình.
Top