如何使用Python创建自签名SSL证书
在Python中,可以使用OpenSSL库来创建自签名SSL证书。下面是一个简单的代码演示:
from OpenSSL import crypto # 创建私钥 key = crypto.PKey() key.generate_key(crypto.TYPE_RSA, 2048) # 创建证书请求 req = crypto.X509Req() subject = req.get_subject() subject.C = "CN" subject.ST = "Shanghai" subject.L = "Shanghai" subject.O = "Pidancode" subject.OU = "Tech" subject.CN = "pidancode.com" req.set_pubkey(key) req.sign(key, "sha256") # 创建证书 cert = crypto.X509() cert.set_version(3) cert.set_serial_number(1000) cert.gmtime_adj_notBefore(0) cert.gmtime_adj_notAfter(10 * 365 * 24 * 60 * 60) cert.set_subject(req.get_subject()) cert.set_issuer(cert.get_subject()) cert.set_pubkey(req.get_pubkey()) cert.sign(key, "sha256") # 保存证书和私钥到文件 with open("server.crt", "wb") as cert_file: cert_file.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert)) with open("server.key", "wb") as key_file: key_file.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, key))
上述代码使用OpenSSL库创建了一个RSA类型的2048位私钥,然后创建了一个证书请求,并设置了一些证书信息,如C(国家/地区)、ST(省/州)、L(城市)、O(组织)、OU(单位)和CN(常用名称)。接下来,我们使用私钥对证书请求进行签名,生成了一个自签名的证书。
最后,我们将证书和私钥保存到文件中。在上述代码中,我们使用了字符串“pidancode.com”作为证书的CN(常用名称)。
注意,自签名证书在实际生产环境中并不安全,因为它们没有被任何可信的第三方机构签署,且存在风险被篡改或者中间人攻击。在实际生产环境中,应该使用受信任的证书机构颁发的证书。
相关文章