我正在尝试通过 Python 向 Azure 发出请求以列出我拥有的存储服务。
我的基本代码是这样的:
import httplib
conn = httplib.HTTPSConnection('management.core.windows.net')
conn.request('GET', '/[subscription id]/services/storageservices/')
response = conn.getresponse()
print response.status response.reason
显然,因为我没有进行身份验证,所以打印出来403 Forbidden
所以,我按照http://msdn.microsoft.com/en-us/library/windowsazure/gg651127上的说明创建了一个证书,给了我cert.cer
. 我将我上传.cer
到我的 Azure 帐户并将其复制.cer
到我正在使用 Python 的 Linux VM。我将我的代码修改为:
import httplib
cert_file = '/path/to/cert.cer'
conn = httplib.HTTPSConnection('management.core.windows.net', cert_file = cert_file)
conn.request('GET', '/[subscription id]/services/storageservices/')
并得到错误:
ssl.SSLError: [Errno 336265225] _ssl.c:351: error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib
给人的印象可能是因为我试图使用.cer
证书而不是.pem 和 .cer 之间的区别(它们是相同的东西,但扩展名不同).pem
,我只是将我的 .cer 上的扩展名更改为 .pem 并再次尝试,得到相同的错误。
如何正确地向 Azure 验证自己以访问其 API?这是我如何上传证书的问题,还是我需要对证书做一些事情以使其适合呈现给服务器?在 Windows 上,我似乎可以将其安装.cer
到某种证书存储中 - 在 Linux 中是否有一个等效项,我需要在使用它进行身份验证之前从中检索证书?感谢您的帮助 =)