0

我正在尝试使用存储在 Octopus 库中的 pfx 创建一个 jwt 令牌。为此,我必须创建一个 X509Certificate2 对象,它将证书路径和密码作为输入。有人可以建议一种使用powershell的方法吗?

$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certpath,'password')

关于如何访问章鱼中的证书变量,我已经阅读了一些文档,但是如何使用它们来创建 X509Certificate2 的对象。 https://octopus.com/docs/deployment-process/variables/certificate-variables

4

2 回答 2

1

在浏览了 Microsoft 和 Octopus 文档后,我设法让它工作。Octopus 将证书作为 base64 编码字符串存储在名为 Cert.Pfx 的变量中,X509Certificate2 的构造函数将字节数组作为第一个参数。因此,第一步我只需要将 base64 编码的字符串转换为字节数组。

$certbytearray=[System.Convert]::FromBase64String($OctopusParameters["Cert.Pfx"])
$CertPassKey="password"
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certbytearray,$CertPassKey)
于 2019-03-30T19:36:21.537 回答
0

@Biplab 感谢您发布您的解决方案;它为我节省了很多头痛!我在没有密码的情况下遇到了稍微不同的情况,我发现当我尝试在没有密码的情况下调用时,X509Certificate2 构造函数将字节数组解释为文件名,即使文档表明它应该只接受一个字节数组。

我通过导入来让它在没有密码的情况下工作。

$certbytearray=[System.Convert]::FromBase64String($OctopusParameters["mycert.Pfx"])
$mycert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$mycert.import($certbytearray)
write-host $mycert.ThumbPrint
if ($mycert.HasPrivateKey)
{ write-host "has private key"}
于 2020-06-16T08:57:22.393 回答