from OpenSSL import crypto
import os

# 证书配置
CERT_FILE = "server.crt"
KEY_FILE = "server.key"

# 创建密钥
k = crypto.PKey()
k.generate_key(crypto.TYPE_RSA, 4096)

# 创建自签名证书
cert = crypto.X509()
cert.get_subject().C = "CN"
cert.get_subject().ST = "Hunan"
cert.get_subject().L = "Huaihua"
cert.get_subject().O = "Test"
cert.get_subject().OU = "Dev"
cert.get_subject().CN = "127.0.0.1"
cert.set_serial_number(1000)
cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(3650*24*60*60) # 有效期10年
cert.set_issuer(cert.get_subject())
cert.set_pubkey(k)
cert.sign(k, 'sha256')

# 保存文件
with open(CERT_FILE, "wb") as f:
    f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert))
with open(KEY_FILE, "wb") as f:
    f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, k))

print("证书生成完成：server.crt , server.key")