使用然后删除自签名证书 localhost
Using and then removing self-signed certificate localhost
问题背景:
作为计算机网络课程作业的一部分,我的任务是实现代理服务器(使用 python socket 和 ssl 模块)处理浏览器和原始服务器(我的浏览器想要与之交谈的真实服务器)之间的 https 通信。
到目前为止我做了什么:
我已经使用 ssl 套接字实现了上述要求,并且还生成了自签名 'cert.pem'
'key.pem'
文件。
我需要做的事情:
现在我只需要告诉我的浏览器(chrome 89 在 kubuntu 20.04 上)接受这个自签名证书,然后测试我的代理服务器的工作。
阅读 this Whosebug question,我发现我必须:
(1) 成为我自己的 CA (2) 然后将我的 SSL 证书签署为 CA。 (3) 然后将 CA 证书(不是 SSL 证书,进入我的服务器)导入 Chrome.
我的confusion/question:
因此,如果我这样做,当我最终完成这项任务时,我如何反转所有这些步骤以使我的浏览器处于我进行所有这些更改之前的先前状态。另外,如何反转“成为你自己的 CA”并删除由我的 CA 签名的 SSL 证书。
基本上,我希望我的系统 return 恢复到我进行所有这些更改之前的状态。
更新:
我已经完成了之前概述的步骤,但现在出现错误。
这是我的代码片段:
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)
我做错了什么?
就像“成为你自己的 CA”听起来很迷人一样,使用 openssl 它基本上归结为创建一个自签名证书,然后创建一个目录来存储一些特定于 CA 的配置(我不完全记住细节,但我认为它只是一些与 CN 和序列号相关的文件)所以基本上逆转“成为你自己的 CA”步骤就像删除这个目录以及你的私钥和自签名证书一样平凡用于 CA。就是这样,CA 没有了。
对于 chrome 返回到以前的状态,您只需转到添加 CA 证书的 CA 列表,select 并将其删除。 Chrome 将停止接受由您的 CA 签署的证书。
关于你的新问题...在我看来,你已经开发了某种反向代理(意味着你期望正常的 HTTPS 请求然后重定向到真实服务器)但你已经配置 Chrome将其用作转发代理。在这种情况下,Chrome 不会向它发送正常的 HTTPS 请求,它会发送一个特殊的非加密 CONNECT 命令,只有在收到非加密响应后,它才会协商 TLS 连接。这就是 openssl 显示“https 代理请求”的原因,因为它检测到“https 代理请求”(CONNECT 命令)而不是正常的 TLS 协商。
你可以看看
是python,但我想你会明白的
问题背景:
作为计算机网络课程作业的一部分,我的任务是实现代理服务器(使用 python socket 和 ssl 模块)处理浏览器和原始服务器(我的浏览器想要与之交谈的真实服务器)之间的 https 通信。
到目前为止我做了什么:
我已经使用 ssl 套接字实现了上述要求,并且还生成了自签名 'cert.pem'
'key.pem'
文件。
我需要做的事情:
现在我只需要告诉我的浏览器(chrome 89 在 kubuntu 20.04 上)接受这个自签名证书,然后测试我的代理服务器的工作。
阅读 this Whosebug question,我发现我必须: (1) 成为我自己的 CA (2) 然后将我的 SSL 证书签署为 CA。 (3) 然后将 CA 证书(不是 SSL 证书,进入我的服务器)导入 Chrome.
我的confusion/question:
因此,如果我这样做,当我最终完成这项任务时,我如何反转所有这些步骤以使我的浏览器处于我进行所有这些更改之前的先前状态。另外,如何反转“成为你自己的 CA”并删除由我的 CA 签名的 SSL 证书。 基本上,我希望我的系统 return 恢复到我进行所有这些更改之前的状态。
更新:
我已经完成了之前概述的步骤,但现在出现错误。
这是我的代码片段:
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)
我做错了什么?
就像“成为你自己的 CA”听起来很迷人一样,使用 openssl 它基本上归结为创建一个自签名证书,然后创建一个目录来存储一些特定于 CA 的配置(我不完全记住细节,但我认为它只是一些与 CN 和序列号相关的文件)所以基本上逆转“成为你自己的 CA”步骤就像删除这个目录以及你的私钥和自签名证书一样平凡用于 CA。就是这样,CA 没有了。
对于 chrome 返回到以前的状态,您只需转到添加 CA 证书的 CA 列表,select 并将其删除。 Chrome 将停止接受由您的 CA 签署的证书。
关于你的新问题...在我看来,你已经开发了某种反向代理(意味着你期望正常的 HTTPS 请求然后重定向到真实服务器)但你已经配置 Chrome将其用作转发代理。在这种情况下,Chrome 不会向它发送正常的 HTTPS 请求,它会发送一个特殊的非加密 CONNECT 命令,只有在收到非加密响应后,它才会协商 TLS 连接。这就是 openssl 显示“https 代理请求”的原因,因为它检测到“https 代理请求”(CONNECT 命令)而不是正常的 TLS 协商。
你可以看看
是python,但我想你会明白的