繁体   English   中英

Python的Windows Azure服务管理存在证书问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM