2366257_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2366257_ja-JP

2366257_ja-JP

SE051 OpenSSL 3.0 プロバイダを Node.js で使用する / URI と参照 PEM の受け渡し (チケットのフォローアップ)

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ハンドシェイクが始まる前にアプリケーションがクラッシュします。

JavaScript
 
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----- ヘッダーがないため、すぐに処理が中断されます。

私たちの質問:

  1. Node.jsをアップデート(例えば、OpenSSL 3.0をネイティブに統合したv18/v20にアップデート)すれば、このURI解析の問題は自動的に解決されるのでしょうか?それとも、NodeのTLSレイヤーは依然としてプロバイダURIを拒否するのでしょうか?

  2. この問題を解決するには、NXPプロバイダーの設定を変更する必要がありますか?プロバイダーコードを改善して、従来の.refpemファイルを解析できるようにするための計画や既存の解決策はありますか?ファイルを直接ダウンロードしますか?Node.jsのような高水準言語がダミーのPEMバッファを渡すことを許可すれば、URIクラッシュの問題を完全に回避できるだろう。

お時間とご指導をいただき、ありがとうございました。

オートモーティブ スマートカードスマート・カードRe: Using SE051 OpenSSL 3.0 Provider with Node.js / Passing URIs vs Reference PEMs (Follow-up to Ticv20のリリースノート/変更履歴を見る限り、node.jsはまだOpenSSL 3.0プロバイダーをサポートしていないようです。彼らは現在、ドキュメントでエンジンコンセプトに依存していることを明確にしています( https://github.com/nodejs/node/pull/53329/changes )。

当時、私は最終的にnode.jsにキーIDをサポートするパッチを適用することになりました。主にOSSL_STORE API( https://docs.openssl.org/3.0/man7/ossl_store/ )を使用することで実現します。https://github.com/nodejs/node/blob/3b19867caaef6b85c65e44dc60274dce2b240d22/src/crypto/crypto_conte...の PEM 関数の代わりに。これにより、あらゆる種類のキーを読み込むことが可能になった。
もちろん、データ型などを一致させるために、呼び出し元や設定構造体にもいくつかの変更が必要でした。
Tags (1)
No ratings
Version history
Last update:
‎05-19-2026 03:33 AM
Updated by: