gpt4 book ai didi

python - 在 python 中进行 SSL 客户端身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:25 25 4
gpt4 key购买 nike

好的,我正在尝试使用客户端证书向 Nginx 服务器验证 Python 客户端。到目前为止,这是我尝试过的:

创建本地 CA

openssl genrsa -des3 -out ca.key 4096openssl req -new -x509 -days 365 -key ca.key -out ca.crt

创建服务器 key 和证书

openssl genrsa -des3 -out server.key 1024openssl rsa -in server.key -out server.keyopenssl req -new -key server.key -out server.csropenssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

使用类似的程序创建客户端 key 和证书

openssl genrsa -des3 -out client.key 1024openssl rsa -in client.key -out client.keyopenssl req -new -key client.key -out client.csropenssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt

将这些行添加到我的 nginx 配置

server {    listen 443;    ssl on;    server_name dev.lightcloud.com;    keepalive_timeout 70;    access_log /usr/local/var/log/nginx/lightcloud.access.log;    error_log /usr/local/var/log/nginx/lightcloud.error.log;    ssl_certificate /Users/wombat/Lightcloud-Web/ssl/server.crt;    ssl_certificate_key /Users/wombat/Lightcloud-Web/ssl/server.key;    ssl_client_certificate /Users/wombat/Lightcloud-Web/ssl/ca.crt;    ssl_verify_client on;    location / {        uwsgi_pass unix:///tmp/uwsgi.socket;        include uwsgi_params;    }}

创建了一个 PEM 客户端文件

cat client.crt client.key ca.crt > client.pem

创建了一个测试 python 脚本

import sslimport http.clientcontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23)context.load_verify_locations("ca.crt")context.load_cert_chain("client.pem")conn = http.client.HTTPSConnection("localhost", context=context)conn.set_debuglevel(3)conn.putrequest('GET', '/')conn.endheaders()response = conn.getresponse()print(response.read())

现在我从服务器收到 400 The SSL certificate error。我做错了什么?

最佳答案

看来我的问题是我没有正确创建 CA 并且没有以正确的方式签署 key 。需要签署 CA 证书,如果您假装是顶级 CA,您可以自行签署您的 CA 证书。

openssl req -new -newkey rsa:2048 -keyout ca.key -out ca.pemopenssl ca -create_serial -out cacert.pem -days 365 -keyfile ca.key -selfsign -infiles ca.pem

然后你使用ca命令来签署请求

openssl genrsa -des3 -out server.key 1024openssl req -new -key server.key -out server.csropenssl ca -out server.pem -infiles server.csr 

关于python - 在 python 中进行 SSL 客户端身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33504746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com