SSL
OpenSSL API を使用して接続を作成しています。SSL ハンドシェイクでわかるように、一連の証明書認証はサーバーまたはクライアントに対して行われます。クライアント証明書認証のために、クライアントの証明書と関連する秘密鍵が に保存されるようになりましたWindows Certificate Store
。
この証明書は、それらを形式private key
に結合した後にストアにインポートされ、そのファイルは Windows 証明書ストアにインポートされます。スナップインを使用してこの pfx ファイルをインポートすると、秘密鍵を作成するかどうかを尋ねられます。これで、SSL 接続を行うために OpenSSL が登場します。pfx
pfx
mmc
exportable
そのためには、SSL_CTX
すべての接続関連のプロパティがロードされるオブジェクトを作成する必要があります。Windows証明書ストアから秘密鍵をSSL_CTX
オブジェクトにロードするためexportable
に、Crypto API
. しかし、秘密鍵をエクスポート可能にマークすることは意味がないと思います。これはセキュリティ違反です。
秘密鍵は常にそのようにマークさNon-Exportable
れるため、SSL 接続を確立するために Windows 証明書ストアから SST_CTX オブジェクトに秘密鍵を直接読み取ってロードできる OpenSSL のメソッドまたは API などはありますか。
これが機能する方法があることは間違いありませんが、取得できません。私はこれをたくさん探しましたが、必要なものを手に入れませんでした。
要約された質問: 証明書ストアには、多くの証明書と関連する秘密鍵が保持されています。SSL 接続を確立するときに、証明書と秘密鍵はどのようにアクセスされますか?
編集:私は呼ばれるopensslエンジンAPIを通過しました
`EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id,
UI_METHOD *ui_method, void *callback_data);`
key_id
これで秘密鍵を取得するにはどうすればよいですか。また、この API は内部的に暗号 APICryptExportKey
と呼ばれ、秘密鍵がマークされている場合、この API は失敗すると思いますnon-exportable
。