【问题标题】:How to open an openssl s_client socket in Python如何在 Python 中打开 openssl s_client 套接字
【发布时间】:2019-09-01 09:11:55
【问题描述】:

我是 Python 新手,我需要在 Python 中使用 Openssl 打开一个套接字,以获取以下命令,该命令可以直接运行。

openssl s_client -CAfile trust.cer -cert server.cer -key server_key.pem -port 31114 -host 10.238.110.110 -tls1 -quiet –crlf

这是在我们的专用网络中使用服务器 10.238.110.110 上的 CLI 触发一些 MML 命令所必需的

import socket
import ssl
import sys
import os
class Client:
    def __init__(self,host,port):
        self.host = host
        self.port = port
        self.sock = None
        self.connected = False

    def connect(self):
        data = []
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.setblocking(0)
        self.sock.settimeout(15)
        try:
            self.sock.connect((self.host,self.port))

            #self.connected = True
            data = self.sock.recv(1024)
            if ( not data):
                self.connected = False
                print("not connected")
            else:
                self.connected = True
                print("connected")
        except IOError as e:
            self.connected = False
            print("error")

它总是打印未连接。在 Wireshark 上,它还显示服务器正在完成连接。 请帮我写代码

【问题讨论】:

    标签: sockets openssl


    【解决方案1】:
    def connect(self):
        data = []
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.setblocking(0)
        self.sock.settimeout(15)
        # WRAP SOCKET
        wrappedSocket = ssl.wrap_socket(sock, ssl_version=ssl.PROTOCOL_TLSv1, ciphers="ADH-AES256-SHA")
    
        try:
            wrappedSocket.connect((self.host,self.port))
    
        #self.connected = True
        data = self.sock.recv(1024)
        if ( not data):
            self.connected = False
            print("not connected")
        else:
            self.connected = True
            print("connected")
        except IOError as e:
            self.connected = False
        print("error")
    

    试试这个

    【讨论】:

    • [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 警报握手失败 (_ssl.c:833)
    • 我看到了对 wireshark 的尝试,但它从服务器端终止,我遇到了上述错误
    【解决方案2】:

    我能够使用以下代码连接到套接字。感谢大家的支持。

    import socket
    import ssl
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    addr=("10.200.200.101",31114)
    wrapper = ssl.wrap_socket(s)
    wrapper.connect(addr)
    

    【讨论】:

      猜你喜欢
      • 2014-11-03
      • 1970-01-01
      • 2020-02-15
      • 2015-01-07
      • 2013-10-25
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 2013-04-13
      相关资源
      最近更新 更多