我觉得我快要疯了。
我正在尝试(使用 python 脚本)自动化更新和上传 FortiWeb 代理(版本为 7.0.6)中所有 SSL 证书的机械任务。
我设法自动化从 SSL 存储证书下载的部分。
现在我希望将所有本地保存的证书和密钥上传到代理上。
这就是乐趣的开始。
这里是API文档:https://fndn.fortinet.net/index.php?/fortiapi/939-fortiweb/2535/939/system/
请求的URL:
https://<IP-ADDRESS>:<PORT>/api/v2.0/cmdb/system/certificate.local
请求的标头:
header = {
"Content-Type": "application/json",
"Authorization": authToken
}
请求正文:
data = {
"data": {
"name": "test_cert",
"type": "certificate",
"status": "ok",
"comment": "",
"flag": 0,
"is-hsm": "no",
"partition-number": "",
"certificate": "-----BEGIN CERTIFICATE----- <PEM CERTIFICATE> ----END CERTIFICATE----",
"private-key": "-----BEGIN PRIVATE KEY----- <PEM KEY> -----END PRIVATE KEY-----",
"passwd": ""
}
}
POST 请求:
requests.post(URL, json=data, headers=header, verify=False)
由于官方文档仅表明“证书”和“私钥”密钥对应的值是PEM格式的字符串,因此我只是复制并粘贴了.crt文件和.key文件的值。
但是我收到此错误:
{ "results": { "errcode": -7721: Invalid certificate } }
我可以保证证书是有效的。 此外,GET 方法按预期工作:它返回所有已上传的证书。
我尝试了这些组合。
with open("certfile.crt", "rb") as read: cert = base64.urlsafe_b64encode(read.read(-1)).decode()
https://<IP-ADDRESS>:<PORT>/api/v2.0/system/certificate.local.import_certificate
我总是收到“错误 500 内部服务器错误”,错误代码:-7721 或 -651
还有什么我可以尝试的吗?
非常感谢。
我也得到了同样的东西,并且此时我自己开了一张票。