第一步生成根证书 # Generate CA private key openssl genrsa -out ca.key 2048 # Generate CSR openssl req -new -key ca.key -out ca.csr # Generate Self Signed certificate(CA 根证书) openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt第二步生成服务端证书: # server.key 为私钥 openssl genrsa -out server.key 2048 #这里的/cn是必须添加的 是服务端的域名或者是etc/hosts中的ip别名 也可以是使用* openssl req -new -key server.key -subj "/CN=192.168.31.53" -out server.csr openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650第三步生成客户端证书: openssl genrsa -out client.key 2048 # /cn是服务端的域名 或者是etc/hosts中的ip别名 也可以是使用* 加端口号会验证不通过有待研究 openssl req -new -key client.key -subj "/CN=192.168.31.53" -out client.csr openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 3650 以上内容来自Android+OkHttp3+Golang(Gin)+OpenSSL单双向校验(一)_Time-Traveler的博客-CSDN博客Fastapi关键代码 uvicorn.run(app='server:app', host='0.0.0.0', port=8084, reload=True, log_level="info",ssl_keyfile="./ssl/server.key",ssl_cert_reqs=1,ssl_ca_certs="./ssl/ca.crt",ssl_certfile="./ssl/server.crt")
测试代码
http = urllib3.PoolManager(cert_file='./ssl/client.crt',cert_reqs='CERT_REQUIRED',ca_certs='./ssl/ca.crt',key_file='./ssl/client.key') request_context = http.connection_from_host('192.168.31.53',port=8084,scheme='https')r1 = request_context.request('GET', "/test") print(r1.data.decode('utf-8'))
上一篇:Python-基础知识
下一篇:拼多多存在多种重大风险