如何解决GSM SSL握手ssl.py
我正在通过Python脚本进行SSL连接。当我进行高速连接时,它会成功,但是当使用慢速GSM连接时,会出现错误:
File "/usr/lib/python2.7/ssl.py",line 831,in do_handshake
self._sslobj.do_handshake()
我正在将SIM800L用于Linux(debian)系统上的GSM连接。 我可以通过终端中的“ openssl s_client -connect ...”进行SSL连接,因此我认为ssl.py中设置了一些限制(似乎总是需要60秒左右才能出现上述错误)。
上述握手是否有大约60秒的限制?如果是这样,如何增加呢?
编辑更多详细信息:
打开WIFI
Openssl在几秒钟内连接。 Python脚本成功。
name @ name:〜$ openssl s_client -connect string-ats.iot.eu-west-1.amazonaws.com:8883 -tls1_2 -CAfile /cert/AmazonRootCA1.pem -cert /cert/certificate.pem.key -key /cert/private.pem.key
CONNECTED(00000003)
depth=2 C = US,O = Amazon,CN = Amazon Root CA 1
verify return:1
depth=1 C = US,OU = Server CA 1B,CN = Amazon
verify return:1
depth=0 CN = *.iot.eu-west-1.amazonaws.com
verify return:1
---
Certificate chain
0 s:CN = *.iot.eu-west-1.amazonaws.com
i:C = US,CN = Amazon
1 s:C = US,CN = Amazon
i:C = US,CN = Amazon Root CA 1
2 s:C = US,CN = Amazon Root CA 1
i:C = US,ST = Arizona,L = ScottsDale,O = "Starfield Technologies,Inc.",CN = Starfield Services Root Certificate Authority - G2
3 s:C = US,CN = Starfield Services Root Certificate Authority - G2
i:C = US,OU = Starfield Class 2 Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MI....3h9VY=
-----END CERTIFICATE-----
subject=CN = *.iot.eu-west-1.amazonaws.com
issuer=C = US,CN = Amazon
---
No client certificate CA names sent
Client Certificate Types: RSA sign,DSA sign,ECDSA sign
Requested Signature Algorithms: ECDSA+SHA512:RSA+SHA512:ECDSA+SHA384:RSA+SHA384:ECDSA+SHA256:RSA+SHA256:DSA+SHA256:ECDSA+SHA224:RSA+SHA224:DSA+SHA224:ECDSA+SHA1:RSA+SHA1:DSA+SHA1
Shared Requested Signature Algorithms: ECDSA+SHA512:RSA+SHA512:ECDSA+SHA384:RSA+SHA384:ECDSA+SHA256:RSA+SHA256:DSA+SHA256:ECDSA+SHA224:RSA+SHA224:DSA+SHA224
Peer signing digest: SHA256
Peer signature type: RSA
Server Temp Key: ECDH,P-256,256 bits
---
SSL handshake has read 5400 bytes and written 1514 bytes
Verification: OK
---
New,TLSv1.2,Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES128-GCM-SHA256
Session-ID: 51...9
Session-ID-ctx:
Master-Key: 9...F
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1598423483
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: yes
---
name @ name:〜$ sudo python /application/awsiotpub.py
Loaded MQTT configuration information.
Endpoint URL: string-ats.iot.eu-west-1.amazonaws.com
Root Cert: /cert/AmazonRootCA1.pem
Device Cert: /cert/certificate.pem.key
Private Key: /cert/private.pem.key
Connecting to AWS IoT broker...
ssl.py : SSLSocket.__init__ if connected
ssl.py : SSLSocket.__init__ if connected,self._sslobj = :
<_ssl._SSLSocket object at 0xb62480c0>
ssl.py - do_handshake()
ssl.py - do_handshake() - _check_connected START
ssl.py - do_handshake() - _check_connected DONE
ssl.py - do_handshake() - try do_handshake() START
ssl.py - do_handshake() - try do_handshake() DONE
Connected with status: 0
True
Publishing...
Published: 123
在GSM上
Openssl在 67秒后成功连接。大约60秒后,Python脚本在ssl.py握手时失败。
name @ name:〜$ openssl s_client -connect string-ats.iot.eu-west-1.amazonaws.com:8883 -tls1_2 -CAfile /cert/AmazonRootCA1.pem -cert /cert/certificate.pem.key -key /cert/private.pem.key
CONNECTED(00000003)
.....
name @ name:〜$ sudo python /application/awsiotpub.py
Loaded MQTT configuration information.
Endpoint URL: string-ats.iot.eu-west-1.amazonaws.com
Root Cert: /cert/AmazonRootCA1.pem
Device Cert: /cert/certificate.pem.key
Private Key: /cert/private.pem.key
Connecting to AWS IoT broker...
ssl.py : SSLSocket.__init__ if connected
ssl.py : SSLSocket.__init__ if connected,self._sslobj = :
<_ssl._SSLSocket object at 0xb62480c0>
ssl.py - do_handshake()
ssl.py - do_handshake() - _check_connected START
ssl.py - do_handshake() - _check_connected DONE
ssl.py - do_handshake() - try do_handshake() START
ssl.py - do_handshake() - finally settimeout START
ssl.py - do_handshake() - finally settimeout DONE
Traceback (most recent call last):
File "awsiotpub.py",line 40,in <module>
Client.connect(mqtt_url,port = 8883,keepalive=240)
File "../paho/mqtt/client.py",line 937,in connect
Return self.reconnect()
File "../paho/mqtt/client.py" line 1100,in reconnect
Sock.do_handshake()
File "/user/lib/python2.7/ssl.py",line 839,in do_handshake
Self._sslobj.do_handshake()
Soket.error: [Errno 0] Error
ssl.py握手摘录
.
.
.
def do_handshake(self,block=False):
"""Perform a TLS/SSL handshake."""
print("ssl.py - do_handshake()")
print("ssl.py - do_handshake() - _check_connected START")
self._check_connected()
print("ssl.py - do_handshake() - _check_connected DONE")
timeout = self.gettimeout()
try:
if timeout == 0.0 and block:
print("ssl.py - do_handshake() - if timeout == 0.0")
self.settimeout(None)
print("ssl.py - do_handshake() - try do_handshake() START")
self._sslobj.do_handshake()
print("ssl.py - do_handshake() - try do_handshake() DONE")
finally:
print("ssl.py - do_handshake() - finally settimeout START")
self.settimeout(timeout)
print("ssl.py - do_handshake() - finally settimeout DONE")
if self.context.check_hostname:
print("ssl.py - do_handshake() - context.check_hostname START")
if not self.server_hostname:
print("ssl.py - do_handshake() - context.check_hostname - if not server_hostname")
raise ValueError("check_hostname needs server_hostname "
"argument")
match_hostname(self.getpeercert(),self.server_hostname)
print("ssl.py - do_handshake() - context.check_hostname DONE")
.
.
.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。