2012-09-12 244 views
0

我構建了一個與服務器通信的客戶端軟件。連接應該是安全的(SSL) 我使用Linux的openssl庫。在SSL握手期間,服務器詢問我的客戶端證書,但我沒有。我連我的瀏覽器到該服務器的瀏覽器 不斷證書,我發現我it.Than把它放在我的源代碼是這樣的:客戶端證書

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

但服務器仍然給我請求我的客戶證書和下降connection.I假設我需要一個更多的文件密鑰文件,但是我不知道在哪裏可以找到它。 任何人都可以幫忙嗎?

+0

你問社區你的私鑰的價值嗎? – Jumbogram

回答

0

假設你可以找到你的私鑰,你可以簡單地加載它int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type

+0

您的意思是我應該生成自己的密鑰文件嗎?它不起作用。我試過了,因爲客戶端證書和私鑰不匹配。我使用函數SSL_CTX_check_private_key()來查看。 – Lambov

0

正如Jumbogram所述,您必須將匹配的私鑰加載到您嘗試加載的證書文件中。您不能只生成一個新密鑰並使用它,因爲密鑰和使用該密鑰簽名的證書不匹配。

取而代之,使用openssl生成一個新的密鑰和證書對,並將SSL_CTX_ *函數指向它們。