gpt4 book ai didi

amazon-web-services - 使用具有多个证书的 Invoke-WebRequest 在 PowerShell 中重写 CURL

转载 作者:行者123 更新时间:2023-12-03 00:07:30 24 4
gpt4 key购买 nike

我使用以下 curl 命令将一些数据从 IoT 事物发布到 AWS 的 IoT Core 服务。
curl.exe --tlsv1.2 --cacert root-CA.pem --cert certificate.pem --key private.pem -X POST -d "$($Body)" "https://ats.iot.eu-west-1.amazonaws.com:8443/topics/example/1"
该命令完美运行,但我想利用 Invoke-WebRequest 的功能命令行开关。不幸的是,我无法弄清楚如何重写 curl 命令,主要是因为两个证书和 key 文件。

到目前为止,我所拥有的是:

# Set TLS to use version 1.2 (required by AWS)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

# Make the request
Invoke-WebRequest -Method POST -UseBasicParsing -Uri "https://ats.iot.eu-west-1.amazonaws.com:8443/topics/example/1" -Certificate (Get-PfxCertificate .\certificate.pem) -Body "Some example data!" -ContentType "application/json"


上面命令的输出是:
Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel.
如何像在 CURL 命令中一样使用 key 和根 CA 证书?

最佳答案

我通过使用 OpenSSL.exe 创建一个包含私钥和客户端证书的 PFX 证书来完成这项工作(遵循 Tomalak 在 OP 评论中的提示)。
openssl.exe pkcs12 -export -in ..\certificate.pfx -inkey ..\private.pem.key -out ..\CertificateWithKey.pfx
然后,我可以根据需要使用 Invoke-WebRequest 与 AWS 服务进行通信:
Invoke-WebRequest -Method POST -UseBasicParsing -Uri $URI -Certificate (Get-PfxCertificate CertificateWithKey.pfx) -Body "{'message':'Hey hey!'}" -ContentType application/json

关于amazon-web-services - 使用具有多个证书的 Invoke-WebRequest 在 PowerShell 中重写 CURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57679101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com