请稍侯

python3快速在当前目录建立HTTP(S)服务器

18 November 2024

Python3快速在当前目录建立HTTP(S)服务器

Phthon3 快速启一个默认 8000 端口 http.server

python3 -m http.server

Python3 的简单 HTTPS 服务器脚本

import http.server, ssl, os

server_ip = '0.0.0.0'
server_port = 4443
server_address = (server_ip, server_port)
home_dir=os.path.expanduser("~")
server_cert = f"{home_dir}/developer/Certs/ssl_selfsign_for_https/wodedata.pem"

httpd = http.server.HTTPServer (server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, server_side=True, certfile=server_cert, ssl_version=ssl.PROTOCOL_TLS)
print ("Serving HTTPS on" + server_ip + " port " + str(server_port) + " (https://" + server_ip + ":" + str(server_port) + ") ... ")
httpd. serve_forever()

使用 openssl 生成自签证书

# generate self-sign cert, 私钥与证书都存放到了 local.test.pem
openssl req -new -x509 -keyout local.test.pem -out local.test.pem -days 365 -nodes -subj "/C=US/ST=CA/L=LA/0=Test/CN=local.test"

证书创建

  1. 新建一个生成证书的配置文件 openssl.cnf,添加如下内容:
    ```conf [ req ] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = req_distinguished_name req_extensions = v3_req

[ req_distinguished_name ] C = CN ST = ST L = City O = Org OU = Unit CN = wodedata.com

[ v3_req ] keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names

[ alt_names ] DNS.1 = wodedata.com DNS.2 = localhost DNS.3 = example.com IP.1 = 127.0.0.1 IP.2 = 192.168.1.1


2. 生成证书,并将公钥与私钥都合并成到 `wodedata.pem`  
```sh
# 从配置生成生成证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout wodedata.key -out wodedata.crt -config openssl.cnf -extensions v3_req

# 合并公+私钥到 pem 文件
cat wodedata.crt wodedata.key > wodedata.pem