如果 API 密钥已加密,您可以发送它吗?

如果 API 密钥已加密,您可以发送它吗?

非常基本的问题...试图在明天回去上班之前弄清楚这一点,所以不幸的是我无法访问我的 Powershell 脚本,但如果我不明白的话,我会在明天发布它。

我创建了一个包含加密 API 密钥的文本文件。当我使用应用程序中硬编码的密钥发送 GET 请求时,它按预期工作。但是,当我将加密密钥存储在变量中,然后尝试使用该变量发送 GET 请求时,我收到一条错误消息,提示无法验证密钥。这是因为我必须在发送之前对其进行解密吗?

更新:

仍然不清楚如何解决这个问题。担心如果我解密脚本中的密钥,会出现漏洞。

$key = new-object -typename System.Management.Automation.PSCredential - 
argumentlist $keyFile.username, $keyFile.password 
$secret = new-object -typename System.Management.Automation.PSCredential - 
argumentlist $secretFile.username, $secretFile.password 


$tc='[{"data":"pdnsBlah.domaincontrol.com","name":"- 
","ttl":9999,"type":"NS"}, 
{"data":"pdnsBlah.domaincontrol.com","name":"-","ttl":9999,"type":"NS"}]'

# Event log settings
$eventLog = "Application"
$eventSource = "GoDaddyDNSMonitor"

#check to see if event source exists, if not create one
if (![System.Diagnostics.EventLog]::SourceExists($eventSource))
{
New-EventLog -LogName $eventLog -Source $eventSource

}



#Here is where my issue lies########################################
$newConfig=C:\Users\di203179\Documents\Curl\bin\curl.exe -s -X GET -H 
"Authorization: sso-key $key`:$secret" 
https://api.godaddy.com/...
If ($tc -ne $newConfig)
{
    $Message = "DNS Nameserver @ GoDaddy has changed to " + $newConfig + " 
Application Infrastructure On-call needs to be paged. Details are below."
    Write-EventLog -LogName $eventLog -Source $eventSource -EventID 20000 - 
EntryType Error -Message $Message
    echo "false"
}
else {

    echo "true"
}

感谢您的帮助和耐心。

答案1

好吧,我终于搞清楚了这个问题。非常感谢那些评论并帮助我克服第一个障碍的人。绝对无法将加密文件发送到服务器,而且显然许多服务器不知道如何处理 PSCredential 对象。

详情请见此处:https://blogs.technet.microsoft.com/heyscriptingguy/2013/03/26/decrypt-powershell-secure-string-password/

以下是我解决问题的方法。

$keyObject = new-object -typename System.Management.Automation.PSCredential - 
argumentlist $keyFile.username, $keyFile.password 
$secretObject = new-object -typename System.Management.Automation.PSCredential - 
argumentlist $secretFile.username, $secretFile.password

$newConfig=C:\Users\di203179\Documents\Curl\bin\curl.exe -s -X GET -H "Authorization: 
sso-key 

$($keyObject.GetNetworkCredential().Password):$($secretObject.GetNetworkCredential().Password)" https://api.godaddy.com/... ...

相关内容