0

サーバーと通信するためのクライアントソフトウェアを構築します.接続はセキュリティで保護されている必要があります(SSL) Linux用のopensslライブラリを使用します.SSLハンドシェイク中にサーバーはクライアント証明書を要求しますが、クライアント証明書を持っていません.ブラウザで接続するときそのサーバーはブラウザが証明書を保持していて、私はそれを見つけました。次のようにソースに入れました:

if (SSL_CTX_use_certificate_file(ctx, "client.crt", SSL_FILETYPE_PEM) <= 0)
{
    ERR_print_errors_fp(stderr);
    exit(1);
}

しかし、サーバーはまだクライアント証明書の要求を送信し、接続を切断します.もう1つのファイルが必要だと思います-送信する必要があるキーファイルですが、どこにあるのかわかりません. 誰でも助けてもらえますか?

4

2 に答える 2

0

Jumbogram が述べたように、ロードしようとしている証明書ファイルに一致する秘密鍵をロードする必要があります。キーとそのキーで署名された証明書が一致しないため、新しいキーを生成してそれを使用することはできません。

代わりに、openssl を使用して新しいキーと証明書のペアを生成し、SSL_CTX_* 関数をそれらに向けます。

于 2012-10-23T14:54:51.237 に答える
0

秘密鍵を見つけることができると仮定すると、int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type.

于 2012-09-12T08:29:46.947 に答える