传输层安全 (TLS) 实验
完成条件
在此任务中,我们将实现一个简单的 TLS 服务器。我们使用任务 1 中的客户端程序来测试该服务器程序。下面提供了示例服务器代码。
/* server.py: 在 Labsetup/volumes 文件夹里 */
#!/usr/bin/env python3
import socket
import ssl
html = """
HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n
<!DOCTYPE html><html><body><h1>Hello, world!</h1></body></html>
"""
SERVER_CERT = './certs/server.crt'
SERVER_PRIVATE = './certs/server.key'
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(SERVER_CERT, SERVER_PRIVATE)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
sock.bind(('0.0.0.0', 443))
sock.listen(5)
while True:
newsock, fromaddr = sock.accept()
ssock = context.wrap_socket(newsock, server_side=True)
data = ssock.recv(1024) # Read data over TLS
ssock.sendall(html.encode('utf-8')) # Send data over TLS
ssock.shutdown(socket.SHUT_RDWR) # Close the TLS connection
ssock.close()
测试。我们将使用任务 1 中开发的客户端程序来测试该服务器程序。在任务 1 中,客户端程序从 /etc/ssl/certs 文件夹加载受信任的证书。在此任务中, CA 由我们创建,其证书并未存储在该文件夹中。我们不建议学生将此 CA 添加到该文件夹,因为这会影响整个系统。学生可以将 CA 的证书存储在 ./certs 文件夹中,然后按照任务 1 中的说明设置文件夹。请分别使用 /etc/ssl/certs 文件夹和 ./certs 文件夹测试您的程序,描述你观察到的现象并解释原因。
最后修改: 2025年05月13日 星期二 09:13