微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GSM SSL握手ssl.py

如何解决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 举报,一经查实,本站将立刻删除。