簡體   English   中英

python中的此ssl錯誤是什么意思?

[英]what does this ssl error in python mean?

我有以下簡單的python代碼,旨在執行ssl握手並驗證客戶端和服務器之間的證書:

ssl_test.py:

import ssl
import socket

s = socket.socket()
print "connecting..."
#logging.debug("Connecting")
# Connect with SSL mutual authentication
# We only trust our server's CA, and it only trusts user certificates signed by it
c = ssl.wrap_socket(s, cert_reqs=ssl.CERT_REQUIRED,
                    ssl_version=ssl.PROTOCOL_SSLv3, ca_certs='ca.crt',
                    certfile='user.crt', keyfile='user.key')
c.connect((constants.server_addr, constants.port))

執行此操作時,出現以下錯誤。

>python ssl_test.py
Traceback (most recent call last):
  File "ssl_test.py", line 12, in <module>
    c.connect(('192.168.1.82', 7070))
  File "C:\Python27\lib\ssl.py", line 331, in connect
    self._real_connect(addr, False)
  File "C:\Python27\lib\ssl.py", line 314, in _real_connect
    self.ca_certs, self.ciphers)
ssl.SSLError: [Errno 0] _ssl.c:340: error:00000000:lib(0):func(0):reason(0)

此錯誤是什么意思,我該如何解決?

看起來像http://bugs.python.org/issue2687 ,給出了以下答案:

不,問題出在客戶端的“ ca_certs”參數上。 您不能使用目錄。 您必須使用包含許多串聯證書的文件。 我將整理文檔以使內容更清楚。

我看到您的ca_certs是文件,而不是目錄,但是也許仍然可以ca_certs ca.crt文件的格式正確且位置正確嗎?

我是Python的新手,在搜索原始ssl.SSLError之后最終進入了這條路。 我知道這對原始海報沒有幫助,但可能會幫助其他人解決此錯誤。 大多數Python示例使用:

    ca_certs="/etc/ca_certs_file"

由於此文件不存在,因此會出現此錯誤。 要在最新版本的Linux上使用系統CA證書,請使用:

    ca_certs="/etc/ssl/certs/ca-certificates.crt"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM