Python请求Tableau REST API SSL错误

时间:2017-09-16 03:45:24

标签: python rest ssl tableau

我对证书的运作方式并不太熟悉,所以我可能会做一些愚蠢的事,提前道歉。

我正在尝试与tableau的其余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服务器证书,并试图通过cert参数传递它们:

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')]

任何人都有任何指示?

1 个答案:

答案 0 :(得分:1)

  

我的本​​地计算机上有我的tableau服务器证书,并试图通过cert参数传递它们:

requests.get('https://tableau.mynetwork.lan', cert=tableau_cert, verify = True)

cert是指定CA的错误参数。 according to the documentation的正确方法是将CA文件的路径设置为verify参数的值:

requests.get('https://tableau.mynetwork.lan', verify=tableau_cert)

另外,请确保您拥有的文件正确PEM encoded