BizMaC bizmac.com

Chuyển đổi chứng chỉ SSL bằng OpenSSL

Hướng dẫn Tên miền & SSL · cập nhật 07/08/2026

Để chuyển đổi chứng chỉ SSL bằng OpenSSL, bạn xác định định dạng file đang có, tìm cặp định dạng nguồn và đích trong bảng lệnh bên dưới rồi chạy đúng dòng đó. Mỗi lượt chuyển mất vài giây, phần lâu nhất là tìm ra file hiện tại đang ở định dạng nào.

Việc này gặp khi nhà cung cấp cấp chứng chỉ theo một định dạng còn máy chủ đích lại đòi định dạng khác. Apache và Nginx đọc PEM, IIS đọc PFX, Tomcat và các máy chủ Java đọc P7B hoặc JKS, còn thiết bị mạng có khi chỉ nhận DER.

  1. Nhận diện định dạng của file đang có.
  2. Tra bảng để biết máy chủ đích cần định dạng nào.
  3. Chạy lệnh chuyển đổi tương ứng.
  4. Mở file kết quả bằng OpenSSL để xác nhận nội dung còn đủ.
Các lệnh dưới đây chạy được trên OpenSSL 1.1.1 và 3.x, trên Linux, macOS lẫn Windows. Trên Windows cần cài OpenSSL trước, xem hướng dẫn convert SSL ra PFX trên Windows.

Các định dạng chứng chỉ SSL khác nhau chỗ nào

Chứng chỉ SSL luôn chứa cùng một nội dung, khác nhau ở cách đóng gói. PEM là văn bản mã hoá base64 đọc được bằng Notepad. DER là nhị phân của cùng nội dung đó. PFX và P7B là hai kiểu gói nhiều thành phần vào một file, khác nhau ở chỗ PFX chứa được cả khoá riêng còn P7B thì không.

Định dạngĐuôi fileKiểu nội dungChứa khoá riêngMáy chủ hay dùng
PEM.pem .crt .cer .keyVăn bản base64Tách file riêngApache, Nginx
DER.der .cerNhị phânKhôngJava, thiết bị mạng
PKCS#7.p7b .p7cVăn bản base64KhôngTomcat, Java keystore
PKCS#12.pfx .p12Nhị phân có mật khẩuIIS, Exchange, thiết bị cân bằng tải
PKCS#8.pk8Chỉ chứa khoá riêngỨng dụng Java, một số SDK

Cột "chứa khoá riêng" là cột quan trọng nhất. Chuyển từ định dạng có khoá sang định dạng không có khoá thì phần khoá bị bỏ lại, và máy chủ đích sẽ không phục vụ được HTTPS dù đã nạp chứng chỉ. Chiều ngược lại thì phải cấp thêm file khoá riêng vào lệnh.

Cách nhận biết file chứng chỉ đang ở định dạng nào

Đuôi file không đáng tin, vì .cer có thể là PEM cũng có thể là DER, còn .crt thường là PEM nhưng không phải luôn luôn. Cách chắc chắn là mở file bằng trình soạn thảo văn bản và nhìn dòng đầu tiên.

  • Bắt đầu bằng -----BEGIN CERTIFICATE-----: đó là PEM chứa chứng chỉ.
  • Bắt đầu bằng -----BEGIN PRIVATE KEY----- hoặc -----BEGIN RSA PRIVATE KEY-----: đó là PEM chứa khoá riêng.
  • Bắt đầu bằng -----BEGIN PKCS7-----: đó là P7B.
  • Mở ra toàn ký tự lạ không đọc được: đó là nhị phân, tức DER hoặc PFX.

Phân biệt DER với PFX thì thử đọc bằng OpenSSL. Lệnh openssl x509 -inform der -in file.cer -noout -text in ra thông tin chứng chỉ thì đó là DER. Nếu báo lỗi mà openssl pkcs12 -info -in file.cer lại hỏi mật khẩu thì đó là PFX.

Lệnh OpenSSL chuyển đổi giữa PEM, DER và P7B

Ba định dạng này đều chỉ chứa chứng chỉ, không kèm khoá riêng, nên lệnh chuyển giữa chúng ngắn và không hỏi mật khẩu. Chép nguyên lệnh rồi thay tên file cho đúng bộ file của bạn.

Chuyển đổi từ PEM sang DER:

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

Chuyển đổi từ DER sang PEM:

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

Chuyển đổi từ PEM sang P7B:

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

Chuyển đổi từ PKCS7 sang PEM:

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

Chuyển đổi từ CER sang CRT:

openssl x509 -inform PEM -in certificatename.cer -out certificate.crt

Lệnh cuối chỉ đổi tên đuôi file chứ không đổi nội dung, vì CER và CRT ở đây đều là PEM. Nó có ích khi phần mềm đích kiểm đuôi file trước khi nạp và từ chối đuôi lạ.

Lệnh chuyển đổi có kèm khoá riêng sang PFX và PKCS#8

Nhóm lệnh này khác ở chỗ có tham số -inkey hoặc -nocerts, tức là có động tới khoá riêng. Lệnh tạo ra PFX sẽ hỏi mật khẩu xuất, còn lệnh đọc từ PFX sẽ hỏi mật khẩu nhập. Gõ mật khẩu không hiện ký tự trên màn hình là bình thường.

Chuyển đổi từ PFX sang PEM:

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

Chuyển đổi từ CER sang PFX:

openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx

Chuyển đổi từ CRT sang PFX:

openssl pkcs12 -export -out certificatename.pfx -inkey privateKey.key -in certificate.crt

Chuyển đổi từ PFX sang PKCS#8, làm hai lượt:

Bước 1: PFX –> PEM

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

Bước 2: PEM –> PKCS8

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

Chuyển đổi từ P7B sang PFX, cũng hai lượt vì P7B không mang khoá riêng nên phải nạp thêm từ ngoài:

Bước 1: P7B –> CER

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

Bước 2: CER & Private Key –> PFX

openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx

Tham số -nodes ở bước 1 nghĩa là xuất khoá riêng không mã hoá. File tạo ra đọc thẳng được nên đừng để nó nằm trong thư mục dùng chung, xoá đi sau khi hoàn tất.

Cách kiểm tra file sau khi chuyển đổi

Chuyển xong phải mở lại file bằng OpenSSL để chắc nội dung còn nguyên. Lệnh chạy không báo lỗi vẫn có thể cho ra file thiếu thành phần, thường là mất chứng chỉ trung gian hoặc mất khoá riêng.

Với file PEM hoặc CRT, xem thông tin bên trong:

openssl x509 -in certificatename.pem -noout -text

Với file PFX, liệt kê mọi thứ chứa trong đó:

openssl pkcs12 -info -in certificatename.pfx -nodes

Kết quả cần có tên miền đúng ở dòng Subject, ngày còn hiệu lực ở Not After, và với PFX thì phải thấy cả khối khoá riêng lẫn khối chứng chỉ. Muốn chắc chứng chỉ khớp tên miền và còn hạn, xem thêm bài hướng dẫn xác thực chứng chỉ SSL.

Xử lý các lỗi thường gặp khi chuyển đổi chứng chỉ

Ba thông báo dưới đây chiếm phần lớn ca chuyển đổi chứng chỉ SSL thất bại. OpenSSL in lỗi bằng tiếng Anh ngắn gọn, nhìn dòng đầu là biết ngay nguyên nhân.

unable to load certificate. Bạn đang khai sai định dạng đầu vào, thường là dùng lệnh đọc PEM để đọc file DER. Thêm -inform der vào lệnh, hoặc kiểm lại định dạng thật của file theo cách ở phần trên.

No certificate matches private key. Chứng chỉ và khoá riêng không cùng một cặp. So hai chuỗi băm, giống nhau thì đúng cặp:

openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privateKey.key | openssl md5

Mac verify error: invalid password. Sai mật khẩu file PFX. Không có cách khôi phục, phải xin lại mật khẩu từ người tạo file hoặc tạo lại PFX từ bộ file gốc.

Điều cần nhớ khi làm việc với file chứng chỉ

Mỗi lần chuyển đổi chứng chỉ SSL, giữ lại bộ file gốc mà nhà cung cấp gửi về, đừng chỉ giữ file kết quả. Mọi định dạng khác đều dựng lại được từ bộ gốc, nhưng mất khoá riêng thì không có đường quay lại, chỉ còn cách xin cấp lại chứng chỉ với yêu cầu ký mới.

Khoá riêng nên đặt quyền chmod 600 trên Linux và chỉ để tài khoản quản trị đọc được trên Windows. Đây là thành phần duy nhất trong bộ file không được lộ, còn chứng chỉ thì vốn công khai, bất kỳ ai truy cập website cũng tải về được. Chứng chỉ cấp qua đối tác GoGetSSL đều kèm sẵn CA bundle, giữ file đó lại thì các lượt ghép PFX sau không phải đi xin.

Hướng dẫn này có giúp được Anh/Chị không?

Bài khác trong Tên miền & SSL

Xem cả 19 bài
Quản lý DNS cho tên miền: thêm, sửa, xoá bản ghi Cách thêm, sửa và xoá bản ghi A, CNAME, MX, TXT trong vùng DNS của tên miền. Kèm bảng nghĩa từng loại, cách chọn TTL và lệnh kiểm lại sau khi lưu. 11 phút đọc 54 lượt xem Cập nhật 23/08/2026 Convert chứng chỉ SSL sang PFX cho máy chủ IIS File PFX cần chứng chỉ, khoá riêng và chuỗi trung gian. Cách gom đủ ba file rồi ghép sang PFX bằng công cụ trên trình duyệt, kèm cách kiểm tra file kết quả. 7 phút đọc 249 lượt xem Cập nhật 21/08/2026 Kiểm tra SSL đã cài đúng chưa trên website Kiểm tra SSL đã cài đúng chưa gồm xem ổ khoá, hạn chứng chỉ và lỗi nội dung hỗn hợp. Bài này chỉ cách kiểm và xử các lỗi hay gặp sau khi cài SSL. 5 phút đọc 25 lượt xem Cập nhật 20/08/2026 Subdomain là gì và cách tạo tên miền phụ Subdomain là tên miền phụ đặt trước tên chính, tạo miễn phí dưới tên đã có. Bài này giải thích subdomain là gì, dùng làm gì và tạo bằng cách nào. 5 phút đọc 10 lượt xem Cập nhật 19/08/2026 Hướng dẫn xác thực chứng chỉ SSL cho tên miền Ba cách xác minh quyền sở hữu tên miền để nhà cấp phát ký chứng chỉ: hộp thư quản trị, bản ghi CNAME hoặc tệp trên hosting, kèm cách tạo CSR đúng. 11 phút đọc 404 lượt xem Cập nhật 17/08/2026 Kiểm tra thông tin tên miền bằng WHOIS WHOIS cho tra thông tin đăng ký của một tên miền như hạn, nhà đăng ký và nameserver. Bài này chỉ cách tra, đọc kết quả và vì sao vài thông tin bị ẩn. 5 phút đọc 10 lượt xem Cập nhật 17/08/2026

Làm theo vẫn chưa được?

Gửi yêu cầu hỗ trợ, kỹ thuật xem trực tiếp trên dịch vụ của Anh/Chị.

Gửi yêu cầu hỗ trợ