![](/img/trans.png)
[英]Python HTTPS against Azure service management API fails on Windows
[英]Windows Azure Service Management from Python has certificate issue
我正在使用Ubuntu 12.04 LTS。 在Windows Azure帐户中上传了.cer文件。
我的python脚本是:
#!/usr/bin/python
from azure import *
from azure.servicemanagement import *
azureId = "XXXXXXXXXXXXXXXXXXXXX";
certificate_path= "/home/dharampal/Desktop/azure.pem";
sms = ServiceManagementService(azureId,certificate_path)
print sms
result = sms.list_locations()
print result
当脚本在该时间运行时,获取ServiceManagementService对象,但抛出与证书相关的错误。
脚本的输出为:
<azure.servicemanagement.servicemanagementservice.ServiceManagementService object at 0xb7259f2c>
Traceback (most recent call last):
File "available_locations_list.py", line 13, in <module>
result = sms.list_locations()
File "/usr/local/lib/python2.7/dist-packages/azure/servicemanagement/servicemanagementservice.py", line 796, in list_locations
Locations)
File "/usr/local/lib/python2.7/dist-packages/azure/servicemanagement/servicemanagementclient.py", line 96, in _perform_get
response = self._perform_request(request)
File "/usr/local/lib/python2.7/dist-packages/azure/servicemanagement/servicemanagementclient.py", line 83, in _perform_request
resp = self._filter(request)
File "/usr/local/lib/python2.7/dist-packages/azure/http/httpclient.py", line 144, in perform_request
self.send_request_headers(connection, request.headers)
File "/usr/local/lib/python2.7/dist-packages/azure/http/httpclient.py", line 125, in send_request_headers
connection.endheaders()
File "/usr/lib/python2.7/httplib.py", line 954, in endheaders
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 814, in _send_output
self.send(msg)
File "/usr/lib/python2.7/httplib.py", line 776, in send
self.connect()
File "/usr/lib/python2.7/httplib.py", line 1161, in connect
self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)
File "/usr/lib/python2.7/ssl.py", line 381, in wrap_socket
ciphers=ciphers)
File "/usr/lib/python2.7/ssl.py", line 141, in __init__
ciphers)
ssl.SSLError: [Errno 336265218] _ssl.c:351: error:140B0002:SSL routines:SSL_CTX_use_PrivateKey_file:system lib
我在哪里做错了? 如果有人遇到相同的问题并得到解决,请帮助我。 谷歌,但无法找到解决方案。
这是我在Ubuntu 12.04 LTS上遇到的确切错误,如果certificate_path
不正确(目录或文件名中的错误)。 因此,请仔细检查您的正确性。
您的代码对我来说看起来不错,所以我不确定为什么会出现故障,但是我可以为您提供Python中的一个完整示例,该示例创建一个pem,上传cer,并显示一些Python服务管理代码。
可能是您的pem是如何创建的。 Python Service Management通过使用以下命令创建的pem和cer为我工作(然后将相应的cer上传到Windows Azure Management Cert Store):
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem -subj "/CN=This Name Shows in the Portal"
openssl x509 -inform pem -in mycert.pem -outform der -out mycert.cer
请注意,“-subj”参数很容易控制Windows Azure证书门户中显示的文本,因此您可以区分它们。
Windows Azure论文列表也更长,其中一些显示了使用Python的示例(包括上面引用的示例)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.