我嘗試在 Windows 上使用 curl 來發布時間戳請求。需要身份驗證,所以我使用 p12 檔案。我收到錯誤訊息,但 p12 檔案的密碼正確。
命令:
curl --insecure --cert-type P12 --cert my.p12:mypassword -X POST -d @mytest.req <myTSURL>
錯誤資訊:
curl:(58)無法決議PKCS12檔案,檢查密碼,OpenSSL錯誤錯誤:0308010C:數字信封例程::不支持
卷曲-V
curl 7.83.1 (x86_64-pc-win32) libcurl/7.83.1 OpenSSL/3.0.2 (Schannel) zlib/1.2.12 brotli/1.0.9 libidn2/2.3.2 libssh2/1.10.0 nghttp2/1.47.0 ngtcp2/0.5.0 nghttp3/0.4.1 libgsasl/1.10.0
Release-Date: 2022-05-11
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli gsasl HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz MultiSSL NTLM SPNEGO SSL SSPI TLS-SRP UnixSocket
uj5u.com熱心網友回復:
Meta:這不是真正的編程或開發,在超級用戶或 security.SX 上可能會更好,但隨著 OpenSSL 3.0 的傳播,這個問題可能會變得更加普遍,我想找出答案。
默認情況下,OpenSSL 3.0.x 不支持舊的/不安全的演算法,但直到最近大多數創建 PKCS12(包括 OpenSSL 1.xx)的軟體都將這種演算法用于 certbag,即使用 RC2 的 PKCS12 定義的 PBE- 40 - 有些仍然至少有時會這樣做,例如默認情況下的 Windows 10 證書匯出對話框。要檢查這個
openssl pkcs12 -in my.p12 -info -nokeys -nocerts
# in 3.0.x add -provider legacy or just -legacy
# to avoid prompt use -password or -passin, see man pages
我希望輸出將包括
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
查看您的 curl 是否可以選擇指定 OpenSSL 3.0.x 提供程式,如果有,請指定“舊版”。否則,將您的 pkcs12 轉換為
# 3.0.x
openssl pkcs12 -in old -nodes -provider legacy | openssl pkcs12 -export -out new
# or slightly simpler
openssl pkcs12 -in old -nodes -legacy | openssl pkcs12 -export -out new
# 1.x.x
openssl pkcs12 -in old -nodes | openssl pkcs12 -export -descert -out new
轉換會丟失現有檔案中設定的任何“友好名稱”。對于 curl 和可能的大多數其他程式,這無關緊要,但是如果您想將同一個檔案與友好名稱確實重要的東西一起使用,請添加-name $name該-export部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/492275.html
