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])
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])
本文地址:
/show-276124.html
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。