Chuyển đổi pfx sang pem bằng openssl


109

Cách tạo .pem chứng chỉ CAchứng chỉ ứng dụng khách từ tệp PFX bằng OpenSSL.

Câu trả lời:


107

Bạn có thể sử dụng công cụ dòng lệnh OpenSSL. Các lệnh sau sẽ thực hiện thủ thuật

openssl pkcs12 -in client_ssl.pfx -out client_ssl.pem -clcerts

openssl pkcs12 -in client_ssl.pfx -out root.pem -cacerts

Nếu bạn muốn tệp của mình được bảo vệ bằng mật khẩu, v.v. thì có các tùy chọn bổ sung.

Bạn có thể đọc toàn bộ tài liệu tại đây .


191

Một góc nhìn khác để làm điều đó trên Linux ... đây là cách thực hiện để tệp duy nhất kết quả chứa khóa cá nhân được giải mã để một thứ như HAProxy có thể sử dụng nó mà không cần nhắc bạn nhập mật khẩu.

openssl pkcs12 -in file.pfx -out file.pem -nodes

Sau đó, bạn có thể cấu hình HAProxy để sử dụng tệp file.pem.


Đây là bản CHỈNH SỬA từ phiên bản trước mà tôi đã thực hiện nhiều bước này cho đến khi tôi nhận ra tùy chọn -nodes chỉ đơn giản là bỏ qua mã hóa khóa riêng. Nhưng tôi để nó ở đây vì nó có thể giúp ích cho việc giảng dạy.

openssl pkcs12 -in file.pfx -out file.nokey.pem -nokeys
openssl pkcs12 -in file.pfx -out file.withkey.pem
openssl rsa -in file.withkey.pem -out file.key
cat file.nokey.pem file.key > file.combo.pem
  1. Bước đầu tiên nhắc bạn nhập mật khẩu để mở PFX.
  2. Bước thứ 2 nhắc bạn về điều đó cộng với việc tạo cụm mật khẩu cho khóa.
  3. Bước thứ 3 nhắc bạn nhập cụm mật khẩu bạn vừa tạo để lưu trữ được giải mã.
  4. Cái thứ 4 tập hợp tất cả lại thành 1 tệp.

Sau đó, bạn có thể định cấu hình HAProxy để sử dụng tệp file.combo.pem.

Lý do tại sao bạn cần 2 bước riêng biệt trong đó bạn chỉ ra một tệp có khóa và một tệp khác không có khóa, là vì nếu bạn có một tệp có cả khóa được mã hóa và giải mã, một cái gì đó như HAProxy vẫn nhắc bạn nhập cụm mật khẩu khi nó sử dụng nó.


Tôi đã không dành thời gian để làm quen với openssl, nhưng việc chuyển đổi pem không bao gồm khóa riêng. Bản chỉnh sửa đã cung cấp chi tiết về cách hợp nhất chứng chỉ và khóa thành một tệp pem, chỉ những gì tôi cần.
ebt

Trên cửa sổ hệ thống sử dụng loại thay vì mèo
hupseb

Trên Windows, phiên bản OpenSSL này rất dễ sử dụng cho những thứ như sau: slproweb.com/products/Win32OpenSSL.html
Helge Klein

Các bước trên hoạt động tốt để chuyển đổi PFX sang PEM. Tuy nhiên, tôi phải thực hiện thêm một bước: mở tệp nokey PEM trong trình soạn thảo văn bản và di chuyển chứng chỉ cuối cùng trong chuỗi lên đầu tệp. Nếu không, nginx sẽ thông báo lỗi khi phàn nàn về chứng chỉ và từ chối sử dụng chúng.
EugeneRomero

Trong trường hợp đó, bạn có thể sắp xếp lại thứ tự lệnh mèo để đặt nó trước. như: cat file.key file.nokey.pem> file.combo.pem Trừ khi bản thân file.key có nhiều tệp sai thứ tự. Nhưng trong cả hai trường hợp, bạn có thể sắp xếp lại mọi thứ theo chương trình.
user2415376

11

Mặc dù các câu trả lời khác đều đúng và được giải thích cặn kẽ, nhưng tôi thấy có một số khó khăn khi hiểu chúng. Đây là phương pháp tôi đã sử dụng ( Lấy từ đây ):

Trường hợp đầu tiên: Để chuyển đổi tệp PFX thành tệp PEM có chứa cả chứng chỉ và khóa cá nhân:

openssl pkcs12 -in filename.pfx -out cert.pem -nodes

Trường hợp thứ hai: Để chuyển đổi tệp PFX thành tệp PEM khóa công khai và riêng tư:

Trích xuất khóa riêng tư tạo PFX thành tệp PEM:

openssl pkcs12 -in filename.pfx -nocerts -out key.pem

Xuất chứng chỉ (chỉ bao gồm khóa công khai):

openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem

Xóa mật khẩu (diễn giải) khỏi khóa cá nhân được trích xuất (tùy chọn):

openssl rsa -in key.pem -out server.key
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.