Python &引用;ssl.SSLError:。。。“无共享密码”;当尝试处理HTTPS请求时,Web服务器

Python &引用;ssl.SSLError:。。。“无共享密码”;当尝试处理HTTPS请求时,Web服务器,python,python-2.7,ssl,https,webserver,Python,Python 2.7,Ssl,Https,Webserver,我正在尝试扩展一个通过SSL处理HTTPS请求的web服务器。 我的教授说我们应该使用ssl.wrap_socket,并给了我们密码 以下是我到目前为止的情况: from socket import * import ssl serverSocket = socket(AF_INET, SOCK_STREAM) serverPort = 443 serverSocket.bind(("", serverPort)) serverSocket.listen(1) while True:

我正在尝试扩展一个通过SSL处理HTTPS请求的web服务器。 我的教授说我们应该使用ssl.wrap_socket,并给了我们密码

以下是我到目前为止的情况:

from socket import *
import ssl

serverSocket = socket(AF_INET, SOCK_STREAM)
serverPort = 443
serverSocket.bind(("", serverPort))
serverSocket.listen(1)

while True:
    print ('Ready to serve...')
    connectionSocket, addr = serverSocket.accept()

    connectionSocket = ssl.wrap_socket(connectionSocket,
                                keyfile="./server.key",
                                certfile="./server.pem",
                                server_side=True,
                                cert_reqs=ssl.CERT_NONE,
                                ssl_version=ssl.PROTOCOL_SSLv23,
                                ca_certs=None,
                                do_handshake_on_connect=True,
                                suppress_ragged_eofs=True,
                                ciphers="AES128-SHA256")

    try:
        message =  (connectionSocket.recv(1024)).decode('utf-8')
        filename = message.split()[1]

        f = open(filename[1:],'rb')
        outputdata = f.read()
        f.close()

        connectionSocket.send(b'HTTP/1.1 200 OK\r\n\r\n')
        connectionSocket.send(outputdata)
        connectionSocket.send(b'\r\n')

        connectionSocket.shutdown(SHUT_RDWR)
        connectionSocket.close()

    except IOError:
        connectionSocket.send(b'HTTP/1.1 404 Not Found\r\n\r\n')
        connectionSocket.send(b'<html><head></head><body><h1>404 Not Found</h1></body></html>\r\n')

        connectionSocket.shutdown(SHUT_RDWR)
        connectionSocket.close()

serverSocket.close()
对于作业的下一部分,我必须放入
”https://localhost:443/index.html“
进入我的浏览器,但我的Web服务器因以下错误而崩溃:

ssl.SSLError:[ssl:NO\u SHARED\u CIPHER]NO SHARED CIPHER(\u ssl.c:661)
我的代码有什么问题

根据AES128-SHA256(在标准中称为TLS_RSA_和_AES_128_CBC_SHA256),主要浏览器(如或)不支持。在服务器上仅接受此单一密码(主要客户端不支持此密码)会导致找不到通用密码,即


解决方法是在服务器上接受更多密码,以包括浏览器支持的密码。有关不仅适用于主要web服务器而且适用于小型服务器的有用设置,请参阅。

也许您可以检查您的证书/CA,或者使用列出一些可用密码的简单脚本测试服务器:@zhiqianghuang:“无共享密码”与证书验证无关。
                            ciphers="AES128-SHA256")
ssl.SSLError: [SSL: NO_SHARED_CIPHER] no shared cipher (_ssl.c:661)