当前位置: 首页 > news >正文

【django】django项目使用https访问+ssl证书

目录

一、安装 django-sslserver

二、配置settings

三、启动项目测试

四、使用ssl证书 

4.1 安装cryptography

4.2 生成证书代码

4.3 将生成的证书放到django项目根目录下

五、使用证书启动项目

5.1 本地测试启动

5.2 生产启动

六、生成docker镜像的dockerfile

七、构建服务

八、启动服务


前言:django接口采取https访问,以及安全证书ssl

一、安装 django-sslserver

pip install django-sslserver

二、配置settings

SECURE_SSL_REDIRECT = False
INSTALLED_APPS = ['sslserver'
]

三、启动项目测试

python manage.py runsslserver

四、使用ssl证书 

4.1 安装cryptography

pip install cryptography

4.2 生成证书代码

# -*- coding: utf-8 -*-
# @Time    : 2024/9/29 13:31
# @Author  : super
# @File    : httpsSsl.py
# @Software: PyCharm
# @Describe:生成ssl证书
from cryptography import x509
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.x509.oid import NameOID
from datetime import datetime, timedeltadef generate_rsa_private_key(bits=2048):"""生成RSA私钥"""return rsa.generate_private_key(public_exponent=65537,key_size=bits,backend=default_backend())def generate_self_signed_cert(private_key, subject, validity_days=365):"""生成自签名证书"""# 有效期now = datetime.utcnow()cert_not_valid_before = nowcert_not_valid_after = now + timedelta(days=validity_days)# 创建证书签名请求(CSR)subject_alternative_name = x509.SubjectAlternativeName([# 你可以根据需要添加其他名称,比如IP地址x509.DNSName(subject)])# 创建证书cert = (x509.CertificateBuilder().subject_name(x509.Name([# 你可以根据需要添加更多的字段x509.NameAttribute(NameOID.COMMON_NAME, subject),])).issuer_name(x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, subject),])).public_key(private_key.public_key()).serial_number(x509.random_serial_number()).not_valid_before(cert_not_valid_before).not_valid_after(cert_not_valid_after).add_extension(x509.SubjectAlternativeName(subject_alternative_name),critical=False,).sign(private_key, hashes.SHA256(), default_backend()))# 返回PEM格式的证书和私钥return (cert.public_bytes(serialization.Encoding.PEM),private_key.private_bytes(encoding=serialization.Encoding.PEM,format=serialization.PrivateFormat.TraditionalOpenSSL,encryption_algorithm=serialization.NoEncryption()))if __name__ == '__main__':# 使用函数private_key = generate_rsa_private_key()cert_pem, private_key_pem = generate_self_signed_cert(private_key, "localhost")# 打印证书和私钥(通常你会将它们保存到文件中)print("Certificate:")print(cert_pem.decode())print("Private Key:")print(private_key_pem.decode())# 导出证书和私钥到文件with open('./certificate.pem', 'wb') as f:f.write(cert_pem)with open('./private_key.pem', 'wb') as f:f.write(private_key_pem)print("证书和私钥已保存到当前目录。")

4.3 将生成的证书放到django项目根目录下

 略

五、使用证书启动项目

下面的路径自己调整一下

5.1 本地测试启动

python manage.py runsslserver --certificate certificate.pem --key private_key.pem

5.2 生产启动

python manage.py runsslserver --certificate /path/to/your/certificate.pem --key /path/to/your/private_key.pem 0.0.0.0:8000

六、生成docker镜像的dockerfile

FROM python:3.8.10
WORKDIR /app
COPY . /app
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone \
&& python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple \
&& pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 暴露端口
EXPOSE 8000
CMD ["python", "manage.py", "runsslserver", "0.0.0.0:8000", "--certificate", "certificate.pem", "--key", "private_key.pem"]

七、构建服务

到对应文件目录下

docker build -t my-django-app .

八、启动服务

docker run -d --name myappname  --restart=always -p 8000:8000 my-django-app


http://www.mrgr.cn/news/38947.html

相关文章:

  • 数字人直播屡次违规真相曝光!有哪些技术可以有效解决?
  • 你如何看待音乐倍速播放的问题呢?
  • 示波器带宽和测量的关系
  • C语言基础之数组
  • 大跳水!华为三折叠手机黄牛价暴跌,市场需求显真相
  • SNMP NETCONF及RESTCONF网络管理协议
  • 智能工具与团队协作的秘密武器
  • 物联网行业中的产品外壳定制流程与选型
  • 学科竞赛管理平台:SpringBoot框架深度开发
  • 支持分页的环形队列
  • 软件架构设计师教程 第11章 11.4 边缘计算概述 笔记
  • 程序bug的修复
  • 多模态:Florence2论文详解
  • 力扣(leetcode)每日一题 2073 买票需要的时间
  • WanFangAi是一款AI论文工具软件,具备免费选题、文献检索、写作助手等多项实用功能,可以智能生成论文大纲和全文,提供全方位的个性化帮助
  • C++软件试用期检测
  • 【大数据应用开发】2023年全国职业院校技能大赛赛题第01套
  • ACM2023第一次考核题解
  • 基于开源WQ装备知识图谱的智能问答优化2
  • 如何解决跨境电商税务管理难题