You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成含TLS_AES_128_GCM_SHA256的自签名证书用于Python Web服务器

创建指定加密套件的自签名证书并部署到Python Web服务器

一、生成符合要求的自签名证书

使用OpenSSL命令生成兼容TLS_AES_128_GCM_SHA256加密套件的自签名证书(该套件属于TLS 1.3标准,需确保OpenSSL版本支持TLS 1.3):

# 创建存放证书的目录(如果不存在)
mkdir -p ssl

# 生成2048位RSA私钥
openssl genrsa -out ssl/key.pem 2048

# 生成证书签名请求(CSR),按提示填写信息即可,部分字段可留空
openssl req -new -key ssl/key.pem -out ssl/cert.csr

# 基于CSR生成自签名证书,指定SHA256签名算法,有效期365天
openssl x509 -req -days 365 -in ssl/cert.csr -signkey ssl/key.pem -out ssl/cert.crt -sha256

二、修正后的Python Web服务器代码

原代码存在几处问题(如socket参数不规范、协议版本不匹配、多余的self引用、缺少请求处理逻辑),以下是修正并完善后的代码:

from socket import AF_INET, SOCK_STREAM
import ssl

# 初始化TLS 1.3上下文,确保支持目标加密套件
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_3)
# 强制服务器仅使用TLS_AES_128_GCM_SHA256加密套件
ssl_context.set_ciphers('TLS_AES_128_GCM_SHA256')
# 加载证书和私钥
ssl_context.load_cert_chain(certfile="ssl/cert.crt", keyfile="ssl/key.pem")

# 创建TCP socket并绑定端口
server_socket = socket(AF_INET, SOCK_STREAM)
server_socket.bind(("0.0.0.0", 443))
server_socket.listen(5)

print("SSL服务器已启动,等待连接...")

while True:
    conn, addr = server_socket.accept()
    print(f"收到来自 {addr} 的连接请求")
    try:
        # 将普通TCP连接包装为SSL连接
        ssl_conn = ssl_context.wrap_socket(conn, server_side=True)
        # 读取客户端请求
        request_data = ssl_conn.recv(1024).decode('utf-8')
        print(f"请求内容:\n{request_data}")
        # 返回HTTP响应
        response = "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\n\r\n<h1>SSL连接成功!使用加密套件:TLS_AES_128_GCM_SHA256</h1>"
        ssl_conn.send(response.encode('utf-8'))
    except Exception as e:
        print(f"连接处理出错: {str(e)}")
    finally:
        # 关闭SSL连接
        ssl_conn.close()

关键修正说明

  • 使用PROTOCOL_TLSv1_3协议版本,确保支持TLS 1.3专属的TLS_AES_128_GCM_SHA256加密套件
  • 通过set_ciphers强制限定仅使用目标加密套件
  • 用可读性更强的AF_INET、SOCK_STREAM替代原代码中的数字参数
  • 移除了无意义的self引用
  • 添加了基础的请求读取和响应返回逻辑,让服务器具备基本功能

内容的提问来源于stack exchange,提问作者Mahdi Khezrabadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 17:12:42