使用flockerapi时,“module”对象没有属性“SSLContext”错误

2024-09-30 20:23:40 发布

您现在位置:Python中文网/ 问答频道 /正文

这是flocker api的url

https://docs.clusterhq.com/en/latest/reference/api.html

我尝试使用httplib建立https连接,但无法通过ssl验证[ssl:CERTIFICATE_VERIFY_FAILED]CERTIFICATE VERIFY FAILED(_ssl.c:765)

顺便说一下:它显示了一个错误:

AttributeError: 'module' object has no attribute 'SSLContext'

我的python版本是2.7.6,但是如果我使用python2.7.5,它就通过了。在


Tags: httpscomapiurlssldocshtmlcertificate
1条回答
网友
1楼 · 发布于 2024-09-30 20:23:40

我自己解决了我的问题,这是我的准则

import httplib
import ssl
import json
import socket
httpsConn = None
# KEY_FILE = "/etc/flocker/scio01.key"
# CERT_FILE = "/etc/flocker/scio01.crt"
# CA_FILE = "/etc/flocker/cluster.crt"

KEY_FILE = "/root/lichao_test/scio01.key"
CERT_FILE = "/root/lichao_test/scio01.crt"
CA_FILE = "/root/lichao_test/cluster.crt"

HOST = "192.168.9.14"
PORT = 4523
body = {
    "dataset_id": "a1234567-3fb9-4c1a-81ce-efeeb9f2c788",
    "primary": "c1234567-17b2-4812-beca-1434997d6c3f",
    "metadata": {
        "name": "demo",
        "owner": "lichao"
    },
    "maximum_size": 67108864
}

try:
    httpsConn = httplib.HTTPSConnection(HOST, PORT)
    sock = socket.create_connection((HOST, PORT))
    try:
        httpsConn.sock = ssl.wrap_socket(sock, ca_certs=CA_FILE, keyfile=KEY_FILE, certfile=CERT_FILE,
                                         cert_reqs=ssl.CERT_REQUIRED, ssl_version=ssl.PROTOCOL_SSLv3)
        json_body = json.dumps(body)
        # httpsConn.request(method="POST", url="https://192.168.9.14:4523/v1/configuration/datasets",
        #                   headers={"Content-type": "application/json", 'Connection': 'keep-alive'}, body=json_body)
        httpsConn.request(method="GET",url="/v1/configuration/datasets",headers={"Content-type": "application/json", 'Connection': 'keep-alive'})

        res = httpsConn.getresponse()
        body = res.read()
        status = res.status
        print "-" * 70
        print status, body
    except ssl.SSLError, e:
        print "Trying SSLv23.",e
except Exception, e:
    import traceback

    print traceback.format_exc()

相关问题 更多 >