{site_name}

{site_name}

🌜 搜索

Python自签名证书是一种数字证书,用于验证和加密通信

Python 𝄐 0
python 电子签名,python签名设计,python apk签名,python 生成证书,python个性签名,python生成签名
Python自签名证书是一种数字证书,用于验证和加密通信。它由Python程序自己创建,而不需要第三方颁发机构(CA)进行认证。

自签名证书包含公钥、私钥和证书信息,并且可以在HTTPS连接中使用以提供安全性。 它与其他证书相同,但不会被浏览器或操作系统信任,因此在使用时需要手动添加到受信任的证书列表中。

下面是一个简单的Python脚本,用于生成自签名证书:

python
from cryptography import x509
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.backends import default_backend

# 生成RSA密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
backend=default_backend()
)

# 创建证书请求
csr = x509.CertificateSigningRequestBuilder().subject_name(
x509.Name([
x509.NameAttribute(x509.NameOID.COMMON_NAME, u"www.example.com")
])
).sign(private_key, default_backend())

# 生成自签名证书
builder = x509.CertificateBuilder().subject_name(
csr.subject
).issuer_name(
csr.subject
).public_key(
csr.public_key()
).serial_number(
x509.random_serial_number()
).not_valid_before(
datetime.datetime.utcnow()
).not_valid_after(
datetime.datetime.utcnow() + datetime.timedelta(days=365)
).add_extension(
x509.SubjectAlternativeName([x509.DNSName(u"www.example.com")]),
critical=False,
).add_extension(
x509.BasicConstraints(ca=True, path_length=None),
critical=True,
)

certificate = builder.sign(
private_key=private_key, algorithm=hashes.SHA256(),
backend=default_backend()
)

# 输出证书
print(certificate.public_bytes(serialization.Encoding.PEM))


此脚本使用cryptography库生成RSA密钥对,生成证书请求并使用自己的私钥签名以生成自签名证书。 生成的证书可以使用类似以下方式添加到受信任的证书列表中:

python
import certifi

with open("self-signed-cert.pem", "rb") as pem_file:
pem_data = pem_file.read()
certifi.add_certs_to_store(certifi.where(), certs=[pem_data])