Làm cách nào để tạo tệp .pfx từ chứng chỉ và khóa riêng?


363

Tôi cần tệp .pfx để cài đặt https trên trang web trên IIS.

Tôi có hai tệp riêng biệt: chứng chỉ (.cer hoặc pem) và khóa riêng (.crt) nhưng IIS chỉ chấp nhận các tệp .pfx.

Tôi rõ ràng đã cài đặt chứng chỉ và nó có sẵn trong trình quản lý chứng chỉ (mmc) nhưng khi tôi chọn Trình hướng dẫn xuất chứng chỉ, tôi không thể chọn định dạng PFX (nó bị mờ đi)

Có công cụ nào để làm điều đó hoặc ví dụ về C # khi thực hiện chương trình đó không?



1
đúng, nhưng câu trả lời của nó không rõ ràng và không khắc phục bất cứ điều gì trong trường hợp của tôi
jlp

@alexl có phiên bản windows không?
jlp


Openssl là hoàn toàn không cần thiết trong gần như tất cả các trường hợp. Chỉ cần thêm câu trả lời của tôi (mà tôi tạo một mục blog để cung cấp). Điều trớ trêu là khi bạn tạo CSR như dự định, có khả năng bạn sẽ không cần đến PFX.
rainabba

Câu trả lời:


554

Bạn sẽ cần phải sử dụng openssl.

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt

Tệp khóa chỉ là một tệp văn bản có khóa riêng của bạn trong đó.

Nếu bạn có CA gốc và các certs trung gian, thì hãy bao gồm chúng bằng cách sử dụng nhiều -inparam

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt

Bạn có thể cài đặt openssl từ đây: openssl


11
"Tệp khóa chỉ là một tệp văn bản có khóa riêng của bạn trong đó." Đúng, ngoại trừ khi nó không.
Casey

37
Cảm ơn, tôi cũng sẽ thêm nếu bạn có một CA gốc hoặc intermiediate cert bạn có thể thêm nó bằng cách cung cấp nhiều -in tham số:openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
gerrytan

10
Đã làm công việc cho tôi. Một lưu ý nhỏ, việc chạy này trên máy Windows yêu cầu bạn chạy openssl trong dấu nhắc lệnh của Quản trị viên.
Martin Costello

13
Bạn lấy file key từ đâu? Tôi đã nhận được chứng chỉ SSL, nhưng tôi không thấy keyfile ở bất cứ đâu. Chỉ cần có một tệp p7b và một loạt các tệp * .crt.
Knelis

11
Để làm cho điều này hoạt động trên openssl 1.0.2m, tôi đã phải chỉ định -certfile intermediate.crt -certfile rootca.crttrước khi tôi được nhắc bảo vệ .pfxbằng cụm mật khẩu / mật khẩu. Tôi tin rằng điều này có thể là do .keykhông khớp với các -intệp bổ sung dẫn đến thông báo lỗi "Không có chứng chỉ khớp với khóa riêng" mà tôi nhận được.
dragon788

36

Tiện ích dòng lệnh Microsoft Pvk2Pfx dường như có chức năng bạn cần:

Pvk2Pfx (Pvk2Pfx.exe) là một công cụ dòng lệnh sao chép thông tin khóa chung và khóa riêng có trong các tệp .spc, .cer và .pvk vào tệp Trao đổi thông tin cá nhân (.pfx).
http://msdn.microsoft.com/en-us/l Library / windows / hardware / ff550672 (v = vs85) .aspx

Lưu ý: nếu bạn cần / muốn / thích giải pháp C #, thì bạn có thể muốn xem xét sử dụng http://www.bouncycastle.org/ api.


1
đối số -spc cho tệp .cer
BozoJoe 23/2/2016

2
C: \ Tệp chương trình (x86) \ Windows Kits \ 10 \ bin \ 10.0.15063.0 \ x64 \ pvk2pfx.exe
Stefan Steiger

35

Nếu bạn đang tìm kiếm GUI Windows, hãy xem DigiCert. Tôi chỉ sử dụng cái này và nó khá đơn giản.

Trong tab SSL, trước tiên tôi đã nhập Chứng chỉ. Sau đó, khi tôi chọn Chứng chỉ, tôi có thể xuất dưới dạng PFX, cả có và không có khóa.

https://www.digicert.com/util


15
Khi tôi làm điều này, nó cho tôi biết tôi không có khóa riêng được nhập trên máy tính của mình. Cái nào đúng.
Niels Brinch

6
@NielsBrinch Khi tôi làm điều này, nó cũng cho tôi biết tôi không có khóa riêng được nhập trên máy tính của mình. Hy vọng rằng đó là sai, nó nằm trong cùng thư mục với chứng chỉ ...
aBertrand

@NielsBrinch Để giải quyết vấn đề này, tôi đã phải gửi lại CSR mới và sau đó tải lại chứng chỉ khi nó được xử lý, khóa riêng đã bị ẩn trên máy chủ / máy bạn đã tạo CSR. Điều này đã giải quyết thông báo lỗi đó.
Paddymac

Tôi có thể giới thiệu DigiCert dựa trên nhiều năm kinh nghiệm với họ.
mmell

Đừng quên bao gồm khóa riêng trong thư mục gốc của DigiCertUtil.exetệp thực thi. Dễ nhất là chỉ cần sao chép nó vào thư mục chứng chỉ.
Jonas

32

Bạn KHÔNG cần openssl hoặc makecert hoặc bất kỳ điều đó. Bạn cũng không cần khóa cá nhân do CA. Tôi gần như có thể đảm bảo rằng vấn đề là bạn mong đợi có thể sử dụng các tệp khóa và cer do CA của bạn cung cấp nhưng chúng không dựa trên "cách IIS". Tôi rất mệt mỏi khi thấy thông tin xấu và khó khăn ở đây đến nỗi tôi quyết định viết blog chủ đề và giải pháp. Khi bạn nhận ra điều gì đang xảy ra và thấy nó dễ dàng như thế nào, bạn sẽ muốn ôm tôi :)

SSL Certs cho IIS với PFX một lần và mãi mãi - SSL và IIS Giải thích - http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

Sử dụng UI "Chứng chỉ máy chủ" IIS để "Tạo yêu cầu chứng chỉ" (chi tiết của yêu cầu này nằm ngoài phạm vi của bài viết này nhưng những chi tiết đó rất quan trọng). Điều này sẽ cung cấp cho bạn một CSR được cài sẵn cho IIS. Sau đó, bạn đưa CSR đó cho CA của bạn và yêu cầu chứng chỉ. Sau đó, bạn lấy tệp CER / CRT mà họ cung cấp cho bạn, quay lại IIS, "Hoàn thành yêu cầu chứng chỉ" ở cùng nơi bạn đã tạo yêu cầu. Nó có thể yêu cầu .CER và bạn có thể có .CRT. Họ là những điều tương tự. Chỉ cần thay đổi tiện ích mở rộng hoặc sử dụng .thả xuống tiện ích mở rộng để chọn .CRT của bạn. Bây giờ cung cấp một "tên thân thiện" thích hợp (* .yourdomain.com, yourdomain.com, foo.yourdomain.com, v.v.) NÀY QUAN TRỌNG! Điều này PHẢI khớp với những gì bạn thiết lập CSR và CA của bạn đã cung cấp cho bạn những gì. Nếu bạn yêu cầu ký tự đại diện, CA của bạn phải được phê duyệt và tạo ký tự đại diện và bạn phải sử dụng tương tự. Nếu CSR của bạn được tạo cho foo.yourdomain.com, bạn PHẢI cung cấp tương tự ở bước này.


2
Câu hỏi được mở với: "Tôi cần tệp .pfx để cài đặt https trên trang web trên IIS."
rainabba

34
Bạn có thể vui lòng đặt nội dung có liên quan của bài viết của bạn trong câu trả lời của bạn xin vui lòng? Bằng cách đó, câu trả lời vẫn có liên quan ngay cả khi blog của bạn biến mất. Bạn vẫn có thể liên kết đến blog của bạn. Vì nó là, có 0 thông tin hữu ích trong nội dung của câu trả lời.
Deanna

16
Đây là cách đơn giản nhất nếu bạn yêu cầu chứng chỉ mới, tuy nhiên nó sẽ không hoạt động nếu bạn đã có chứng chỉ và / hoặc khóa riêng (ví dụ: trước đây bạn đã sử dụng với apache) vì yêu cầu ký chứng chỉ của IIS sẽ tạo ra một riêng tư mới key. Tôi thấy khía cạnh này của IIS thực sự khó chịu vì tất cả "yêu cầu hoàn chỉnh" đang thực hiện là kết hợp khóa riêng với chứng chỉ chung để tạo pfx, tại sao nó không thể chấp nhận chúng dưới dạng các tệp được định dạng PEM riêng biệt.
Chris Chilvers

2
Mặc dù tôi đánh giá cao rằng giải pháp của bạn rất có thể là "cách làm đúng", tôi nghĩ rằng đó là nỗ lực nhiều hơn so với việc xoay quanh với openssl - một công cụ, một cuộc gọi dòng lệnh, một mật khẩu, được thực hiện. Ngoài ra tôi không biết nếu tất cả các công ty ssl hỗ trợ phương pháp này.
Jan Bühler

8
Tôi sợ câu trả lời của bạn không giúp ích nếu chứng chỉ được tạo ở nơi khác. Được rồi, IIS hy vọng sẽ tạo và giữ khóa riêng - đôi khi đó không phải là một tùy chọn.
staticsan

8

Tôi đã tạo tệp .pfx từ các tệp .key và .pem.

Như thế này openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx


1
Về cơ bản, đây là cùng một lệnh tôi đã sử dụng, nhưng tôi cần thêm winpty trước khi openssl (ví dụ: winpty openssl pkcs12 ....) trong khi sử dụng Git bash, đây là một giải pháp phổ biến cho openssl trên windows.
smoore4

Tôi không cần công -exporttắc.
mmell

7

https://msdn.microsoft.com/en-us/l Library / ff699202.aspx

((trích dẫn có liên quan từ bài viết dưới đây))

Tiếp theo, bạn phải tạo tệp .pfx mà bạn sẽ sử dụng để ký các triển khai của mình. Mở cửa sổ Dấu nhắc Lệnh và gõ lệnh sau:

PVK2PFX –pvk yourprivatekeyfile.pvk –spc yourcertfile.cer –pfx yourpfxfile.pfx –po yourpfxpassword

Ở đâu:

  • pvk - yourprivatekeyfile.pvk là tệp khóa riêng mà bạn đã tạo ở bước 4.
  • spc - yourcertfile.cer là tệp chứng chỉ bạn đã tạo ở bước 4.
  • pfx - yourpfxfile.pfx là tên của tệp .pfx sẽ được tạo.
  • po - yourpfxpassword là mật khẩu mà bạn muốn gán cho tệp .pfx. Bạn sẽ được nhắc nhập mật khẩu này khi bạn thêm tệp .pfx vào một dự án trong Visual Studio lần đầu tiên.

(Tùy chọn (và không dành cho OP, nhưng đối với người đọc trong tương lai), bạn có thể tạo tệp .cer và .pvk từ đầu) (bạn sẽ làm điều này TRƯỚC KHI ở trên). Lưu ý mm / dd / yyyy là giữ chỗ cho ngày bắt đầu và ngày kết thúc. xem bài viết msDN cho tài liệu đầy đủ.

makecert -sv yourprivatekeyfile.pvk -n "CN=My Certificate Name" yourcertfile.cer -b mm/dd/yyyy -e mm/dd/yyyy -r

6

Bạn cần sử dụng công cụ makecert.

Mở một dấu nhắc lệnh với tư cách quản trị viên và gõ như sau:

makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"

Trong đó <CertifcateName>= tên của chứng chỉ của bạn để tạo.

Sau đó, bạn có thể mở snap-in Trình quản lý chứng chỉ cho bảng điều khiển quản lý bằng cách nhập certmgr.msc trong menu Bắt đầu, nhấp vào cá nhân> chứng chỉ> và chứng chỉ của bạn sẽ khả dụng.

Đây là một bài viết.

https://azure.microsoft.com/documentation/articles/cloud-service-certs-create/


3
Tôi không thể. Trong thủ thuật xuất khẩu, tùy chọn
pfx chuyển sang

chứng chỉ của tôi có sẵn trong người quản lý certifacate. Những gì tôi không thể làm là xuất nếu định dạng pfx. Hướng dẫn dòng lệnh của bạn làm gì?
jlp

Hãy thử tạo chứng chỉ theo lời khuyên và cho tôi biết nếu nó hoạt động. Nó có thể sẽ mất 5 phút. Bài viết được liên kết đưa ra một lời giải thích đầy đủ về những gì đang xảy ra.
BentOnCoding

Đó không phải là những gì tôi đang tìm kiếm. Tôi không muốn làm chứng chỉ. riêng tôi. Tôi đã mua cert từ cert cert trong 2 file. Tôi muốn sử dụng công cụ OpenSSL
jlp

5

Tôi có một liên kết với yêu cầu của bạn. Kết hợp các tệp CRT và KEY vào PFX với OpenSSL

Trích từ liên kết trên:

Đầu tiên chúng ta cần trích xuất chứng chỉ CA gốc từ tệp .crt hiện có, vì chúng ta cần điều này sau. Vì vậy, hãy mở .crt và nhấp vào tab Đường dẫn chứng nhận.

Nhấp vào chứng chỉ trên cùng (Trong trường hợp này là VeriSign) và nhấn Xem Chứng chỉ. Chọn tab Chi tiết và nhấn Sao chép vào Tập tin

Chọn chứng chỉ X.509 (.CER) được mã hóa Base-64 Lưu dưới dạng rootca.cer hoặc một cái gì đó tương tự. Đặt nó trong cùng thư mục với các tập tin khác.

Đổi tên nó từ rootca.cer thành rootca.crt Bây giờ chúng ta nên có 3 tệp trong thư mục của mình để có thể tạo tệp PFX.

Đây là nơi chúng ta cần OpenSSL. Chúng ta có thể tải xuống và cài đặt nó trên Windows , hoặc đơn giản là mở terminal trên OSX.

BIÊN TẬP:

  1. Có một liên kết hỗ trợ với thông tin từng bước về cách cài đặt chứng chỉ.

  2. Sau khi cài đặt thành công, xuất chứng chỉ, chọn .pfxđịnh dạng, bao gồm khóa riêng.

    Lưu ý quan trọng :: Để xuất chứng chỉ ở định dạng .pfx, bạn cần làm theo các bước trên cùng một máy mà bạn đã yêu cầu chứng chỉ .

  3. Các tập tin nhập khẩu có thể được tải lên máy chủ.


1
Bạn có thể vui lòng giải thích? Làm thế nào chính xác bạn đã tạo tệp PFX từ tệp CERT? Bạn đã tạo tập tin KEY ở đâu hoặc như thế nào, xin vui lòng tất cả đều khó hiểu.

3
Bạn có thể vui lòng khám phá từ đây làm thế nào họ tập tin KEY bạn nhận được? ví dụ:openssl pkcs12 -inkey example.com.key -in example.com.crt -export -out example.com.pfx

5

Đây là BY FAR cách dễ nhất để chuyển đổi các tệp * .cer thành * .pfx:

Chỉ cần tải xuống trình chuyển đổi chứng chỉ di động từ DigiCert: https://www.digicert.com/util/pfx-cert ve-man Quản lý-utility-import-export-in cản.htmlm

Thực thi nó, chọn một tệp và nhận * .pfx của bạn !!


Tuyệt quá! Điều này đã làm việc. Tôi đã có tệp .p7b. Tôi đã nhập nó vào IIS của mình bằng cách sử dụng các hướng dẫn do GoDaddy cung cấp. Sau đó tạo tệp .cer (tệp chính) và sau đó sử dụng tiện ích này để lấy pfx.
Shiva Naru

Công cụ Digicert là thanh tốt nhất.
L_7337

1
Tôi không thể thấy bất kỳ cách nào để làm những gì OP muốn làm bằng công cụ này. Nó dường như chỉ cho phép bạn xuất chứng chỉ - không tạo chúng từ các tệp chính và cer.
NickG

1
Có lẽ đáng nói đến là trước tiên bạn cần "cài đặt" chứng chỉ, sau đó quay lại tab SSL và "xuất" nó để có được tệp pfx thực tế.
access_granted

3

Khi bạn nói chứng chỉ có sẵn trong MMC, nó có sẵn trong "Người dùng hiện tại" hoặc "Máy tính cục bộ" không? Tôi thấy rằng tôi chỉ có thể xuất khóa riêng nếu nó nằm trong Máy tính cục bộ.

Bạn có thể thêm snap in cho Chứng chỉ vào MMC và chọn tài khoản cần quản lý chứng chỉ. Chọn máy tính cục bộ. Nếu chứng chỉ của bạn không có ở đó, hãy nhập nó bằng cách nhấp chuột phải vào cửa hàng và chọn Tất cả tác vụ> Nhập.

Bây giờ điều hướng đến chứng chỉ đã nhập của bạn trong phiên bản Máy tính cục bộ của chứng chỉ đính vào. Nhấp chuột phải vào chứng chỉ và chọn Tất cả tác vụ> Xuất. Trang thứ hai của trình hướng dẫn xuất sẽ hỏi bạn có muốn xuất khóa riêng không. Chọn Có. Tùy chọn PFX bây giờ sẽ là duy nhất khả dụng (nó có màu xám nếu bạn chọn không và tùy chọn xuất khóa riêng không khả dụng trong tài khoản Người dùng hiện tại).

Bạn sẽ được yêu cầu đặt mật khẩu cho tệp PFX và sau đó đặt tên chứng chỉ.


1

Tôi có những vấn đề giống nhau. Vấn đề của tôi là máy tính tạo yêu cầu chứng chỉ ban đầu đã bị hỏng trước khi quá trình xác nhận ssl mở rộng được hoàn thành. Tôi cần tạo khóa riêng mới và sau đó nhập chứng chỉ cập nhật từ nhà cung cấp chứng chỉ. Nếu khóa riêng không tồn tại trên máy tính của bạn thì bạn không thể xuất chứng chỉ dưới dạng pfx. Họ lựa chọn là màu xám.


1

Mặc dù có thể dễ dàng nhất để tạo CSR mới bằng IIS (như @rainabba đã nói), giả sử bạn có chứng chỉ trung gian, có một số trình chuyển đổi trực tuyến ngoài đó - ví dụ: https://www.sslshopper.com/ssl-converter. html

Điều này sẽ cho phép bạn tạo PFX từ chứng chỉ và khóa riêng mà không phải cài đặt chương trình khác.


0

Trong hầu hết các trường hợp, nếu bạn không thể xuất chứng chỉ dưới dạng PFX (bao gồm khóa riêng) là do MMC / IIS không thể tìm / không có quyền truy cập vào khóa riêng (được sử dụng để tạo CSR). Đây là các bước tôi đã làm theo để khắc phục vấn đề này:

  • Chạy MMC với tư cách quản trị viên
    • Tạo CSR bằng MMC. Thực hiện theo các hướng dẫn này để làm cho chứng chỉ có thể xuất khẩu.
  • Khi bạn nhận được chứng chỉ từ CA (crt + p7b), hãy nhập chúng (Personal \ Chứng chỉ và Cơ quan chứng nhận trung gian \ Chứng chỉ)
  • QUAN TRỌNG: Nhấp chuột phải vào chứng chỉ mới của bạn (Cá nhân \ Chứng chỉ) Tất cả Tác vụ..Quản lý Khóa riêng và gán quyền cho tài khoản của bạn hoặc Mọi người (rủi ro!). Bạn có thể quay lại các quyền trước khi bạn hoàn thành.
  • Bây giờ, nhấp chuột phải vào chứng chỉ và chọn Tất cả tác vụ..Export và bạn sẽ có thể xuất chứng chỉ bao gồm khóa riêng dưới dạng tệp PFX và bạn có thể tải nó lên Azure!

Hi vọng điêu nay co ich!


Tôi đã có chứng chỉ cá nhân trong Chứng nhận \ Cá nhân, nhưng với Nhấp chuột phải không xuất hiện "Quản lý khóa riêng". Các tùy chọn tôi nhận được là: "Yêu cầu chứng chỉ với khóa mới ...", "Gia hạn chứng chỉ bằng khóa mới ..." và "Xuất" ... Bạn có biết tôi đang thiếu gì không?
Gabrielizalo

1
Tôi đã sửa nó bằng trình chuyển đổi chứng chỉ di động từ DigiCert: digicert.com/util/ Kẻ
Gabrielizalo

Bạn đã thất bại tại "tạo CSR". Nếu bạn đã có khóa riêng, bạn không cần tạo CSR. Xin vui lòng đọc câu hỏi ban đầu.
NickG

0

Tôi biết một vài người dùng đã nói về việc cài đặt cái này và cái kia và thêm các chương trình dòng lệnh và tải xuống ...

Cá nhân tôi lười biếng và thấy tất cả các phương pháp này cồng kềnh và chậm chạp, cộng với tôi không muốn tải xuống bất cứ thứ gì và tìm các dòng cmd chính xác nếu tôi không phải làm.

Cách tốt nhất cho tôi trên máy chủ IIS cá nhân của tôi là sử dụng RapidSSLOnline. Đây là một công cụ trên máy chủ cho phép bạn tải lên chứng chỉ và khóa riêng và có thể tạo tệp pfx cho bạn mà bạn có thể nhập trực tiếp vào IIS.

Liên kết ở đây: https://www.rapidsslonline.com/ssl-tools/ssl-converter.php

Dưới đây là các bước được sử dụng cho kịch bản được yêu cầu.

  1. Chọn loại hiện tại = PEM
  2. Thay đổi cho = PFX
  3. Tải lên chứng chỉ của bạn
  4. Tải lên khóa riêng của bạn
  5. Nếu bạn có chứng chỉ ROOT CA hoặc certs trung gian cũng tải chúng lên
  6. Đặt mật khẩu bạn chọn, được sử dụng trong IIS
  7. Nhấp vào reCaptcha để chứng minh bạn không phải là bot
  8. Nhấp vào Chuyển đổi

Và đó là bạn nên tải xuống PFX và sử dụng điều này trong quy trình Nhập trên IIS.

Hy vọng điều này sẽ giúp những người khác như những người có đầu óc, lười biếng.


6
Có an toàn để tải lên chứng chỉ của bạn trên trang web của bên thứ ba không cấp cho bạn chứng chỉ không?
Kunal

1
Xin chào, SSL nhanh tôi tin là thuộc sở hữu của GeoTrust. Cả một cơ quan có thẩm quyền trong việc có được một chứng chỉ. Theo như tôi có thể nói ... digital.com/ssl-certert/geotrust digital.com/ssl-certert/RAPIDSSL liên quan đến an toàn Tôi nghĩ rằng đó sẽ là một khai thác tối thiểu vì chứng chỉ của bạn sẽ được tạo bởi hệ thống bên ngoài và vẫn còn hiệu lực Trong trường hợp của tôi, tôi đã sử dụng sslforfree.com phải được gia hạn sau mỗi 90 ngày, nhưng đó là một cái giá nhỏ để trả cho chi phí thấp hơn, đặc biệt là cho trang web demo của tôi, v.v.
TheNerdyNerd

5
@Kunal: Đây có thể là một cách đơn giản để nhận tệp chứng chỉ test / dev, nhưng tải lên khóa riêng của bạn cho một bên khác là một nogo chung cho môi trường sản xuất an toàn.
Stefan

0

Đối với các tệp cfx từ SSLForFree, tôi tìm thấy https://decoder.link/converter này dễ nhất.

Chỉ cần đảm bảo PEM -> PKCS # 12 được chọn, sau đó tải lên chứng chỉ, ca_bundle và các tệp chính và chuyển đổi. Ghi nhớ mật khẩu, sau đó tải lên bằng mật khẩu bạn đã sử dụng và thêm các ràng buộc.

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.