我目前正在做一个代理,位于浏览器和网站之间。除https之外的所有内容我有麻烦理解它的一些段落,并没有发现在网络上的许多资源。所以我被卡住了。卡住了编程https代理 - 接下来要做什么?
我正在使用的代码是:
conn, addr = server.accept()
request = conn.recv(9999) #get a CONNECT request
conn.send(b'HTTP/1.1 200 Connection estabilished\n\n')
enc_req = conn.recv(9999) #this gets an encrypted request
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #plaintext client
client.connect((host, 443)) #connect to chosen host
client.send(enc_req)
resp1 = client.recv(9999) #this gets something unreadable (encrypted?)
#could it be the certificate?
#now what?
是对resp1我得到证书?之后我需要做些什么? (或者,这是相同的,接下来通常会发生什么https?)
P.S.我知道这个问题有点泛泛,但请不要太苛刻地评论我。我试过在Web上进行研究,但我一直发现的是用于ssl的加密方法。我真的不知道如何继续。
HTTPS(SSL)连接是端对端加密的,所有代理可以做的是在客户端和服务器之间传递数据,没有别的。 –
这正是我想要完成的,但我不确定。 – user3725459
@Martijn - SSL/TLS不提供端到端加密(尽管我们经常希望如此)。 [Trustwave](http://lwn.net/Articles/480279/)证明了这个承诺没有被传递。有一整套代理用于打破期望,并且它们带来了自己的一系列问题,例如组织的攻击面经常增加。请参阅[SSL/TLS拦截代理和传递信任](http://www.secureworks.com/cyber-threat-intelligence/threats/transitive-trust/)。 – jww