問題タブ [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.
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 実装を介して暗号化/復号化を処理します。
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」オプションを使用して変数を設定する通常の方法が見つかりませんでした。
回避策は、不足しているヘッダーをソース ツリーからターゲット ドライブに手動でコピーすることですが、私はこの「解決策」が好きではありません。
ssl - エクスポート可能な秘密鍵なしで ECDHE ハンドシェイクを行う方法
署名の作成と署名の検証機能を含む ECDSA_METHOD を実装する OpenSSL エンジンを構築しています。ECDHE 秘密鍵は署名の作成にのみ使用されるため、エンジンからキーをエクスポートして他の場所に提示する必要はありません。
ただし、SSL_set_private_key 関数を介して SSL_Context に秘密鍵を提供しない場合、SSL ハンドシェイクは次のエラーで失敗します。
また、SSL_set_private_key 関数にモック キー (証明書の公開キーに関連しないもの) を提供しようとしましたが、この関数は、秘密/公開キーが一致するかどうかを検証し、一致しない場合は証明書が正しくないというエラーをスローします。 t。
openssl では、場合によってはこの検証をバイパスできるようです。たとえば、これは ssl/ssl_rsa.c で見つけたものです。
ECキーに似たものが必要だと思いますが、どこにも見つかりませんでした。他のソリューションも高く評価されます。
openssl - openssl エンジンの参照カウントが非常に多いのはなぜですか?
openssl エンジン API には ENGINE_finish(e) と呼ばれるクリーンアップ コマンドがあり、エンジン e に実装および登録された「finish」コマンドを呼び出します。
エンジンの "finish" コマンドは、エンジンへの参照カウントが 1 の場合にのみ呼び出されます。なぜ私の場合は 3 なのかわかりません。libcurl を使用すると、呼び出し後に参照カウントも 1 ずつ増加します。メソッド POST で、4 になります。
「終了」コマンドが呼び出されることを確認するには、以下のような醜いループを実行する必要があります。他のコンポーネントに潜在的な損傷を与える可能性があるかどうかはわかりません。
エラーを示すために最初のコードを削除し、非常に単純にしました。「ダミー」エンジンのコードとクライアントのコードは次のとおりです。上記の醜いコードを使用せずに ENGINE_finish を機能させる方法と、ref カウントが 1 であるはずなのに 3 に等しい理由を教えてください。
ダミーエンジン:
クライアントのコード:
出力は次のようになります。初期状態では 0 で、その後何らかの形で 3 にバンプされます。
openssl - openssl バージョン 1.0.1x で openssl CAPI Engine dll が生成されない
capi engine
Windows証明書ストアを使用して使用しようとしています。使用しているopensslのバージョンがござい1.0.1x
ます。
ACC。バージョンについての私の知る限り0.9.8
、CAPIエンジンはデフォルトではコンパイルされていないため、スイッチを使用しenable-capieng
てコンパイルする必要があり、エンジンdllが生成されないため、組み込まれますlibeay32.dll
しかし、では、デフォルトでコンパイルされ、エンジン dll ieが生成されるv1.0.1x
と思います。しかし、私の場合は生成されません。では、これにはどのような理由が考えられるでしょうか? これでもスイッチを使用する必要がありますか?CAPI engine
capi.dll
enable-capieng
apache - 特定の OpenSSL エンジンを使用するように Apache サーバーを構成する
OpenSSL RSA エンジン (つまり.so
ファイル) と、SSL モードで構成された Apache サーバーが動作しています。
Apache で RSA エンジンからの RSA 実装を使用するにはどうすればよいですか? つまり、エンジン (.so
ファイル)をどこに置くか、openssl.cnf
ファイルを変更する方法、および Apache をビルドする方法を教えてください。