微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

执行SSL客户端身份验证是python

好的,我正在尝试使用客户端证书来验证@R_502_5171@服务器的python客户端.这是我到目前为止尝试的内容

创建了本地CA.

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

创建服务器密钥和证书

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

使用类似的过程来创建客户端密钥和证书

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

将这些行添加到我的@R_502_5171@配置中

server {
    listen 443;
    ssl on;
    server_name dev.lightcloud.com;
    keepalive_timeout 70;

    access_log /usr/local/var/log/@R_502_5171@/lightcloud.access.log;
    error_log /usr/local/var/log/@R_502_5171@/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 ssl
import http.client

context = 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 SSL证书错误.我究竟做错了什么?

解决方法:

似乎我的问题是我没有正确创建CA并且没有以正确的方式签署密钥.需要对CA证书进行签名,如果您伪装成顶级CA,则需要对CA证书进行自签名.

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

然后使用ca命令对请求进行签名

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐