我对证书的工作方式并不过分熟悉,所以我可能会做一些愚蠢的事情,事先表示歉意。
我正在尝试与Tableau的REST API互动,并使用安全连接进行此操作,因为他们的某些呼叫需要此。
但是,我正在遇到各种错误创建连接。
我能够创建一个不安全的连接:
requests.get('https://tableau.mynetwork.lan', verify = False)
<Response [200]>
我还能够与Google建立安全的连接:
requests.get('https://google.com', verify = True)
<Response [200]>
但是,尝试与我的Tableau服务器建立安全连接:
requests.get('https://tableau.mynetwork.lan', verify = True)
或:
requests.get('https://tableau.mynetwork.lan', verify = certifi.old_where())
导致以下错误:
SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)
我在本地计算机上有我的Tableau Server证书,并尝试通过证书参数通过:
tableau_cert = r"C:tabcert.cer"
requests.get('https://tableau.mynetwork.lan', cert=tableau_cert, verify = True)
但是获取此错误:
Error: [('PEM routines', 'PEM_read_bio', 'no start line'), ('SSL routines', 'SSL_CTX_use_certificate_file', 'PEM lib')]
有人有指针吗?
我在本地计算机上有我的Tableau Server证书,并尝试通过证书参数通过:
requests.get('https://tableau.mynetwork.lan', cert=tableau_cert, verify = True)
cert
是指定CA的错误参数。根据文档的正确方法是将CA文件的路径设置为verify
参数的值:
requests.get('https://tableau.mynetwork.lan', verify=tableau_cert)
另外,请确保您拥有的文件已正确编码。