首页 > 编程语言 >快速架设Python HTTPS服务

快速架设Python HTTPS服务

时间:2023-06-16 09:34:54浏览次数:60  
标签:key socket crt 证书 Python self HTTPS example 架设

1. 使用 OpenSSL 生成密钥和证书文件

openssl req -newkey rsa:2048 -nodes -keyout example.key -x509 -days 365 -out example.crt

这是一个使用 OpenSSL 工具生成自签名证书的命令。它会要求你输入一些相关信息,例如Country Name、State of Province Name、Locality Name等。你可以根据自己的实际情况进行填写。

执行完上述命令后,当前目录下就会生成 example.key 和 example.crt 文件。example.key 是私钥文件,而 example.crt 是自签名证书文件。

以下是各个选项的解释:

  • req 是 OpenSSL 工具的一个子命令,用于处理证书签名请求。
  • -newkey rsa:2048 选项表示要创建一个新的 RSA 密钥,并将其长度设置为 2048 位。这个密钥将用于后续的证书请求和签名操作。
  • -nodes 选项表示不要对私钥进行加密,即使私钥被泄露也不会对其进行保护。这在测试和开发过程中很有用,但在生产环境中不建议使用。
  • -keyout example.key 选项指定了生成的私钥文件的路径和名称。
  • -x509 选项表示生成一个自签名的 X.509 格式证书,而不是一个证书请求。
  • -days 365 选项表示证书的有效期为一年,可以根据需要进行更改。
  • -out example.crt 选项指定了生成的证书文件的路径和名称。

以上信息由ChatGPT生成的。

2. 启动Python 3的HTTPS服务器

import json
import ssl
from http.server import HTTPServer, BaseHTTPRequestHandler


class MyRequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'application/json')
        self.end_headers()
        message = {"data": "hello"}
        self.wfile.write(bytes(json.dumps(message), 'utf-8'))


if __name__ == '__main__':
    # 创建 SSL/TLS 上下文
    context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)

    # 加载证书和密钥
    context.load_cert_chain(certfile='/tmp/ca/example.crt', keyfile="/tmp/ca/example.key")

    # 创建 HTTP 服务器,并使用 wrap_socket() 方法包装 socket
    httpd = HTTPServer(('localhost', 4443), MyRequestHandler)
    httpd.socket = context.wrap_socket(httpd.socket, server_side=True)

    # 启动服务器
    httpd.serve_forever()

3. 扩展链接

标签:key,socket,crt,证书,Python,self,HTTPS,example,架设
From: https://www.cnblogs.com/echo1937/p/17484750.html

相关文章

  • ubuntu安装python3.8.3
    1.打开终端,更新软件包列表:sudoaptupdate2.安装编译Python所需的构建工具和库:sudoaptinstallbuild-essentiallibssl-devzlib1g-devlibncurses5-devlibncursesw5-devlibreadline-devlibsqlite3-devlibgdbm-devlibdb5.3-devlibbz2-devlibexpat1-devliblzma-dev......
  • Python 初学笔记
    1.注释:与c和cpp不一样,python的注释不是//或者/**/,而是#.....  //单行注释多行注释"""......."""                         //多行注释type()     //查看数据的类型,在括号里面填入查看数据的信息数据类型转......
  • Python贝叶斯回归分析住房负担能力数据集|附代码数据
    原文链接:http://tecdat.cn/?p=11664最近我们被客户要求撰写关于贝叶斯回归的研究报告,包括一些图形和统计输出。我想研究如何使用pymc3在贝叶斯框架内进行线性回归。根据从数据中学到的知识进行推断 贝叶斯规则是什么? 本质上,我们必须将已经知道的知识与世界上的事实相结合。......
  • 如何运行 rpcz python example
    试着运行rpcz-python的example。过程记录如下。假设protobuf-py已经按照protobuf的安装说明安装了。发现protobuf-2.5.0版的python包是python2的,没有找到python3的。试着2to3.py转换一下,结果转换后无法安装。只好将python3.3换成python2.7pytho......
  • python: read mysql
    sql:createdatabasegeovindu;usegeovindu;droptableBookKindList;#书目录createtableBookKindList(BookKindIDINTNOTNULLAUTO_INCREMENT,#自动增加BookKindNamenvarchar(500)notnull,BookKindParentintnull,PRIMARYKEY(BookKindID)......
  • fatal: unable to access 'https://github.com/JiangYuLab/CNVcaller.git/': TCP conn
     001、gitclone报错 002、解决方法进入github官网,搜索该项目 003、上传至linux、解压[root@PC1test2]#unzipCNVcaller-master.zip ......
  • python下载文件的N中方式
    今天我们一起学习如何使用不同的Python模块从web下载文件。此外,你将下载常规文件、web页面、AmazonS3和其他资源。最后,你将学习如何克服可能遇到的各种挑战,例如下载重定向的文件、下载大型文件、完成一个多线程下载以及其他策略。1、使用requests你可以使用requests模块从一个......
  • Python之pandas基础
    1.pandas简介:paneldataanalysis(多维数据分析)pandas中具有两种基本的数据存储结构,存储一维values的Series和存储二维values的DataFrame;Series:Series一般由四个部分组成,分别是序列的值data、索引index、存储类型dtype、序列的名字name。其中,索引也可以指......
  • 【python基础】函数-参数形式
    鉴于函数定义中可能包含多个形参变量,因此函数调用中也可能包含多个实参变量。向函数传递实参变量给形参变量的方式有很多,可使用位置参数,这要求实参变量的顺序与形参变量的顺序相同;也可使用关键字参数,都由变量名和值组成,简称名称-值对;还可使用列表(元组)和字典。1.位置参数调用函数......
  • 在Python中根据字典值寻找键
    问题描述  在处理VOC数据集时,创建的字典如下所示label_map={0:'background',1:'aeroplane',2:'bicycle',3:'bird',4:'boat',5:'bottle',6:'bus',7:'car',8:'cat',9:......