NXPサポートチームの皆様、こんにちは。
以前のスレッドで提起された同様の問題についてフォローアップしています。https ://community.nxp.com/t5/Secure-Authentication/OpenSSL-doesn-t-handle-refpem-key-correctly-nxp-scheme...
そのチケットで、 @Kan_Li は@tksecに .refpem について説明しました。このキーフォーマットは、主に従来のOpenSSLエンジンで使用されます。しかし、OpenSSL 3.0プロバイダーとNode.jsの統合に関する疑問は未解決のままだった。
当社は、#SE051セキュアエレメントを使用したiWaveボード上で開発を行っています。私たちは、Node.jsアプリケーションと最新のOpenSSLプロバイダーを使用して、mTLS(クライアント認証)接続を確立しようとしています。
私たちの環境:
セキュアエレメント: SE051バリアントC
ミドルウェア/SDK: Plug & Trust MW v4.7.1
ハードウェアプロトコル:バージョン7(SCP03有効)
Node.js バージョン: v16.11.1
OpenSSL バージョン: 3.0.x
OpenSSL 3.0ではエンジンが非推奨になったため、最新のse05x OpenSSLプロバイダ(libsssProvider.so)を使用する必要があります。従来のe_sssエンジンの代わりに。
根本的な問題:前のスレッドで@tksec が指摘したように、Node.js アプリケーションは PEM_read_bio_PrivateKey のような関数を使用しますが、これらの関数は厳密に標準の PEM 形式の文字列/バッファを期待しています。
最新の OpenSSL 3.0 sssProvider では、キーをダイレクト プロバイダー URI (例: "nxp:0x7D000002" または "nxp:/path/to/tls_client_key_ref.pem") として渡す必要があります。
このURIをNode.jsのhttps.Agentに渡そうとすると、TLSハンドシェイクが始まる前にアプリケーションがクラッシュします。
const https = require('https'); const agent = new https.Agent({ cert: fs.readFileSync('device_cert.pem'), key: "nxp:0x7D000002", // Fails: Node.js expects a raw PEM buffer here rejectUnauthorized: true }); // Error: ERR_OSSL_PEM_NO_START_LINE
Node.jsは、キーパラメータをOpenSSLに渡す前に検証します。「nxp:」には -----BEGIN PRIVATE KEY----- ヘッダーがないため、すぐに処理が中断されます。
私たちの質問:
Node.jsをアップデート(例えば、OpenSSL 3.0をネイティブに統合したv18/v20にアップデート)すれば、このURI解析の問題は自動的に解決されるのでしょうか?それとも、NodeのTLSレイヤーは依然としてプロバイダURIを拒否するのでしょうか?
この問題を解決するには、NXPプロバイダーの設定を変更する必要がありますか?プロバイダーコードを改善して、従来の.refpemファイルを解析できるようにするための計画や既存の解決策はありますか?ファイルを直接ダウンロードしますか?Node.jsのような高水準言語がダミーのPEMバッファを渡すことを許可すれば、URIクラッシュの問題を完全に回避できるだろう。
お時間とご指導をいただき、ありがとうございました。