问题:
Python的ssl模块并没有抱怨证书,尽管cacert.pem文件中没有提供颁发CA(下面的测试用例2).我使用从Mozilla中提取的CA. Firefox正在抱怨未知的CA(在这种情况下是国防部).
似乎只有证书本身得到验证,而不是CA已知.我正在运行Python 2.7.1并使用ssl版本的OpenSSL 0.9.8r.
测试用例:
检查Firefox中的以下站点以及下面的python示例客户端.
案例2.虽然它不应该由python客户端验证.
案例3.按预期抛出异常:
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Run Code Online (Sandbox Code Playgroud)
示例Python客户端:
CA文件:http://curl.haxx.se/ca/cacert.pem(由curl维护者提供的mozilla默认CA).
http://docs.python.org/library/ssl.html#client-side-operation的略微修改版本:
# test_ssl.py
import socket, ssl, pprint, sys
host = sys.argv[1]
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# require a certificate from the server
ssl_sock = ssl.wrap_socket(s,
# http://curl.haxx.se/ca/cacert.pem
ca_certs="cacert.pem",
cert_reqs=ssl.CERT_REQUIRED)
ssl_sock.connect((host, 443))
print repr(ssl_sock.getpeername())
print ssl_sock.cipher()
print pprint.pformat(ssl_sock.getpeercert())
# Set a simple HTTP request -- use httplib in actual code.
ssl_sock.write("""GET …Run Code Online (Sandbox Code Playgroud)