Convert SSL ra PFX bằng OpenSSL trên Windows
Hướng dẫn Tên miền & SSL · cập nhật 27/07/2026
Để convert SSL ra PFX bằng OpenSSL trên Windows, bạn cài bản OpenSSL cho Win64, mở Command Prompt tại thư mục bin rồi chạy một lệnh pkcs12 -export duy nhất. Cài đặt mất khoảng 5 phút, lệnh chạy xong trong vài giây.
Việc này gặp khi nhà cung cấp chứng chỉ gửi về bộ file dạng văn bản, còn IIS trên Windows Server lại chỉ nhận một file .pfx. Windows không có sẵn công cụ ghép, nên phải cài OpenSSL về máy làm việc đó.
- Tải và cài OpenSSL bản dành cho Windows.
- Chép file chứng chỉ và file khoá riêng vào thư mục
bincủa OpenSSL. - Mở Command Prompt đúng tại thư mục đó.
- Chạy lệnh ghép và đặt mật khẩu cho file kết quả.
Đã kiểm trên Windows Server 2019 với OpenSSL 3.x bản Win64. Bản Light gọn hơn và đủ dùng cho việc ghép file, không cần bản Full.
Vì sao Windows cần file PFX thay vì bộ file văn bản
Kho chứng chỉ của Windows lưu chứng chỉ và khoá riêng thành một cặp gắn liền nhau, không nhận hai file rời. Định dạng PFX theo chuẩn PKCS#12 đóng gói cả hai vào một file nhị phân có mật khẩu bảo vệ, đúng cấu trúc mà kho chứng chỉ chờ đợi.
Bộ file mà nhà cung cấp gửi về thường là dạng PEM, tức văn bản thuần bắt đầu bằng dòng -----BEGIN CERTIFICATE-----. Đó là định dạng của thế giới Linux, nơi Apache và Nginx đọc từng file riêng qua đường dẫn khai trong cấu hình. Hai hệ chọn hai cách khác nhau, nên mới sinh ra bước chuyển đổi này.
Cài OpenSSL cho Windows và chọn đúng bản
OpenSSL không có bản chính thức cho Windows từ nhóm phát triển, nên phải dùng bản dựng sẵn của bên thứ ba. Bản phổ biến nhất là Win32/Win64 OpenSSL của Shining Light Productions, tải từ trang slproweb.com. Chọn bản Win64 nếu máy chạy Windows 64 bit, đúng với hầu hết máy đời sau 2015.
| Bản cài | Gồm gì | Nên chọn khi |
|---|---|---|
| Win64 OpenSSL Light | File thực thi và thư viện chạy | Chỉ cần chạy lệnh chuyển đổi file |
| Win64 OpenSSL (Full) | Thêm file header và thư viện để lập trình | Cần biên dịch phần mềm gọi tới OpenSSL |
| Win32 | Bản 32 bit | Máy chạy Windows 32 bit đời cũ |
Trong lúc cài, trình cài hỏi đặt thư viện DLL ở đâu. Chọn mục đặt trong thư mục cài của OpenSSL, đừng chọn thư mục hệ thống Windows, vì ghi đè DLL hệ thống có thể làm phần mềm khác đang dùng bản OpenSSL riêng bị lỗi.
Các bước convert SSL ra PFX bằng OpenSSL trên Windows
Bốn bước dưới đây làm trên máy Windows đã cài OpenSSL. Bạn cần hai file trong tay: file chứng chỉ nhà cung cấp gửi về và file khoá riêng sinh ra lúc tạo yêu cầu ký. Thiếu file khoá riêng thì không ghép được, phải xin cấp lại chứng chỉ.
1. Chép hai file vào thư mục bin
Mở thư mục cài OpenSSL, thường là C:\Program Files\OpenSSL-Win64\bin. Chép file domain.crt và domain.key vào đó. Để chung một chỗ với chương trình thì lệnh viết ngắn, không phải gõ đường dẫn dài.

2. Mở Command Prompt tại đúng thư mục
Trong cửa sổ thư mục bin, bấm vào thanh địa chỉ, gõ đè chữ cmd rồi nhấn Enter. Command Prompt mở ra với thư mục hiện hành đã đúng chỗ.
Cách này nhanh hơn mở CMD rồi gõ lệnh cd, và tránh được lỗi hay gặp là gõ thiếu dấu ngoặc kép quanh đường dẫn có khoảng trắng trong chữ "Program Files".
3. Chạy lệnh ghép file
Gõ nguyên dòng dưới đây, thay domain bằng tên file thật của bạn:
openssl pkcs12 -export -out domain.pfx -inkey domain.key -in domain.crt
Bốn tham số trong lệnh có nghĩa như sau. pkcs12 -export nói rằng bạn muốn tạo file theo chuẩn PKCS#12. -out là tên file kết quả. -inkey là file khoá riêng. -in là file chứng chỉ.
Cách gọi cũ là chạy openssl.exe trước để vào chế độ dòng lệnh riêng của chương trình rồi mới gõ pkcs12 -export .... Hai cách cho cùng kết quả, gõ một dòng như trên đỡ một bước.
4. Đặt mật khẩu cho file PFX
Chương trình hỏi Enter Export Password rồi hỏi lại lần nữa để xác nhận. Gõ mật khẩu, màn hình không hiện ký tự nào, đó là cách OpenSSL luôn nhận mật khẩu. Nhấn Enter hai lần liên tiếp nếu muốn để trống.
Ghi lại mật khẩu này ngay. IIS sẽ hỏi đúng chuỗi đó lúc nhập chứng chỉ, và không có cách nào lấy lại từ file. Quên là phải chạy lại lệnh trên từ đầu.
Cách kiểm tra file PFX vừa tạo có dùng được không
File PFX đúng sẽ mở lại được bằng chính OpenSSL và liệt kê ra đủ chứng chỉ lẫn khoá riêng bên trong. Chạy lệnh sau, nhập mật khẩu vừa đặt:
openssl pkcs12 -info -in domain.pfx -nodes
Kết quả in ra phải có cả khối -----BEGIN PRIVATE KEY----- lẫn khối -----BEGIN CERTIFICATE-----. Thiếu khối khoá riêng nghĩa là lệnh ghép đã chạy nhưng file .key rỗng hoặc sai, phải làm lại.
Kiểm nhanh hơn thì bấm đúp vào file .pfx ngay trên Windows. Trình nhập chứng chỉ mở ra và hỏi mật khẩu, đó đã là dấu hiệu file đọc được. Sau khi có file dùng được, làm tiếp theo hướng dẫn cài đặt SSL trên IIS.
Xử lý các lỗi thường gặp khi chạy OpenSSL trên Windows
Bốn thông báo dưới đây chiếm phần lớn ca chuyển đổi thất bại. OpenSSL in lỗi bằng tiếng Anh khá ngắn, nhìn dòng đầu là đủ để biết rơi vào ca nào.
openssl is not recognized as an internal or external command. Command Prompt đang đứng ở thư mục khác. Kiểm dấu nhắc có phải đường dẫn tới bin hay không, hoặc gõ đủ openssl.exe kèm đường dẫn trong dấu ngoặc kép.
unable to load private key. File .key không phải khoá riêng, hoặc là khoá đã mã hoá bằng mật khẩu mà bạn chưa khai. Mở file bằng Notepad xem dòng đầu: đúng thì bắt đầu bằng -----BEGIN PRIVATE KEY----- hoặc -----BEGIN RSA PRIVATE KEY-----.
No certificate matches private key. Chứng chỉ và khoá riêng không cùng một cặp, thường do lấy nhầm khoá của lần tạo yêu cầu ký trước đó. Đối chiếu bằng cách so hai chuỗi băm, nếu khác nhau thì phải tìm đúng file khoá của lần cấp này.
openssl x509 -noout -modulus -in domain.crt | openssl md5
openssl rsa -noout -modulus -in domain.key | openssl md5
Trình duyệt vẫn báo chứng chỉ không tin cậy sau khi cài. File PFX thiếu chứng chỉ trung gian. Xin file CA bundle từ nơi cấp rồi ghép thêm bằng tham số -certfile:
openssl pkcs12 -export -out domain.pfx -inkey domain.key -in domain.crt -certfile ca-bundle.crt
Việc nên làm sau khi có file PFX
Chép file .pfx và mật khẩu vào nơi lưu trữ an toàn của bạn, rồi xoá file .key khỏi thư mục bin. Thư mục cài phần mềm không phải chỗ để khoá riêng nằm lâu dài, ai có quyền đọc máy đó là có luôn khoá.
Ghi lại ngày hết hạn của chứng chỉ vào lịch, đặt nhắc trước 30 ngày. Chứng chỉ SSL thương mại hiện chỉ còn thời hạn tối đa 397 ngày, nên năm nào cũng phải làm lại quy trình này. Chứng chỉ BizMaC cấp qua đối tác GoGetSSL đều gửi kèm CA bundle trong bộ file, giữ lại file đó thì lần ghép sau không phải đi xin.