如何在ssl python套接字中设置密码

use*_*654 6 python sockets ssl openssl tls1.2

我想使用密码字符串创建自己的密码套件列表。如果我在函数中只放入一个字符串,则以下代码将起作用set_ciphers。但我想要一份定制的密码列表。还有其他格式,例如:ALL:!COMPLEMENTOFDEFAULT:!eNULL但这并不能达到我需要的目的。我有一个不同密码的自定义列表,无法使用第二种格式进行组合。

import socket, ssl
import pprint

context = ssl.create_default_context()

cipher = ['DHE-RSA-AES128-SHA', 'DHE-RSA-AES256-SHA', 'ECDHE-ECDSA-AES128-GCM-SHA256']
context.set_ciphers(cipher)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

domain = 'google.com'

sslSocket = context.wrap_socket(s, server_hostname = domain)

sslSocket.connect((domain, 443))
sslSocket.close()
print('closed')
Run Code Online (Sandbox Code Playgroud)

该函数可以在这里set_ciphers找到。

use*_*654 8

:我可以简单地通过用 分隔密码并将所有密码作为一串发送来包含多个密码。

cipher = 'DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-GCM-SHA256'
context.set_ciphers(cipher)
Run Code Online (Sandbox Code Playgroud)

这样,客户就提供了所有密码。您可以通过调用来确保这一点context.get_ciphers(),您将只看到您使用插入的密码set_cipher