自签名证书生成
给自己的网站生成一个自签名证书,用于测试或者本地开发。
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 了。