使用 Landscape Python API 时出现证书问题。

使用 Landscape Python API 时出现证书问题。

有人能帮我解决一些证书问题吗?我正在使用 Landscape,并尝试使用 Python API,但出现 CA 不匹配的情况,但我已经下载了 .pem,并将脚本指向 .pem 的位置。我收到 403 和错误:消息:{“message”:“我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。”,“error”:“SignatureDoesNotMatch”}

尝试在没有 CA 的 LAN 上进行一些测试,脚本正在运行 Landscape 的服务器上。这是我的 python 脚本的内容,显然关键信息已更改。

    #!/usr/bin/python
import os, json, sys
from landscape_api.base import API, HTTPError

# change these accordingly
uri = "https://placeholder.bla"
key = "VQ6PP8Vxxxxxx971NHRY"
secret = "RZ+IOK0s8+UQkRWfsxxxxxxxxLhSFKDwIf5Df"
ca = "~/api/key.pem"

api = API(uri, key, secret, ca)
try:
    computers = api.get_computers(query="alert:security-upgrades")
except HTTPError, e:
    print ("\nGot server error:\n"
           "Code: %d\n"
           "Message: %s\n") % (e.code, e.message)
    sys.exit(1)

if len(computers) == 0:
   print "No computers have pending security upgrades."
else:
    for computer in computers:
        print "Id:", computer["id"]
        print "Title:", computer["title"]
        print "Hostname:", computer["hostname"]
        print "Last ping:", computer["last_ping_time"]
        print "Memory:", computer["total_memory"]
        if computer["reboot_required_flag"]:
            print "Needs to reboot!"
        print

答案1

确保您的 API 端点 URI 是确切地如 Landscape 服务器中所示。通常,它将以/api/(包括尾部斜杠)结尾。当然,访问密钥是正确的。

答案2

您实际使用的是 吗~/api/key.pem?您可能需要在其周围加上一个os.path.expanduser,或者提供完整路径。

相关内容