Skip to content

自签名证书生成

给自己的网站生成一个自签名证书,用于测试或者本地开发。

bash
docker run -it \
    --rm \
    -e CERT_DNS="your.domain.com" \
    -v $PWD/certs:/ssl \
    soulteary/certs-maker:latest

使用自签名证书创建 HTTPS 服务器:

python
from sanic import Sanic
from sanic.response import json

app = Sanic(__name__)
ssl = {
    "cert": "your.domain.com.crt",
    "key": "your.domain.com.key",
}


@app.route("/")
async def test(request):
    return json({"hello": "world"})


if __name__ == "__main__":
    app.run(host="your.domain.com", port=8000, ssl=ssl, dev=True)

客户端:

python
import requests

r1 = requests.get("https://your.domain.com:8000", verify="your.domain.com.crt")
print(r1.json())

try:
    r2 = requests.get("https://your.domain.com:8000")
    print("Error: ", r2.status_code)
    print(r2.json())
except requests.exceptions.SSLError as e:
    print("Error:", e)

在 Python 中使用 SSLContext 来包装请求:

python
context = SSLContext()
context.verify_mode = ssl.CERT_REQUIRED
context.check_hostname = True
context.load_verify_locations(cadata="...")

这样就可以在本地开发时使用 HTTPS 了。

参考