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

证书有效期天数

2025-08-22SSL证书1191

海外云服务器 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

分享给朋友:

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

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

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

学生服务器租用费用计算

学生服务器租用的价格因地区、服务提供商和租期等因素而异。每月价格在几十元到几百元之间,一年费用可能在一千多元。建议在选择租用服务时,考虑网络带宽、存储空间、安全措施以及支持的服务等多方面因素。随着科技的发展,越来越多的学生开始使用虚拟化技术来提高学习效率,而学生服务器的租赁成为了许多学校和教育机构的...

服务器费用的会计处理

在会计核算中,服务器费用通常被视为折旧和摊销的支出。应确认服务器的初始成本,并将该成本作为折旧对象进行处理。如果服务器被用于生产活动,则将其纳入产品成本。对于租赁或托管服务器的情况,也需进行相应的账务处理。通过合理的会计记录,可以清晰地反映服务器成本及其对财务报表的影响。在企业财务核算中,服务器费用...

优化供应链管理,提高生产效率。

要节省成本并提高工作效率,首先需要明确目标和需求,然后优化流程和系统。通过采用自动化工具、优化工作方法和实施项目管理软件等措施,可以显著减少不必要的开支,并加快项目的进度。加强团队协作和培训也是提升效率的关键。随着科技的发展,超级服务器在企业和组织中扮演着越来越重要的角色,超级服务器的高昂租赁价格也...

选择值得信赖的产品

在当前市场中,值得信赖的选择应该注重产品质量、服务质量和价格比。选择时也要考虑品牌的信誉和口碑,以及是否符合自己的需求。随着互联网的飞速发展,韩国作为亚洲重要的科技中心之一,其云计算服务市场也日益繁荣,为了帮助广大用户找到最适合自己的韩国服务器租用解决方案,我们特推出《韩国服务器租用排行榜》。1....

科技助力智慧生活

随着科技的发展,我们的生活发生了翻天覆地的变化。智慧与技术的力量让我们能够更高效地解决问题,更好地满足人们的需求。从智能家居到人工智能,这些技术正在改变着我们的生活方式和工作方式。它们也带来了一些挑战,如数据隐私、网络安全等问题需要我们共同面对和解决。我们期待更多的创新和进步,让智慧与技术真正为人类...