【发布时间】:2021-06-26 07:34:05
【问题描述】:
问题背景:
作为计算机网络课程作业的一部分,我的任务是实现一个代理服务器(使用 python socket 和 ssl 模块)来处理服务器之间的 https 通信浏览器和源服务器(我的浏览器想要与之通信的真实服务器)。
到目前为止我做了什么:
我已经使用 ssl 套接字实现了上述要求,并且还生成了自签名 'cert.pem' 'key.pem' 文件。
我需要做什么:
现在我只需要告诉我的浏览器(kubuntu 20.04 上的 chrome 89)接受这个自签名证书,然后测试我的代理服务器的工作。
从this stackoverflow question 阅读,我可以看到我必须: (1) 成为我自己的 CA (2) 然后将我的 SSL 证书签署为 CA。 (3) 然后将 CA 证书(不是我服务器上的 SSL 证书)导入 Chrome。
我的困惑/问题:
因此,如果我这样做,当我最终完成这项任务时,我如何反转所有这些步骤以使我的浏览器处于进行所有这些更改之前的状态。另外,如何撤销“成为你自己的 CA”并删除我的 CA 签署的 SSL 证书。 基本上,我希望我的系统恢复到我进行所有这些更改之前的状态。
更新:
我已完成之前概述的步骤,但现在出现错误。
这是我的代码的 sn-p:
serv_socket = socket(AF_INET, SOCK_STREAM)
serv_socket.bind(('', serv_port))
serv_socket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
context = context.load_cert_chain('cert.pem', 'key.pem')
context.set_ciphers('EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH')
serv_socket.listen(10)
socket_to_browser, addr = serv_socket.accept()
conn_socket_to_browser = context.wrap_socket(socket_to_browser, server_side=True)
在最后一行conn_socket_to_browser = context.wrap_socket(socket_to_browser, server_side=True) 抛出异常:[SSL: HTTPS_PROXY_REQUEST] https 代理请求 (_ssl.c:1123)
我做错了什么?
【问题讨论】:
标签: ssl networking https certificate self-signed