当前位置:首页 > 行业资讯 > SSL证书 > 正文内容

证书有效期天数

2025-08-22SSL证书1213

海外云服务器 40个地区可选            亚太云服务器 香港 日本 韩国

云虚拟主机 个人和企业网站的理想选择            俄罗斯电商外贸虚拟主机 赠送SSL证书

美国云虚拟主机 助力出海企业低成本上云             WAF网站防火墙 为您的业务网站保驾护航


在当今互联网安全日益受到重视的大背景下,SSL(Secure Sockets Layer)证书已成为保障网站通信安全不可或缺的一部分,虽然大多数正式的 SSL 证书需要通过受信任的 CA(Certificate Authority,证书颁发机构)申请,但在某些特定场景,如本地开发、测试环境或内网部署中,我们也可以通过 Python 自行生成自签名的 SSL 证书,这不仅能够节省成本,还能显著提高开发效率。

本文将详细介绍如何使用 Python 生成自签名 SSL 证书,并提供一个完整的示例脚本,帮助开发者快速上手。


SSL 证书的基本概念

SSL 证书用于实现 HTTPS 协议,保障客户端与服务器之间的通信加密传输,它通过加密手段确保数据在传输过程中不会被窃取或篡改,从而提升通信的安全性。

自签名证书(Self-signed Certificate)是由开发者自行生成并签名的证书,由于它没有经过第三方 CA 的认证,在浏览器中通常会提示“此连接不安全”或“证书不受信任”,自签名证书非常适合用于本地开发、测试或内部网络通信,无需额外成本即可实现加密通信。


Python 生成 SSL 证书的依赖库

Python 本身并没有直接提供生成 SSL 证书的功能,但我们可以通过调用 OpenSSL 库来完成这一任务。OpenSSL 是一个功能强大的开源安全库,广泛用于 SSL/TLS 协议的实现。

在 Python 中,我们可以使用 pyOpenSSL 这个封装库来调用 OpenSSL 提供的功能,从而生成和管理 SSL 证书。

安装依赖库

pip install pyOpenSSL

使用 Python 生成自签名 SSL 证书

以下是一个完整的示例代码,演示如何使用 Python 生成自签名 SSL 证书和私钥,并将其保存为 PEM 格式的文件。

from OpenSSL import crypto, SSL
from socket import gethostname
from time import gmtime, mktime
CERT_EXPIRE_DAYS = 365  # 证书有效期(天数)
# 创建 RSA 私钥
def createPrivateKey():
    pkey = crypto.PKey()
    pkey.generate_key(crypto.TYPE_RSA, 2048)
    return pkey
# 创建自签名证书
def createSelfSignedCert(pkey, hostname=None):
    if hostname is None:
        hostname = gethostname()
    cert = crypto.X509()
    subject = cert.get_subject()
    subject.C = "CN"               # 国家代码
    subject.ST = "Beijing"         # 省份
    subject.L = "Beijing"          # 城市
    subject.O = "MyOrganization"   # 组织名称
    subject.OU = "MyDepartment"    # 部门名称
    subject.CN = hostname          # 通用名称(域名或主机名)
    cert.set_serial_number(1000)  # 序列号
    cert.gmtime_adj_notBefore(0)  # 证书生效时间
    cert.gmtime_adj_notAfter(CERT_EXPIRE_DAYS * 24 * 60 * 60)  # 证书过期时间
    cert.set_issuer(subject)      # 自签名,颁发者与主题相同
    cert.set_pubkey(pkey)         # 设置公钥
    cert.sign(pkey, 'sha256')      # 使用私钥进行签名
    return cert
# 保存证书和私钥到文件
def saveCertAndKey(cert, pkey, cert_file='server.crt', key_file='server.key'):
    with open(cert_file, 'wt') as f:
        f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert).decode('utf-8'))
    with open(key_file, 'wt') as f:
        f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, pkey).decode('utf-8'))
# 主程序入口
if __name__ == '__main__':
    hostname = input("请输入证书通用名(如:localhost):") or None
    private_key = createPrivateKey()
    certificate = createSelfSignedCert(private_key, hostname)
    saveCertAndKey(certificate, private_key)
    print("SSL证书和私钥已生成,保存为 server.crt 和 server.key")

生成的文件说明

运行上述脚本后,将生成两个文件:

  • server.crt:SSL 证书文件(PEM 格式)
  • server.key:私钥文件(PEM 格式)

这两个文件可用于配置本地 Web 服务器以支持 HTTPS 协议,

  • Flask:使用 SSL_context 参数加载证书
  • Django:配合 runserver_plus 插件使用
  • Nginx:在配置文件中指定 ssl_certificatessl_certificate_key

使用证书启动 HTTPS 服务(以 Flask 为例)

以下是一个使用 Flask 启动 HTTPS 服务的示例代码:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
    return "Hello, HTTPS!"
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=443, ssl_context=('server.crt', 'server.key'))

访问 https://localhost,即可看到通过 HTTPS 安全连接返回的内容,注意:首次访问时浏览器可能会提示证书不受信任,可以选择“继续访问”以继续测试。


总结与建议

通过 Python 和 pyOpenSSL 库,我们可以轻松地生成自签名 SSL 证书,为本地开发、测试环境提供安全保障,虽然这种证书在公共浏览器中不会被信任,但在内部通信、接口调试、自动化测试等场景中非常实用。

掌握如何生成和使用 SSL 证书,有助于开发者在构建安全通信机制时更加得心应手,提升项目的整体安全性和开发效率。

提示:在生产环境中,请务必使用由权威 CA 机构颁发的证书,以确保通信的可信性与安全性。


如果你正在搭建一个本地 HTTPS 服务、进行接口测试或部署内部系统,这个自签名证书生成脚本将是一个非常实用的工具,希望本文能帮助你更好地理解和应用 SSL 证书技术。

扫描二维码推送至手机访问。

版权声明:本文由特网科技发布,如需转载请注明出处。

本文链接:https://www.56dr.com/mation/72117.html

分享给朋友:

“证书有效期天数” 的相关文章

租用境外服务器,性价比高?

租用境外服务器通常具有较高的性价比,但其成本会受到多种因素的影响,包括地理位置、网络带宽、托管费用等。建议在选择时进行全面比较和预算规划。随着科技的发展和互联网的普及,越来越多的人开始关注如何在不花费大量资金的情况下获取更好的网络服务,而租用境外服务器作为一种灵活且经济的选择,正受到越来越多用户的青...

服务器租用收费标准分析

服务器租赁收费标准通常由以下因素决定:租用时间、操作系统、存储容量、带宽等。企业级云服务提供商可能会收取较高的费用,而小型企业和个人用户则可能享受更优惠的价格。一些提供商还提供了折扣和促销活动,以吸引客户。随着互联网技术的发展和业务需求的增加,对服务器的需求也日益增长,服务器租用是一种常见的IT服务...

全球VPS服务器购买平台推荐

在全球范围内,选择VPS服务器是一个常见的需求。以下是一些建议,帮助你找到最适合你的VPS服务器购买平台:,,1. **Cloudflare**:以其高性能、安全性以及易于管理而闻名。,2. **Linode**:以高可用性和价格透明性著称。,3. **AWS (Amazon Web Service...

游戏服务器租赁费用计算器

游戏服务器租赁费用主要取决于以下几个因素:租用时长、服务器配置、操作系统、网络带宽、存储空间等。通常情况下,每天或每周的费用会有所不同。建议在选择服务器之前,详细了解相关的信息并进行预算规划。游戏服务器租赁费用:成本与收益的平衡摘要:随着电子游戏行业的迅速发展,游戏服务器作为提供玩家体验的重要基础设...

选择SSL证书前的域名确认

在购买SSL证书之前,确保你已经获取了正确的域名信息是非常重要的。这不仅有助于保护你的网站免受未经授权访问,还能提高用户体验和信任度。选择SSL证书时,应考虑以下几个方面:该证书是否符合你的需求(加密通信、身份验证等),证书的有效期和续费费用,以及是否能通过多种方式安装和配置。也要注意 SSL证书的...

SSL费用,一年计算

一年SSL证书费用通常取决于多种因素,包括服务器类型、域名注册商、加密算法等。平均下来,一个标准的年SSL证书费用可能在200到800美元之间,具体价格会因这些因素而异。建议咨询专业的SSL服务提供商以获取更准确的价格信息。在数字化时代,数据安全已成为企业运营的重要保障,SSL证书作为保护网站和应用...