Tìm hiểu về việc chuyển đổi định dạng của chứng chỉ SSL trên Open SSL

Hướng dẫn về cách chuyển đổi chứng chỉ kỹ thuật số SSL từ một định dạng tệp sang một định dạng tệp khác.

Hôm nay chúng ta sẽ nói về cách chuyển đổi chứng chỉ SSL sang định dạng đúng. Đây là câu hỏi mà chúng tôi được hỏi rất nhiều và tôi muốn dành một chút thời gian để giúp bạn hiểu hơn về cách chuyển đổi định dạng chứng chỉ.

Nào hãy cùng tìm hiểu.

Tại sao tôi cần biết cách chuyển đổi chứng chỉ sang định dạng đúng?

 

Trước khi chúng ta nói về cách chuyển đổi chứng chỉ sang định dạng đúng, hãy tìm hiểu lí do tại sao chúng ta cần chuyển. Có rất nhiều loại máy chủ và thiết bị trên mạng. Những người cho phép cài đặt và cấu hình SSL yêu cầu tệp chứng chỉ kỹ thuật số phải được mã hóa và định dạng theo một cách nhất định. Tất cả những gì bạn cần biết là có 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 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 thiết bị của bạn yêu cầu. Trong một số trường hợp, 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. Tuy nhiên, trong các trường hợp khác, một loại tệp và mã hóa cụ thể là bắt buộc.

Bây giờ, không phải tất cả đều là giấy chứng nhận X.509 sao? – có lẽ bạn sẽ thắc mắc. Chứng chỉ X.509 là loại chứng chỉ kỹ thuật số sử dụng tiêu chuẩn PKI (X.509 v3) để xác thực rằng máy chủ là chủ sở hữu hợp pháp của khóa công cộng được liên kết. Và chúng ta sẽ nói qua về một số đuôi mở rộng như:

  • .der
  • .pem
  • .crt
  • .cer
  • .pkcs7
  • .p7b
  • .pkcs8
  • .pkcs12
  • .pfx
  • .p12

Mã hóa về cơ bản chỉ là mã hóa dữ liệu thành một định dạng có thể được sử dụng bởi một hệ thống khác. Hay đơn giản hơn, đó là cần phải có mã hóa dữ liệu để nó có thể được đọc và sử dụng bởi một máy tính. Một trong những tiêu chuẩn mã hóa phổ biến nhất  là ASCII hoặc Mã tiêu chuẩn của Mỹ cho trao đổi thông tin là một lược đồ mã hóa được sử dụng cho các tệp có chứa văn bản.

Bây giờ chúng ta hãy nói về các kiểu mã hóa.

.der – Viết tắt của Distinguished Encoding Rules, định dạng mã hóa nhị phân. Windows xem các tệp này dưới dạng tệp chứng chỉ và thực sự xuất chứng chỉ dưới dạng tệp có định dạng .der nhưng có phần mở rộng như .crt hoặc .cer.

.pem – Là viết tắt của Privacy Enhanced Mail, có thể PEM về cơ bản đã thất bại ở chức năng mà nó được thiết kế ban đầu, nhưng tỏ ra hữu ích như một định dạng container. Tệp PEM chỉ là các tệp DER được mã hóa Base64.

Tôi có thể thấy cái nhìn bối rối đó trên khuôn mặt của bạn, vì vậy hãy phân tích thêm một chút nữa.

Tệp DER là chứng chỉ kỹ thuật số X.509 được mã hóa ở dạng nhị phân – 1 và 0. Base64 là một chương trình mã hóa nhị phân thành văn bản, do đó tệp PEM, là tệp DER được mã hóa Base64, là cùng một chứng chỉ X.509, nhưng được mã hóa trong văn bản và được biểu diễn dưới dạng ASCII.

Các tệp DER hiếm khi được sử dụng bên ngoài Windows. Nhưng, hãy nhớ cách chúng tôi nói PEM là một container? Đó là bởi vì nó có thể chứa bất cứ thứ gì từ chính chứng chỉ số, cho toàn bộ chuỗi chứng chỉ và cặp khóa. Thật không may, không phải tất cả các trình duyệt đều nhận dạng tệp có phần mở rộng .pem dưới dạng chứng chỉ, vì vậy rất nhiều lần bạn sẽ thấy một đuôi mở rộng khác được gắn vào cuối tệp PEM (và cả tệp DER):

  • .cert
  • .crt
  • .cer

Vì vậy, khi nói về cách chuyển đổi chứng chỉ sang định dạng đúng, bạn có thể nói về cách nó được mã hóa hoặc cách nó được trình bày. Bây giờ, có một số cách khác để trình bày chứng chỉ ngoài PEM và DER. Chuẩn PKCS hoặc Mật mã khóa công khai, thông thường bạn thấy PKCS 7, PKCS8 và PKCS12. Hãy bắt đầu với PKCS7, ban đầu được xác định bởi RSA của công ty trước khi được chuyển sang IETF. Nó là một định dạng đa mục đích cho các dữ liệu được mã hóa và được ký để được phổ biến. Cuối cùng nó đã phát triển thành Cú pháp thông điệp mã hóa, CMS, nhưng giống như với SSL và TLS, PKCS7 là tên thông tục mà tất cả chúng ta vẫn sử dụng. Đó là một chuẩn mở, nó được hỗ trợ bởi Windows. Một điều cần lưu ý mặc dù là nó không thể chứa một khóa riêng. PKCS7 được sử dụng nhiều với chứng chỉ email và tạo cơ sở cho email bảo mật S / MIME.

PKCS8 là một tiêu chuẩn tương tự được sử dụng để thực hiện khóa riêng. Và cuối cùng, chúng tôi có PKCS12, cung cấp bảo mật tốt hơn thông qua mã hóa. 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ông giống như PEM, nó là một vùng chứa được bảo vệ bằng mật khẩu đượ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ở chứng chỉ nếu nó ở định dạng PKCS12.

 

Có cách nào để thay đổi định dạng tệp chứng chỉ SSL?

 

Theo ý tôi, không sử dụng công cụ trực tuyến để chuyển đổi chứng chỉ kỹ thuật số sang các định dạng tệp khác nhau. Làm điều đó trên máy chủ của bạn bằng cách sử dụng các lệnh OpenSSL sẽ là một lựa chọn đúng đắn hơn

OpenSSL là gì?

 

OpenSSL là một thư viện phần mềm. Một máy tính không biết cách làm bất cứ điều gì. Bạn phải dạy nó. Thư viện phần mềm là 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. Ví dụ, nếu bạn đang viết một phần mềm đòi hỏi rất nhiều phép tính toán, chỉ cần thêm một thư viện phần mềm toán học để bạn không phải tự viết toàn bộ các hàm toán học phức tạp.

Bây giờ, hãy áp dụng khái niệm đó cho SSL. OpenSSL là một thư viện phần mềm cho phép giao thức SSL / TLS hoạt động trên rất nhiều các máy chủ. Vâng, nó rất phổ biến. Vì vậy, mặc dù có thể không có định dạng tệp phổ dụng cho chứng chỉ X.509, ít nhất cũng có ngôn ngữ chung để thao tác chúng trên máy chủ. OpenSSL được viết bằng ngôn ngữ lập trình C, làm cho nó trở nên cực kỳ dễ tiếp cận với bất kỳ ai thậm chí có kiến ​​thức sơ bộ về lập trình.

Vì vậy, bây giờ chúng ta hãy đi qua làm thế nào để chuyển đổi một chứng chỉ sang định dạng chính xác.

Cách chuyển đổi chứng chỉ sang định dạng đúng

 

Chuyển đổi X.509 thành PEM – Đây là quyết định về cách bạn muốn mã hóa chứng chỉ (không chọn DER trừ khi bạn có lý do cụ thể).

openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem

Chuyển đổi DER sang PEM – Mã hóa nhị phân thành ASCII

openssl x509 -inform der -in certificatename.der -out certificatename.pem

Chuyển đổi PEM sang DER – ASCII thành nhị phân

openssl x509 -outform der -in certificatename.pem -out certificatename.der

Chuyển đổi tệp PEM thành PKCS7 – PKCS7 chỉ có thể chứa chứng chỉ và chuỗi chứng chỉ, không bao giờ là khóa riêng tư.

openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer

Chuyển đổi PKCS7 sang PEM – Hãy nhớ rằng, tệp này sẽ không bao gồm cặp khóa.

openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem

Chuyển đổi PKCS12 thành PEM – Còn được gọi là các thùng chứa PFX, PKCS12 có thể bao gồm chứng chỉ, chuỗi chứng chỉ và khóa riêng. Chúng được bảo vệ bằng mật khẩu và được mã hóa.

openssl pkcs12 -in certificatename.pfx -out certificatename.pem

Chuyển đổi PKCS12 thành PKCS8 – PKCS8 tương tự như PKCS7, chỉ dành cho lưu trữ khóa riêng và có thể được mã hóa bằng mật khẩu. Điều này có hai bước:

openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem

openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8

Chuyển đổi PKCS7 thành PKCS12 – Điều này đòi hỏi hai bước khi bạn cần kết hợp khóa riêng với tệp chứng chỉ.

openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer

openssl pkcs12 -export -in certificatename.cer -keykeyKey.key -out certificatename.pfx -certfile cacert

Mong rằng qua bài này người dùng có thể hiểu cũng như chuyển đổi được định dạng của tệp chứng chỉ SSL thông qua OpenSSL

0/5 (0 Reviews)

Leave a Comment