問題タブ [openssl-engine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
678 参照

ssl - ENGINE コンテキストを SSL_CTX にアタッチする

and/or構造体ENGINE*に実装をアタッチする可能性があるかどうか疑問に思っています。私が達成したいのは、OpenSSL に組み込まれているデフォルトの暗号化操作で設定されるものと、専用の HSM を暗号化レイヤーとして使用するものを持つことです。SSL_CTX*SSL*SSL_CTX*SSL_CTX*

これを達成できる方法はありますか?私が読んだことから、いくつかの暗号操作(ランダム、暗号、mdなど)を登録してデフォルトに設定できますが、組み込みのものではなく、設定されたものが使用されます。

たとえばEVP_CipherInit_ex、3 番目のパラメータ an がありENGINE*ます。EVP_CIPHER_CTX*この方法で初期化された暗号化/復号化は、ENGINE 実装を介して暗号化/復号化を処理します。

0 投票する
0 に答える
163 参照

openssl - OpenSSL ビルドで ecs_locl.h および ech_locl.h ヘッダーをインストールするには?

「struct ecdsa_method」と「struct ecdh_method」を定義する件名の 2 つのヘッダーは、従来のコマンドを使用して openssl をビルドおよびインストールする場合、ターゲット ディレクトリにコピーされません。

ただし、ECDSA_METHOD や ECDH_METHOD など、これらの構造を使用する型は、ターゲット ディレクトリにコピーされる ecdsa.h で定義されます。上記の型のいずれかを使用するコードをコンパイルしようとすると、紛らわしい「不完全な変数定義」エラーが発生します。ECDSA および ECDH メソッドを実装して openssl エンジンをビルドしようとすると、必然的にこのエラーに遭遇します。

config によって生成された Makefile を調べたところ、インストール プロセスで使用される EXHEADERS という変数があることがわかりましたが、「config」オプションを使用して変数を設定する通常の方法が見つかりませんでした。

回避策は、不足しているヘッダーをソース ツリーからターゲット ドライブに手動でコピーすることですが、私はこの「解決策」が好きではありません。

0 投票する
2 に答える
292 参照

ssl - エクスポート可能な秘密鍵なしで ECDHE ハンドシェイクを行う方法

署名の作成と署名の検証機能を含む ECDSA_METHOD を実装する OpenSSL エンジンを構築しています。ECDHE 秘密鍵は署名の作成にのみ使用されるため、エンジンからキーをエクスポートして他の場所に提示する必要はありません。

ただし、SSL_set_private_key 関数を介して SSL_Context に秘密鍵を提供しない場合、SSL ハンドシェイクは次のエラーで失敗します。

また、SSL_set_private_key 関数にモック キー (証明書の公開キーに関連しないもの) を提供しようとしましたが、この関数は、秘密/公開キーが一致するかどうかを検証し、一致しない場合は証明書が正しくないというエラーをスローします。 t。

openssl では、場合によってはこの検証をバイパスできるようです。たとえば、これは ssl/ssl_rsa.c で見つけたものです。

ECキーに似たものが必要だと思いますが、どこにも見つかりませんでした。他のソリューションも高く評価されます。

0 投票する
1 に答える
572 参照

openssl - openssl エンジンの参照カウントが非常に多いのはなぜですか?

openssl エンジン API には ENGINE_finish(e) と呼ばれるクリーンアップ コマンドがあり、エンジン e に実装および登録された「finish」コマンドを呼び出します。

エンジンの "finish" コマンドは、エンジンへの参照カウントが 1 の場合にのみ呼び出されます。なぜ私の場合は 3 なのかわかりません。libcurl を使用すると、呼び出し後に参照カウントも 1 ずつ増加します。メソッド POST で、4 になります。

「終了」コマンドが呼び出されることを確認するには、以下のような醜いループを実行する必要があります。他のコンポーネントに潜在的な損傷を与える可能性があるかどうかはわかりません。

エラーを示すために最初のコードを削除し、非常に単純にしました。「ダミー」エンジンのコードとクライアントのコードは次のとおりです。上記の醜いコードを使用せずに ENGINE_finish を機能させる方法と、ref カウントが 1 であるはずなのに 3 に等しい理由を教えてください。

ダミーエンジン:

クライアントのコード:

出力は次のようになります。初期状態では 0 で、その後何らかの形で 3 にバンプされます。

0 投票する
0 に答える
360 参照

openssl - openssl バージョン 1.0.1x で openssl CAPI Engine dll が生成されない

capi engineWindows証明書ストアを使用して使用しようとしています。使用しているopensslのバージョンがござい1.0.1xます。

ACC。バージョンについての私の知る限り0.9.8、CAPIエンジンはデフォルトではコンパイルされていないため、スイッチを使用しenable-capiengてコンパイルする必要があり、エンジンdllが生成されないため、組み込まれますlibeay32.dll

しかし、では、デフォルトでコンパイルされ、エンジン dll ieが生成されるv1.0.1xと思います。しかし、私の場合は生成されません。では、これにはどのような理由が考えられるでしょうか? これでもスイッチを使用する必要がありますか?CAPI enginecapi.dllenable-capieng

0 投票する
2 に答える
6063 参照

apache - 特定の OpenSSL エンジンを使用するように Apache サーバーを構成する

OpenSSL RSA エンジン (つまり.soファイル) と、SSL モードで構成された Apache サーバーが動作しています。
Apache で RSA エンジンからの RSA 実装を使用するにはどうすればよいですか? つまり、エンジン (.soファイル)をどこに置くか、openssl.cnfファイルを変更する方法、および Apache をビルドする方法を教えてください。

0 投票する
0 に答える
600 参照

openssl - Cavium による OPENSSL

Cavium は、ハードウェアのパフォーマンスを向上させるために構成された OPENSSL を提供します。これを使用するには、暗号化操作のオフロードによって CPU 使用率を下げる必要があります。標準の OPENSSL をインストールするのと同じように、Linux OS (Cavium ハードウェア) に Cavium OPENSSL Toolkit をインストールできるかどうかお尋ねしたいと思います。または、この Cavium OPENSSL を使用する唯一の方法は、単純なエグゼクティブ アプリケーション/ユーザー スペースを作成し、提供された OPENSSL を API として使用することです。

Cavium OPENSSL に関する詳細 (readme、チュートリアル、リンクなど) を案内し、共有してください。

よろしく

0 投票する
0 に答える
1055 参照

openssl - openssl を使用して HSM からキーをリロードする方法は?

pkcs11 openssl エンジン経由で HSM を使用しています。 ENGINE_load_private_key()使用するキーをロードするために使用されます。キーペアの生成後を除いて、正常に動作します。

HSM への新しいキー ペアを生成した後ENGINE_load_private_key()も、古いキーが返されます。

明らかに、後で を呼び出すとENGINE_load_private_key()、HSM からキーが読み取られません。代わりENGINE_load_private_key()に、キャッシュされた値を返すようです。

openssl に HSM から新しいキーを読み取らせ、HSM に存在しない古いキーを返さないようにする方法はありますか?

このコードは、問題を解決するために使用されました。

結果: HSM のキーは変更されましたが、openssl はまだ古いキーを返します:

いくつかのプログラムは、HSM からの鍵ペアを使用します。また、これらのプログラムは、TLS のために他の鍵ペアも積極的に使用します。したがって、プロセスを再起動することは解決策ではありません。

0 投票する
0 に答える
410 参照

c - RSA 暗号化と BSD cryptodev エンジン

OpenSSL を使用して、Linux で実行されている組み込みシステムで文字列を暗号化しようとしています。システムは imx6ul マイクロプロセッサを使用しています。ハードウェア暗号化エンジンで構成されています。

コードで RSA_public_encrypt() 関数を呼び出すと、エラーが発生します。

また、組み込みシステムの起動時にロード中の cryptodev ドライバーを削除してからプログラムを実行すると、正常に動作します。しかし、システム内の他の操作には cryptodev サポートが必要です。

これが私のコードです

cryptodev エンジンを使用しないように RSA_public_encrypt() 関数を指定する方法はありますか?

0 投票する
1 に答える
2422 参照

c - コマンドラインからのカスタム openSSL エンジンのテスト

簡単な質問: コマンド ラインから作成しているカスタム openSSL エンジンの機能を確認するにはどうすればよいですか?

現在、私はこのすばらしいチュートリアルに従っており、テスト プログラム (ソース コードはこちら、test/wssha256engine_test.c にあるテストプログラム) を使用してエンジン (すべて 2 のダイジェスト値を返す) を正常に実行できます。

ただし、理由により、openssl コマンド ライン インターフェイスを使用して、先ほど書いたエンジンを実行し、md5 ではなく sha256 を使用して、この他のチュートリアルのようにランダムな文字列のダイジェストを計算させたいと思います。

しかし、これを実行しようとすると、エンジンが読み込まれず、ダイジェストの NID が存在しないというエラーが表示され、代わりに標準アルゴリズムで文字列がハッシュされます。

コマンド ラインでエンジンを使用できないのに、それをロードする C プログラムを作成できるのはなぜですか? また、エンジンを使用してコマンド ラインからダイジェストを計算するにはどうすればよいでしょうか?

注: コマンド ラインからエンジンをロードすることはできますが、使用することはできません。