带有.PEM证书的SOAP请求

时间:2015-12-16 20:50:03

标签: powershell powershell-v4.0

希望有人可以帮助我在这里,我的google-fu在这个问题上并不是很繁荣。我是一个新手PowerShell用户,但有几个脚本在我的腰带..希望有人遇到过此之前或者可能知道如何让这个工作......

我正在尝试测试需要证书的SOAP请求。如果我不需要,我宁愿不将证书导入证书库。在尝试将其编写为测试时,我将.pem证书文件导入脚本以用于请求时遇到了麻烦

PARAM(
      $url = "https://URL",
      $soaptxt = "soap.txt",
      $cert = "cert.pem"
)

clear

$soapcert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($cert)
$out = Invoke-WebRequest $url -Method post -ContentType 'text/xml' -InFile $soaptxt -Certificate $soapcert
$out

我已经尝试了几种不同的组合,让它能够正常工作但仍然遇到同样的异常..

  

New-Object:使用“1”参数调用“.ctor”的异常:“不能   找到请求的对象。 “ 在   F:\开发\ PowerShell的\脚本\ SOAPRequest \ SOAPRequestTest.ps1:19   焦炭:13   + $ soapcert = New-Object System.Security.Cryptography.X509Certificates.X509Certifi ...   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~       + CategoryInfo:InvalidOperation:(:) [New-Object],MethodInvoca tionException       + FullyQualifiedErrorId:ConstructorInvokedThrowException,Microsoft.Power
  Shell.Commands.NewObjectCommand

非常感谢任何帮助!

谢谢!

1 个答案:

答案 0 :(得分:0)

查看dotNet类from the MDSN Docs的描述,看起来你正试图使用​​这种形式的构造函数:

X509Certificate2(ByteArray[])
Initializes a new instance of the X509Certificate2 class using information from a byte array.

此方法希望信息位于字节数组中,而不是指向文件的指针。首先尝试将文件作为字节数组读取,然后查看是否有效。

$pathtoPem= c:\temp\cert.pem
$cert = [System.IO.File]::ReadAllBytes($PathToPem)