[英]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.