加密与远程访问客户端开发详解
1. 加密模块与连接创建
要使程序正常工作,需要两个模块。第一个是 ssl 模块,它包含了SSL和TLS功能,尽管SSL已被弃用多年,但由于这个缩写长期广泛使用,即便现在已过渡到TLS,人们仍习惯称其为SSL。另一个模块是 socket 模块,它负责处理底层连接。
创建连接时,首先要为连接创建一个默认上下文。若客户端认证需要证书,过程会更复杂,但这里只需使用默认的SSL上下文。接着,使用 socket.create_connection() 创建一个处理连接的套接字,传入包含主机名和端口号的元组。然后,将得到的变量 sock 包装在已有的SSL上下文中,通过调用上下文变量的 wrap_socket() 方法实现,同时要传入上一步创建的 sock 变量和服务器名称,这样在握手时能验证服务器,确保服务器证书中的通用名称与提供的名称匹配,即确保连接到预期的服务器。
加密能确保数据的机密性,检查证书中的服务器名称是否与访问的服务器一致是另一项安全控制措施。若两者名称不匹配,数据可能未发送到预期的服务器,这会破坏数据机密性,因为可能有第三方介入。如果是为了监控而有第三方介入,这种情况可能是合理的,但通常会有相应的处理机制,避免每次访问网站都出错。若攻击者介入,他们可能无法提供合法证书,名称肯定不匹配。由于配置错误可能导致名称不匹配和其他加密错误,用户可能习惯了接受这些错误,而未意识到潜在风险。
2. TLS服务器的创建
创建TLS服务器时,
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



