首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将pyOpenSSL verify_cb的ssl证书中的cn与生成的套接字相关联

在Python的OpenSSL库中,verify_cb方法用于验证服务器证书的有效性。如果使用了VERIFY_CB回调函数,服务器证书将包含一个verify_callback函数参数。你可以使用此回调函数在验证过程中返回一些额外的标识信息,以便在客户端和连接的套接字之间建立关联。

以下是一个例子,展示如何在pyOpenSSL库中使用verify_cb方法,将ssl证书中的CNCommon Name,即证书颁发给的一个或多个域名)与生成的套接字对应起来。首先,导入必要的库:

代码语言:python
复制
import OpenSSL
from OpenSSL.SSL import Context
from OpenSSL.SSL import Connection, SSLv23_METHOD
from OpenSSL.SSL import VERIFY_CLIENT_ONCE
from OpenSSL.crypto import X509Chain

接下来创建一个ssl_context对象,它包含我们想要的连接相关的设置:

代码语言:python
复制
# CA证书路径(路径中请包含完整文件名)
ca_certificate_path = '/path/to/ca/certificate/full_chain.pem'

# 创建SSL上下文
ssl_context = Context(SSLv23_METHOD)
ssl_context.set_tls_ver_server(OpenSSL.SSL.TLSv1_2_METHOD)
ssl_context.set_cafile(ca_certificate_path)

我们想要使用verify_cb方法将服务器证书与相应的套接字关联起来。所以,实现一个callback函数:

代码语言:python
复制
def ssl_verify_callback(conn, x509, depth, errnum, callback_arg):
    """此回调函数将在证书有效时调用。在此函数中,您可以解析证书并查找所需的字段。
    对于您的问题,您想将客户端的CN与连接的套接字关联起来。
    
    Args:
    :param conn: 将要使用的连接对象
    :param x509: 待处理的证书
    :param depth: 证书链中的深度(即证书的层次结构)
    :param errnum: 当前验证错误的数字编号
    :param callback_arg: 与回调调用的实例相关的参数
    :return: None (您可以通过返回适当的值来执行其他操作)
    """

    # 存储服务器证书CN
    cn = x509.get_subject().commonName
    
    # 连接的套接字
    sock = callback_arg
    
    # 将客户端证书的CN和生成的套接字关联起来
    associated_socket = sock.get_context()
    associated_socket.set_verify(context.VERIFY_PEER, verify_cb)
    associated_socket.set_allow_unsigned_peer_cert(True)
    associated_socket.set_issuer(x509.get_issuer())
    associated_socket.set_subject(x509.get_subject())
    associated_socket.set_subject_name(x509.get_subject_name())
    associated_socket.set_issuer_name(x509.get_issuer_name())
    associated_socket.set_psk_identity(cn)
    associated_socket.set_psk(cn, "password")
    
    # 如果所有操作都能正常执行,则此回调函数正常工作。返回None以不中断客户端连接
    return None


# 使用给定的CA路径设置证书验证回调
verify_cb = ssl_verify_callback

然后使用生成的客户端身份与服务器连接:

代码语言:python
复制
# 连接到服务器
sock = Connection((hostname, port), ssl_context, verify_callback)

这个代码示例将创建一个CallbackVerify对象和AssociatedSocket对象来进行套接字的验证和关联。请注意,您需要替换代码中的ca_certificate_path值,以指向适合您的实际情况的CA证书路径。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

前端-最经典面试题之一,你能答出什么幺蛾子?

那这条消息是如何发送到 DNS 服务器又是如何将 IP 地址返回呢?...,浏览器存储起来,这个描述符是套接 ID,用于识别套接,原因是同一个客户端可能跟很多服务器同时连接; 客户端套接服务端套接进行连接,连接成功后,协议栈将目标服务器 IP 地址和端口号保存在套接中...套接则会写入相应信息,然后将状态改为“正在连接”; 服务端 TCP 模块收到连接请求后就要回应,客户端一样, 需要在 TCP 头部设置发送方和接收方端口号,以及将 SYN 设为 1,同时,返回响应时还要将...后来 IETF 将 SSL 标准化,称为 TLS(Transport Layer Security, 传输层安全协议) ,TLS 1.0 SSL 3.0 差别很小。...证书中包含:网站基本信息、网站公钥、CA 名字等信息(详细请看 X.509),然后 CA 根据这几个内容生成摘要(digest),再对摘要用 CA 私钥加密,加密后结果即数字签名,最后将数字签名也放入到证书中

49930

解决WARNING: pip is configured with locations that require TLSSSL, however the ss

SSL模块提供了以下功能:创建SSL/TLS安全套接,用于在网络上进行加密传输。对SSL/TLS套接进行身份验证,可以使用证书和其他凭据验证对方身份。...SSL模块可以用于创建SSL/TLS套接,配置服务器证书、私钥等信息,并支持在SSL/TLS连接上进行双向认证。...客户端服务器加密通信在客户端服务器之间建立连接时,可以使用SSL模块来创建SSL/TLS套接,并进行安全通信。...是原始套接,​​ssl_version​​指定SSL/TLS版本,​​cert_reqs​​指定对方证书要求级别,​​ca_certs​​指定信任CA证书。...需要注意是,SSL模块使用还涉及到证书和密钥管理,涉及到证书生成、签名、验证等操作。

2.5K20

什么是SSL证书?使用ssl证书优势?

HTTPS使用安全套接层(SSL)进行信息交换,简单来说HTTPS是HTTP安全版,是使用TLS/SSL加密HTTP协议。...SSL是指安全套接层协议(以及传输层协议TLS),位于TCP/IP协议各种应用层协议之间,为数据通讯提供安全支持,是目前使用最广泛安全协议。...1.3先验证证书所有者身份,再颁发SSL证书。 什么是SSL数字证书(SSL证书)? 数字证书一种,类似于驾驶、护照和营业执照电子副本。因为配置在服务器上,也称为SSL服务器证书。...CSR: CSR(Certificate Signing Request)即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥同时也生成证书请求文件,证书申请者只要把CSR....html原文链接:https://javaforall.cn

1K20

笔记:网络基础TCP、HTTP、HTTPS(HTTP+SSL

网络编程卷1:套接联网API(第3版).pdf 一、TCP(详情参考:必须懂计算机网络知识—(TCP)) 1.1、网络模型数据处理过程 1.2、TCP和UDP区别 TCP位于传输层,传输层协议还包括...理清几个概念很重要 1、CA(数字证书颁发机构) 2、非对称秘钥:CA一对非对称秘钥、服务器一对非对称秘钥、客户端一对非对称秘钥 3、对称秘钥:客户端随机生成,用于认证完成之后数据加解密(客户端通过服务器返回数字证书中公钥加密对称秘钥后...1,然后对服务器返回数字证书中内容进行取摘要运算得到摘要2,最后对比摘要1摘要2是否相等,继而判断服务方是否是被CA认证服务方。...因为SSL并不对传输数据做签名。但是SSL加上数字签名证书可以解决该问题。....html原文链接:https://javaforall.cn

47110

SSL协议简介

4、数字证书: 数字证书其实就是一个小计算机文件,其作用类似于我们身份、护照,用于证明身份,在SSL中,使用数字证书来证明自己身份,而不是伪造。...SSL介绍: 安全套接(Secure Socket Layer,SSL)协议是Web浏览器Web服务器之间安全交换信息协议,提供两个基本安全服务:鉴别保密。...ClientHello 客户发送CilentHello信息,包含如下内容: (1)客户端可以支持SSL最高版本号 (2)一个用于生成主秘密32随机数。...取客户端支持最高版本号和服务端支持最高版本号中较低者。 (2)一个用于生成主秘密32随机数。...1.5密钥生成过程 这样握手协议完成,下面看下什么是预备主密钥,主密钥是怎么生成。为了保证信息完整性和机密性,SSL需要有六个加密秘密:四个密钥和两个IV。

75120

HTTPS协议原理和流程分析

如上图所示 HTTPS 相比 HTTP 多了一层 SSL/TLS SSL(Secure Socket Layer,安全套接层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP...具体步骤说明: 如上图所示,在第 ② 步时服务器发送了一个SSL证书给客户端,SSL书中包含具体内容有: (1)证书发布机构CA (2)证书有效期 (3)公钥 (4)证书所有者 (...CA,服务器发来书中颁发者CA比对,用于校验证书是否为合法机构颁发; (3)如果找不到,浏览器就会报错,说明服务器发来证书是不可信任; (4)如果找到,那么浏览器就会从操作系统中取出 颁发者...CA 公钥,然后对服务器发来证书里面的签名进行解密; (5)浏览器使用相同hash算法计算出服务器发来证书hash值,将这个计算hash值书中签名做对比; (6)对比结果一致,则证明服务器发来证书合法...(4)客户端收到服务端传来证书后,先从 CA 验证该证书合法性,验证通过后取出证书中服务端公钥,再生成一个随机数 Random3,再用服务端公钥非对称加密 Random3 生成 PreMaster

13.6K22

干货 | Elasticsearch7.X X-Pack基础安全实操详解

4.1 安全配置 默认情况下,拥有安全免费许可时,Elasticsearch安全功能被禁用。 要启用安全功能,需要设置xpack.security.enabled。...4.2.2 生成节点证书 1、证书实现加密通信原理 TLS需要X.509证书(X.509 证书是一个数字证书,它使用 X.509 公有密钥基础设施标准将公有密钥书中包含身份相关联。...只有证书颁发机构才有权访问 CA 证书)才能对之通信应用程序执行加密和身份验证。 为了使节点之间通信真正安全,必须对证书进行验证。...6、小结 X-Pack安全配置核心三步骤: 第一:设置:xpack.security.enabled: true。 第二:生成TLS证书。 第三:配置加密通信。 第四:设置密码。.../cn/blog/getting-started-with-elasticsearch-security https://www.elastic.co/cn/blog/security-for-elasticsearch-is-now-free

8.2K31

详解HTTP

http协议工作原理 图片 连接web服务器 一个http客户端,通常是浏览器,web服务器http端口建立一个TCP套接连接。...服务器将资源复本写到TCP套接,由客户端读取。一个响应由状态行,消息报头,响应正文组成。...HTTP 协议中没有加密机制,但可以通 过和 SSL(Secure Socket Layer, 安全套接层 )或 TLS(Transport Layer Security, 安全层传输协议)组合使用...验证证书合法性(颁发证书机构是否合法,证书中包含网站地址是否正在访问地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信提示。 (b)....如果证书受信任,或者是用户接受了不受信证书,浏览器会生成一串随机数密码(接下来通信密钥),并用证书中提供公钥加密(共享密钥加密)。

57040

SSL协议体系结构

大家好,又见面了,我是你们朋友全栈君。 SSL原理及应用(1)SSL协议体系结构 SSL(Secure Sockets Layer ,安全套接层),是为网络通信提供安全及数据完整性一种安全协议。...这些消息交换能够实现如下操作: q 客户机认证服务器 q 允许客户机服务器选择双方都支持密码算法 q 可选择服务器认证客户 q 使用公钥加密技术生成共享密钥 q 建立加密SSL连接 SSL...q 长度(3节):以字节为单位报文长度。 q 内容(≥1节):使用报文有关参数。 SSL握手协议报文类型如表8-1所示。...建立安全属性包括:协议版本、会话ID、密文族、压缩方法,同时生成并交换用于防止重放攻击随机数。...; q 证书中服务器域名是否符合服务器自己真正域名。

1.4K10

小程序开发为什么要https和SSL证书呢?在哪里可以申请办理?

SSL是指安全套接层协议(以及传输层协议TLS),位于TCP/IP协议各种应用层协议之间,为数据   通讯提供安全支持,是目前使用广泛安全协议。...HTTPS使用安全套接层(SSL)进行信息交换,简单来说HTTPS是HTTP安全版,是使用TLS/SSL加密HTTP协议   什么是SSL数字证书(SSL证书)?   ...数字证书一种,类似于驾驶、护照和营业执照电子副本。因为配置在服务器上,也称为SSL服务器证书。...CSR:   CSR(Certificate Signing Request)即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥同时也生成证书请求文件,证书申请者只要把...CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户证书。

1.4K10

https协议原理

HTTPS相比HTTP多了一层SSL/TLS SSL(Secure Socket Layer,安全套接层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议各种应用层协议之间...TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被...SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。...客户端向服务器发出请求信息, 服务器收到信息后返回一个响应信息,其中包含SSL证书------证书中包含内容有签发机构CA,有效期等证明证书真实性和有效性信息,以及公钥; 客户端收到服务器发来证书后...,首先对其真实性进行验证,之后发送随机生成对称加密算法和对称密钥,该信息用第二步收到公钥进行加密; 服务器收到客户端信息后用传来对称加密方式加密一个响应信息并反馈给客户端; 客户端收到服务器加密信息并用自己对称加密方式验证正确后

28120

Https传输协议传输数据时是怎么进行加密

HTTPS(超文本传输安全协议)使用了一种称为SSL(安全套接层)或TLS(传输层安全性)协议来进行加密。...以下是HTTPS进行加密基本过程: 建立安全连接: 客户端(如浏览器)向服务器发送一个请求,请求建立一个加密连接。 服务器回应,并发送其SSL证书(包含公钥和服务器一些其他信息)。...验证证书: 客户端验证服务器SSL证书是否有效,是否由受信任证书颁发机构(CA)签发,以及证书中域名是否请求服务器域名匹配。...客户端使用服务器公钥来加密一个随机生成对称密钥(会话密钥),并将加密后密钥发送给服务器。 服务器使用其私钥来解密这个对称密钥。...完整性检查: HTTPS还使用了一种称为消息认证码(MAC)技术来确保数据完整性。 客户端和服务器都使用一个共享密钥(通常用于加密数据密钥相同)来生成MAC。

6510

深入了解HTTPS?

相信有一部分同学犹豫片刻后也能给出答案:HTTPS由HTTP协议+SSL/TSL协议组成,通过在应用层(HTTP)运输层(TCP)之间加入安全套接层来实现数据加密解密功能,从而实现数据安全传输。...于是人们又讨论出一个解决方案:不预先生成对称加密秘钥,而是在客户端服务端交互过程中随机生成对称加密秘钥,并且在互联网中安全传输对称加密秘钥,这样一来既能够保证数据安全性,又能够缩短秘钥生命周期.../TLS握手过程 第一个阶段中客户端服务端确定了SSL协议版本号、所使用密码套件、双方生成随机数等 第二个阶段中服务端将自己CA证书发送给客户端进行验证 第三个阶段中客户端基于双方随机数生成此次会话..."对称加密秘钥",并使用CA证书中公钥对"对称加密秘钥"加密并传输给服务端 tip:严格意义上讲,这是一个用于讲解HTTPS协议本质SSL握手协,真实握手协议会更加复杂。...这里引用一下文章开头提到一段话:HTTPS由HTTP协议+SSL/TSL协议组成,通过在应用层(HTTP)运输层(TCP)之间加入安全套接层来实现数据加密解密功能,从而实现数据安全传输。

28020

技术分享 | MySQL : SSL 连接浅析

SSL(Secure Socket Layer 安全套接层)是基于 HTTPS 下一个协议加密层,最初是由网景公司(Netscape)研发,后被 IETF(The Internet Engineering...起初是因为HTTP在传输数据时使用是明文(虽然说 POST 提交数据时放在报体里看不到,但是还是可以通过抓包工具窃取到)是不安全,为了解决这一隐患网景公司推出了SSL安全套接协议层,SSL 是基于...非对称密钥算法相比,对称密钥算法具有计算速度快优点,通常用于对大量信息进行加密(如对所有报文加密);而非对称密钥算法,一般用于数字签名和对较少信息进行加密。...CA 证书和其证书中服务器主机名执行验证 注意:主机名身份验证 VERIFY_IDENTITY 不适用于由服务器自动创建或使用 mysql_ssl_rsa_setup 手动创建自签名CA证书。.../doc/refman/8.0/en/using-encrypted-connections.html 本文关键:#SSL# #加密连接# ---- 关于SQLE 爱可生开源社区 SQLE 是一款面向数据库使用者和管理者

2.8K10

Request.ServerVariables获取环境变量

("Appl_Physical_Path")  应用程序元数据库路径相应物理路径 Request.ServerVariables("Path_Translated")  通过由虚拟至物理映射后得到路径...("Https") 如果请求穿过安全通道(SSL),则返回ON如果请求来自非安全通道,则返回OFF Request.ServerVariables("Instance_ID") IIS实例ID号 Request.ServerVariables...") 返回內容:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1) Request.ServerVariables("Https_Keysize") 安全套接层连接关键位数...("Auth_User") 代用户名 Request.ServerVariables("Cert_Cookie") 唯一客户证书ID号 Request.ServerVariables("Cert_Flag...("Cert_Keysize") 安全套接层连接关键位数,如128 Request.ServerVariables("Cert_Secretkeysize") 服务器验证私人关键位数如1024

64020

ninja_shell:一款使用了端口碰撞和AES256-GCM加密安全Shell

该工具使用是原始套接,原始模式可以绕过计算机处理TCP/IP某些方式。内核上TCP/IP堆栈所做典型封装/解封装层不同,因为我们需要手动将数据包传递给需要应用程序。...由于没有TCP/IP处理,因此它不是一个已处理数据包。这是一个原始数据包。使用数据包应用程序现在负责解析Header、分析数据包以及内核中TCP/IP堆栈通常为你做所有事情。...原始套接是一个套接,它支持接收数据包,绕过标准TCP/IP处理,并将数据包发送给需要它们应用程序。  ...安装OpenSSL库 在基于Linux安装方式如下: # apt-get install openssl-dev 或 \# apt-get install libssl or ssl-dev 除此之外,...许可协议  本项目的开发发布遵循GPL-3.0开源许可协议。

39620

一文教你了解SSL协议「建议收藏」

什么是SSL 简称是SSL,全称Secure Sockets Layer 安全套接协议,一般我们在学习 SSL 时候,都会和 TLS一起来学习,为什么呢?...因为 SSL 和 TLS 都是为网络通信提供安全及数据完整性一种安全协议。TLSSSL在传输层应用层之间对网络连接进行加密。 我们先看 SSL协议,然后在看 TLS协议。...SSL协议位于 TCP/IP 协议各种应用层协议之间,为数据通讯提供安全支持。...,并返回数字证书,一个服务器生成随机数(Server random,注意这是第二个随机数)等信息; 第三步:客户端确认数字证书有效性,然后生成一个新随机数(Premaster secret),然后使用数字证书中公钥...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138583.html原文链接:https://javaforall.cn

49820

Spring Boot第七章-Spring Boot Web配置-Tomcat配置

配置 SSL(Secure Sockets Layer,安全套接层 )是网络通信提供安全以及数据完整性一种安全协议,SSL在网络传输层对网络连接进行加密。...SSL协议位于TCP/IP协议各种应用层协议之间,为数据通信提供安全支持。 在基于B/Sweb应用中,是通过HTTPS实现SSL。...(1)生成证书 使用SSL首先需要一个证书,这个证书既可以是自签名,也可以从SSL书中心获得。...,不加会把证书文件生成在电脑用户目录里,比如:C:\Users\DELL (2)Spring Boot配置SSL 将.keystore复制到项目的根目录 在application文件中配置SSL信息,跟生成证书文件里内容一致...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100300.html原文链接:

88510
领券