python2中requests.post能否做双向认证?需要的证书一般从哪里获得?

问题描述

python2中requests.post能否做双向认证?需要的证书一般从哪里获得?

如题,纠结了好久了。用socket和openssl方式通过2各pem文件可以实现认证,但是换成requests.post方式就不行了。成功的函数如下:

def ssl_request(data=None):
    import OpenSSL
    ctx = OpenSSL.SSL.Context(OpenSSL.SSL.SSLv23_METHOD)
    ctx.use_certificate_file('/Users/username/Work/cert.pem')  # 证书
    ctx.use_privatekey_file('/Users/username/Work/key-unencrypted.pem')  # 密钥

    sock = socket.socket()
    ssock = OpenSSL.SSL.Connection(ctx, sock)
    ssock.connect(('123.456.789.111', 443))
    send_flag = 1
    while send_flag == 1:
        try:
            ssock.send(data)
            send_flag = 0
        except (OpenSSL.SSL.WantReadError, OpenSSL.SSL.WantWriteError):
            continue
    write_flag = 1
    while write_flag == 1:
        try:
            recv_data = ssock.recv(16384)
            write_flag = 0
        except (OpenSSL.SSL.WantReadError, OpenSSL.SSL.WantWriteError):
            continue
    sock.close()
    return recv_data

解决方案

用request post做双向认证的错误是什么,是不是你的证书没有配置正确

时间: 2024-10-26 05:26:41

python2中requests.post能否做双向认证?需要的证书一般从哪里获得?的相关文章

在jsp实现的https双向认证系统中,怎么能用java来实现清除SSL状态?

问题描述 在jsp实现的https双向认证系统中,怎么能用java来实现清除SSL状态?主要是想实现注销当前登录用户,不关闭浏览器的情况下,使用别的Key(证书)再次登录系统.

nginx配置ssl加密(单/双向认证、部分https)

nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始采用的是全站加密,所有访问http:80的请求强制转换(rewrite)到https,后来自动化测试结果说响应速度太慢,https比http慢慢30倍,心想怎么可能,鬼知道他们怎么测的.所以就试了一下部分页面https(不能只针对某类动态请求才加密)和双向认证.下面分节介绍. 默认nginx是没有安装ssl模块的,需要编译安装nginx时加入--with

Tomcat服务器配置https双向认证(使用keytool生成证书)

一,HTTPS原理 1,HTTP.HTTPS.SSL.TLS介绍与相互关系 (1)HTTP:平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的(明文),因此使用HTTP协议传输隐私信息非常不安全. (2)HTTPS:为了保证隐私数据能加密传输,采用SSL/TLS协议用于对HTTP协议传输的数据进行加密,也就是HTTPS. (3)SSL:SSL(Secure Sockets Layer)协议是由网景公司设计,后被IETF定义在RFC 6101中.目前的版本是3.0. (4)TLS:

nginx环境下配置ssl加密(单双向认证、部分https)_nginx

nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始采用的是全站加密,所有访问http:80的请求强制转换(rewrite)到https,后来自动化测试结果说响应速度太慢,https比http慢慢30倍,心想怎么可能,鬼知道他们怎么测的.所以就试了一下部分页面https(不能只针对某类动态请求才加密)和双向认证.下面分节介绍. 默认nginx是没有安装ssl模块的,需要编译安装nginx时加入--with

android 使用client.crt、client.key和ca.crt完成双向认证

问题描述 android 使用client.crt.client.key和ca.crt完成双向认证 我想做https的双向认证,在android端使用pfx格式的客户端私钥和crt格式的服务器根证书可以完成功能. 现在是:客户端的私钥文件会从服务器端下载,下载下来是client.crt和client.key两个文件,我现在只知道通过openssl的命令行pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

ssl-Java SSL双向认证,证书访问控制问题

问题描述 Java SSL双向认证,证书访问控制问题 Java SSL双向认证,同一个根证书签发的不同证书,可不可以实现只让一个能访问,另一个不让访问?怎么实现?以下是我现在的配置: 客户端: 使用者: A证书 B证书 颁发者: |____RootCA |____RootCA 服务端: Server.jks,包含以下证书, 127.0.0.1证书 |____RootCA 我还需要做些什么? 求大神不吝赐教,小弟先谢过了! 解决方案 这个访问哪个是你自己控制的,比如服务端,你配置使用哪个证书,服务

https双向认证,如何在服务端获取当前请求的客户端证书id

问题描述 RT,在https双向认证的环境下,服务端配置了客户端证书的可信任证书列表,每个客户,一个独立的客户端证书.那么当一个请求到达服务端后,在服务端的代码中,如何来获取当前请求的客户端证书是哪一个?高人可以结合某个特定的容器配置来说明,万分感谢 解决方案 X509Certificate[] certs = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");双向认证之后

ssl-https双向认证,对客户端的认证,是协议来完成还是开发人员自己完成

问题描述 https双向认证,对客户端的认证,是协议来完成还是开发人员自己完成 看资料说对客户端证书的认证是在ssl握手时,也就是有协议来完成而不是从请求中获取证书进行判断 是吗?因为公司里的代码看到了这个类X509Certificate然后有一段逻辑,搞得我现在不清楚,https在设置双向认证时,对客户端的认证是协议来完成,还是开发人员自己完成啊 解决方案 看你在什么层次上开发,如果是https协议上,那么就是协议完成,如果是tcp/ip层次上就是自己完成. 解决方案二: 是协议中有这个定义

ssl-Java Tomcat SSL 服务端/客户端双向认证

问题描述 Java Tomcat SSL 服务端/客户端双向认证 http://www.blogjava.net/icewee/archive/2012/06/04/379947.html 按照这个文章做的,但是遇到了错误,,改了几天也改不掉 解决方案 所以都到不了选择继续浏览那一步,,,,,, 解决方案二: 望大神指教,,,研究几天了,,,qq784700042 解决方案三: 1.你的截图里面用的HTTP协议,应该用HTTPS,还要注意端口是否填写正确. 2.检查HTTPS的配置是否正确,最好