Chuyển tới nội dung chính

Lỗi khởi động Nginx SSL_CTX_use_certificate failed sau khi cấu hình chứng chỉ quốc mật, khắc phục thế nào?

Nguyên nhân lỗi

Điều này xảy ra do thư viện OpenSSL ở lớp nền của middleware hiện tại không hỗ trợ thuật toán quốc mật (SM2/SM3/SM4).

OpenSSL tiêu chuẩn không thể nhận dạng định dạng chứng chỉ quốc mật, dẫn đến việc tải chứng chỉ thất bại.

Giải pháp

Cần biên dịch và cài đặt phiên bản OpenSSL hỗ trợ quốc mật (như GmSSL, Tongsuo/Đồng Tỏa và các nhánh OpenSSL hỗ trợ thuật toán quốc mật khác), sau đó dùng phiên bản đó để biên dịch lại Nginx, giúp Nginx hỗ trợ tải chứng chỉ quốc mật.

Các bước thực hiện (tóm tắt):

  1. Tải xuống và biên dịch OpenSSL phiên bản quốc mật (khuyến nghị: Tongsuo/Đồng Tỏa)
  2. Dùng OpenSSL phiên bản quốc mật để biên dịch lại Nginx (--with-openssl=... trỏ đến phiên bản quốc mật)
  3. Cấu hình Nginx với chứng chỉ kép (chứng chỉ quốc mật + chứng chỉ RSA) để đảm bảo tương thích trong mọi tình huống