Python 学习之 创建https服务
python创建https服务分为两步:第一步是配置安全证书文件,第二步是python服务启用证书。详细内容如下:
第一步:获取并配置安全证书
安全证书有自签名证书与公共证书之分,根据实际需求获取。本文基于内部网络创建https服务为由,以获取自签名证书为例,步骤如下:
Step 1:python安装OpenSSL模块
首先需要安装Python中的OpenSSL模块。
在命令行中执行以下命令安装OpenSSL模块:
----pip install pyopenssl
Step 2:生成私钥
使用以下命令生成私钥:
----openssl genrsa -out server.key 2048
(其中,2048是私钥长度,可以根据需要进行修改。)
Step 3:生成证书签名请求
使用以下命令生成证书签名请求:
----openssl req -new -key server.key -out server.csr
在执行该命令时,需要输入一些关于证书的信息,如Common Name、Organization等。这些信息将用于生成证书。
Step 4:生成自签名证书
使用以下命令生成自签名证书:
----openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
(其中,365是证书有效期(以天为单位),可以根据需要进行修改。)
Step 5:python配置启用证书,代码如下:
import ssl ssl_cert = 'D:/server.crt' ssl_key = 'D:/server.key' # 创建ssl上下文 ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) #加载证书和密钥 ssl_context.load_cert_chain(certfile=ssl_cert, keyfile=ssl_key)
第二步:python服务启用证书
示例 代码:
from http.server import BaseHTTPRequestHandler from http.server import HTTPServer import json
class RequestHandler(BaseHTTPRequestHandler):
def do_GET(self): # 处理GET请求的逻辑 response = { "code": 0, "msg": "获取信息成功"} self.send_response(200) # 设置响应码 self.send_header('Content-type', 'application/json') # 设置响应头 self.end_headers() # 完成响应头的发送 self.wfile.write(json.dumps(response).encode('utf-8'))
def do_POST(self): # 处理POST请求的逻辑 print("处理post请求") response = { "code": 0, "msg": "success", "data": "创建成功"} self.send_response(200) # 设置响应码 self.send_header('Content-type', 'application/json') # 设置响应头 self.end_headers() # 完成响应头的发送 self.wfile.write(json.dumps(response).encode('utf-8')) httpd = HTTPServer(('172.16.0.1', 443), RequestHandler) httpd.socket = ssl_context.wrap_socket(httpd.socket, server_side=True) httpd.serve_forever()
postman调用结果如下:
学习参考文档:百度安全验证