中国商用暗号(SM)証明書を設定した後、Nginx 起動時に SSL_CTX_use_certificate failed エラーが発生する場合の解決方法
エラーの原因
現在のミドルウェアの基盤となる OpenSSL ライブラリが中国商用暗号(SM)アルゴリズム(SM2/SM3/SM4)に対応していないことが原因です。
標準の OpenSSL は中国商用暗号(SM)証明書のフォーマットを認識できないため、証明書の読み込みに失敗します。
解決方法
中国商用暗号(SM)対応版 OpenSSL(GmSSL、銅鎖/Tongsuo など中国商用暗号(SM)アルゴリズムをサポートする OpenSSL の派生版)をコンパイルしてインストールし、そのバージョンを使用して Nginx を再コンパイルすることで、中国商用暗号(SM)証明書の読み込みに対応させる必要があります。
手順(概要):
- 中国商用暗号(SM)対応版 OpenSSL をダウンロードしてコンパイルします(推奨:銅鎖 Tongsuo)
- 中国商用暗号(SM)対応版 OpenSSL を使用して Nginx を再コンパイルします(
--with-openssl=...を中国商用暗号(SM)対応版に指定してください) - Nginx にデュアル証明書(中国商用暗号(SM)証明書 + RSA 証明書)を設定し、すべてのシナリオで互換性を確保します