簡體   English   中英

如何使用 .cer 客戶端證書來執行這樣的 cURL 請求?

[英]How to use a .cer client certificate in order to perform a cURL request like this?

我不太喜歡 SSL 證書,並且我遇到了以下與客戶端一起工作的情況。

他們要求我生成一個服務器根 CA,我通過以下命令使用 openSSL 生成它:

#Generate Server RootCA
openssl req -newkey rsa:2048 -keyform PEM -keyout rootca.key -x509 -days 3650 -outform PEM -out rootca.cer

所以基本上這個命令生成了rootca.cer證書和rootca.key文件。 我只向他們提供了他們安裝在他們的系統上(在平衡器\\防火牆上)的rootca.cer證書。

在這個系統上部署了一些 REST API。 我必須開發一個調用這些 API 的客戶端。 所以現在我想嘗試從 shell 執行cURL調用。 據我所知,我必須使用以前的根 CA 來生成用於執行調用的客戶端證書。 這是對的嗎?

所以我使用這個命令創建了這個客戶端證書:

#Generate Client Certiicate
openssl genrsa -out client.key 2048

#Generate signing request
openssl req -new -key client.key -out client.req -sha256

#Generate Client  certificate
openssl x509 -req -in client.req -CA rootca.cer -CAkey rootca.key -set_serial 101 -extensions server -days 3650 -outform PEM -out client.cer -sha256

現在我有這個client.cer文件,它應該是客戶端證書。

所以基本上他們給了我一個像這樣的cURL例子:

curl --location --request GET "https://apiName.companyName.it/ws-
application/service/distretti/_/_/_"

但我收到以下錯誤:

curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to annuariows.notariato.it:443 

我認為這是因為我不得不對 cURL 說使用以前的客戶端證書來執行我的請求。

那么我該怎么做才能使用這個client.cer才能正確執行我的 API 調用?

您可以使用參數 --cert 和 --key 來指定證書。

我之前曾在與您類似的環境中使用過此語句:

$ curl -v -i "https://host.tld" --cert "certificate_pem_format.crt" --key "keyfile.key"

-v 選項用於獲取詳細輸出,以便在必要時進行進一步調試。 -i 選項用於顯示響應頭,也有利於調試。 另請查找: CURL 選項列表

我懷疑您指定的此錯誤是否是由證書引起的。 如果您想調試證書問題,請嘗試使用 OpenSSL:

$ openssl s_client -connect host.tld:443

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM