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

如何使用OpenSSL函数计算TLS密钥交换的公钥?

OpenSSL是一个开源的加密库,提供了丰富的加密算法和功能。要使用OpenSSL函数计算TLS密钥交换的公钥,可以按照以下步骤进行:

  1. 生成私钥和公钥对:使用OpenSSL的命令行工具或编程语言中的OpenSSL库函数,可以生成一个私钥和对应的公钥。私钥用于加密和解密数据,公钥用于加密数据和验证签名。
  2. 加载私钥和公钥:将生成的私钥和公钥加载到程序中,以便后续使用。
  3. 创建TLS连接:使用OpenSSL库函数创建一个TLS连接,包括TLS握手过程。
  4. 密钥交换:在TLS握手过程中,客户端和服务器会交换密钥信息。其中,客户端会生成一个随机数作为Pre-Master Secret,并使用服务器的公钥对其进行加密,然后发送给服务器。
  5. 计算公钥:在服务器端,使用OpenSSL库函数加载私钥,并使用私钥对客户端发送的加密的Pre-Master Secret进行解密,得到原始的Pre-Master Secret。然后,使用OpenSSL库函数计算出对应的公钥。

需要注意的是,具体的代码实现会因编程语言和使用的OpenSSL版本而有所不同。以下是一个示例代码片段,使用C语言和OpenSSL库函数来计算TLS密钥交换的公钥:

代码语言:txt
复制
#include <openssl/ssl.h>
#include <openssl/evp.h>

int main() {
    // 生成私钥和公钥对
    EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL);
    EVP_PKEY_keygen_init(ctx);
    EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, 2048);
    EVP_PKEY *pkey = NULL;
    EVP_PKEY_keygen(ctx, &pkey);

    // 加载私钥和公钥
    SSL_CTX *ssl_ctx = SSL_CTX_new(TLS_method());
    SSL_CTX_use_PrivateKey(ssl_ctx, pkey);
    SSL_CTX_use_certificate(ssl_ctx, pkey);

    // 创建TLS连接
    SSL *ssl = SSL_new(ssl_ctx);
    SSL_set_fd(ssl, socket_fd);

    // 密钥交换
    SSL_accept(ssl);

    // 计算公钥
    EVP_PKEY *peer_key = SSL_get_peer_certificate(ssl);
    EVP_PKEY *public_key = X509_get_pubkey(peer_key);

    // 使用公钥进行加密或验证等操作

    // 清理资源
    EVP_PKEY_free(pkey);
    EVP_PKEY_CTX_free(ctx);
    SSL_free(ssl);
    SSL_CTX_free(ssl_ctx);

    return 0;
}

这是一个简单的示例,实际应用中可能需要根据具体情况进行适当的修改和完善。同时,根据具体的业务需求,可能还需要使用其他OpenSSL函数来完成更复杂的操作,如证书验证、数字签名等。

腾讯云提供了一系列与SSL/TLS相关的产品和服务,包括SSL证书、密钥管理、HTTPS加速等。您可以访问腾讯云官网了解更多详情:腾讯云SSL证书

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

相关·内容

PKI - 03 密钥管理(如何进行安全交换

Pre PKI - 02 对称与非对称密钥算法 密钥管理面临挑战 密钥管理面临挑战主要包括以下几点: 安全交换:在使用基于非对称密钥算法服务之前,实体需要获取其他实体。...然而,通过非信任通道进行交换存在安全风险,因为可能会受到中间人攻击,导致被伪造或篡改。 防止被截获和更改:在密钥交换过程中,必须确保不会被截获和更改。...综上所述,密钥管理面临着诸多挑战,包括安全交换、防止被篡改、Full Mesh复杂度以及用户确认密钥有效性不可靠性等问题。...安全密钥管理几种方式 手动密钥交换与确认 安全地交换,最简单安全方法是需要带外验证, 通过带外验证来安全地交换是一种简单而有效方法。...特别是在大规模网络中,或者需要频繁进行交换情况下,使用电话或其他带外通道来回读密钥指纹可能会变得不够实用和高效。因此,在实际应用中需要权衡利弊,根据具体情况选择合适密钥交换机制。

12100

为什么我强烈建议你使用ECC 证书

确保证书由合法 CA 签署,且适用于当前网站;2)使用证书提供非对称加密,完成密钥交换和服务端认证。...Be Signed Certificate)信息; 签发数字签名:使用 HASH 函数对 TBSCertificate 计算得到消息摘要,再用 CA 私钥进行加密,得到签名; 校验数字签名:使用相同...HASH 函数对 TBSCertificate 计算得到消息摘要,与使用 CA 解密签名得到内容相比较; 可以看到校验证书需要同时用到签名和非对称加密算法:目前必须使用 SHA-2 做为证书签名函数...在 RSA 密钥交换中,浏览器使用证书提供 RSA 加密相关信息,如果服务端能解密,意味着服务端拥有证书对应私钥,同时也能算出对称加密所需密钥密钥交换和服务端认证合并在一起。...在 ECDHE 密钥交换中,服务端使用证书私钥对相关信息进行签名,如果浏览器能用证书验证签名,就说明服务端确实拥有对应私钥,从而完成了服务端认证。密钥交换和服务端认证是完全分开

11.3K20
  • SSLTLS 双向认证(一) — SSLTLS 工作原理

    TLS1.2: RFC5246, 目前已广泛使用 TLS1.3: RFC8446 下面我们将介绍 TLS1.x 如何保证通讯安全。...签名产生算法:首先,使用散列函数计算公开明文信息信息摘要,然后,采用 CA 私钥对信息摘要进行加密,密文即签名。...(图一中 handshake 传回 server.crt) 5)client验证证书:client 读取证书中相关明文信息,采用相同散列函数计算得到信息摘要,然后,利用对应 CA 解密签名数据...pre-master,并用证书加密,发送给服务器 此时客户端已经获取全部计算协商密钥需要信息:两个明文随机数 random_C 和 random_S 与自己计算产生 pre-master,计算得到协商密钥...如何查看证书中有什么 证书中含有 申请者、申请者组织信息和个人信息、签发机构 CA 信息、有效时间、证书序列号等信息明文,同时包含一个签名。如查看百度证书详细信息。

    8.1K10

    科普 TLS 1.3 — 新特性

    消息; 第三步,客户端接收 ServerKeyExchange 后,使用证书进行签名验证,获取服务器端 ECDH 临时,生成会话所需要共享密钥;生成 ECDH 临时和 ClientKeyExchange...消息发送给服务端; 第四步,服务器处理 ClientKeyExchange 消息,获取客户端 ECDH 临时;服务器生成会话所需要共享密钥;发送密钥协商完成消息给客户端; 第五步,双方使用生成共享密钥对消息加密传输...TLS1.3 提供 1-RTT 握手机制,还是以 ECDHE 密钥交换过程为例,握手过程如下。...,将结果发送给客户端;选用客户端提供参数生成 ECDH 临时,结合选定 DH 参数计算出用于加密 HTTP 消息共享密钥;服务端生成临时通过 KeyShare 消息发送给客户端; 客户端接收到...KeyShare 消息后,使用证书进行签名验证,获取服务器端 ECDH 临时,生成会话所需要共享密钥; 双方使用生成共享密钥对消息加密传输,保证消息安全。

    3.1K60

    HTTPS 如何实现安全通信?

    但是最大问题是:如何安全密钥传递对方,专业术语 “密钥交换”。...由两个密钥组成,分别是 (public key) 和 “私钥(private key)”,两个密钥是不一样,这也就是不对称由来,可以任何人使用,私钥则自己保密。...ECC(Elliptic Curve Cryptography)是非对称加密里“后起之秀”,它基于“椭圆曲线离散对数”数学难题,使用特定曲线方程和基点生成和私钥,子算法 ECDHE 用于密钥交换...重点就是使用非对称加密“私钥”加密原文摘要,对方则使用非对称加密解密出摘要,再比对解密出原文通过摘要算法计算摘要与解密出摘要比对是否一致。这样就能像签署文件一样证明消息确实是你发送。...通过混合加密实现了机密性,利用摘要算法实现了完整性,通过数字签名使用非对称加密“私钥”加密原文摘要,对方则使用非对称加密解密出摘要,再比对解密出原文通过摘要算法计算摘要与解密出摘要比对是否一致实现了身份认证与不可否认

    17010

    自从掌握了网络安全,工资直接翻了番,真香!

    数据加密 数据必须被加密 1、对称密钥加密 同一个密钥进行加密,同一个密钥进行解密 优点:效率高 缺点:密钥维护非常困难;密钥交换非常困难; 2、非对称密钥加密 密钥对(加密,私钥解密;私钥加密,...解密) A -- B A就有自己私钥      B就有A B用A进行加密,然后把数据传给A,A用自己私钥进行解密 B怎么拿到A: 优点:维护密钥方便,只需维护自己私钥;数据比较安全...: 数字签名 (数据加密(太慢,不适用)、密钥交换) 再做密钥交换时候,我们使用加密私钥解密 数字签名 私钥加密 -- 解密 只有自己拥有自己私钥,用自己私钥对数据进行加密,对端,使用自己进行解密...两个加密程序调用接口--库文件 dh  --  非对称密钥算法(完成密钥交换) 常见文件: /etc/pki/tls 1995年由网景公司开发 ssh1.0 1996年ssh2.0 1999年把ssh...协议连接过程 以https为例 图片 图片 实验:如何使用openssl工具搭建https访问站点 1、客户: yum install httpd -y iptables -t filter -A INPUT

    41510

    透视HTTPS建造固若金汤城堡

    但是最大问题是:如何安全密钥传递对方,专业术语 “密钥交换”。...由两个密钥组成,分别是 (public key) 和 “私钥(private key)”,两个密钥是不一样,这也就是不对称由来,可以任何人使用,私钥则自己保密。...ECC(Elliptic Curve Cryptography)是非对称加密里“后起之秀”,它基于“椭圆曲线离散对数”数学难题,使用特定曲线方程和基点生成和私钥,子算法 ECDHE 用于密钥交换...重点就是使用非对称加密“私钥”加密原文摘要,对方则使用非对称加密解密出摘要,再比对解密出原文通过摘要算法计算摘要与解密出摘要比对是否一致。这样就能像签署文件一样证明消息确实是你发送。...通过混合加密实现了机密性,利用摘要算法实现了完整性,通过数字签名使用非对称加密“私钥”加密原文摘要,对方则使用非对称加密解密出摘要,再比对解密出原文通过摘要算法计算摘要与解密出摘要比对是否一致实现了身份认证与不可否认

    49620

    大型网站HTTPS实践(一)---HTTPS协议和原理

    下面重点介绍一下非对称密钥交换数学原理及在TLS握手过程中应用。 4.1.1 非对称密钥交换 在非对称密钥交换算法出现以前,对称加密一个很大问题就是不知道如何安全生成和保管密钥。...CPU计算资源消耗非常大。一次完全TLS握手,密钥交换非对称解密计算量占整个握手过程90%以上。...所以就算知道了,整个加解密 过程还是非常安全。 ? 4.1.1.1.2 握手过程中RSA密钥协商 介绍完了RSA原理,那最终会话所需要对称密钥如何生成呢?跟RSA有什么关系?...比如前文提到RSA证书加密及ECDHE签名都是使用这个。 申请者拿到CA证书并部署在网站服务器端,那浏览器发起握手接收到证书后,如何确认这个证书就是CA签发呢?...使用CA解密签名,然后使用相同签名函数对待签名证书内容进行签名并和服务端数字签名里签名内容进行比较,如果相同就认为校验成功。 ? 终端实体生成公私钥和证书请求。 RA检查实体合法性。

    1.3K60

    ECDH椭圆双曲线(比DH快10倍密钥交换)算法简介和封装

    前面有几篇blog就提到我有计划支持使用ECDH密钥交换。近期也是抽空把以前DH密钥交换跨平台适配从atgateway抽离出来,而后接入了ECDH流程。...所以有些工程实践中会每隔一段时间再走一次密钥交换流程来更换密钥。 ECDH和DH 使用ECDH做密钥交换得时候你可能也会看到ECDHE这个词,这个多出来E意思是指每次都随机生成。...但是openssl不像mbedtls,没有良好接口封装,里面密钥交换细节实现得到openssl源码里去找。并且流程比较长,而且openssl实现不太好,有很多冗余拷贝操作。...ID,1字节Q长度,Q 客户端读取系数 读入P、G,记录GY为远端 读入双曲线算法group,记录Q为远端 客户端创建 随机出X,计算并上传GX(G^X mod P),保留私有数据X 生成和上传点...std::vector svr_secret; // 保存服务器计算密钥 // step 1 - 服务器: 计算密钥对,输出DH参数和 CASE_EXPECT_EQ

    5.3K30

    Nginx(3)-创建 https 站点

    对称加密 对称加密中加密和解密使用相同密钥,加解密速度快,算法公开,计算量小。...非对称加密三种用途: 数字签名:用于让接收方确认发送方身份,并确认数据没有篡改 密钥交换:发送方用对方加密一个对称密钥,并发送给对方 数据加密 常见非对称加密算法: RSA:加密、解密、签名...通信双方下载各自由CA签发数字证书 当发送方要发送信息时,首先向接收方请求其数字证书 接收方利用CA检查接收到数字证书是否合法,并得到接收方 发送方利用散列函数对明文数据提取指纹,然后通过程序随机生成一个...最后,服务端收到第三个随机数后,计算生成本次会话使用会话密钥,然后发送编码改变通知和服务器握手结束通知。 随后通信使用http协议,然后使用会话密钥加密。...TLS 安全密码套件 03-06-TLS安全密码套件.png 密钥交换 身份验证 对称加密算法、强度、分组模式 签名 hash 算法 使用私有 CA 实现 https 站点 建立私有 CA 1.安装 openssl

    1.1K00

    Java - 深入理解加密解密和签名算法

    三、非对称加密 原理:非对称加密使用一对密钥进行加密和解密操作,分别为和私钥。用于加密数据,私钥用于解密数据。可以公开,私钥需要保密。...证书管理:OpenSSL支持X.509证书,这是一种广泛使用证书格式。证书用于在SSL/TLS握手过程中验证通信方身份。...非对称加密 非对称加密,又称为加密,是现代密码学中一项重要技术。与传统对称加密方法(即使用相同密钥进行加密和解密)不同,非对称加密采用了两个数学上相关但截然不同密钥和私钥。...密钥分发简化:在多人或多系统之间进行安全通信时,无需事先安全地交换密钥,因为可以公开分发。 数字签名:私钥也可用于创建数字签名,这是一种验证信息来源和完整性方法。...计算e模反元素d,使得(ed-1)可以被(p-1)(q-1)整除,d作为私钥。 为(n, e),私钥为(n, d)。 加密时,使用和明文m计算密文c,方法为c = me mod n。

    33500

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

    TLS 握手过程 TLS 握手过程,其实就是秘交换过程,这也是整个TLS 加密技术里最复杂一个环节,参考一张网上图如下: 2. 密钥算法 对称密钥算法:数据加密和解密时使用相同密钥。...非对称密钥算法:数据加密和解密时使用不同密钥,一个是公开,一个是由用户秘密保存私钥。利用(或私钥)加密数据只能用相应私钥(或)才能解密。...这个就是利用非对称密钥算法保证对称密钥本身安全。 3. 数字证书-如何保证真实性? 如果有攻击者伪造了 Server 端并发了客户端,客户端会访问到假网站被窃取信息。...,以确信请求确实由用户发送而来); CA 对用户所有信息(、所有者、有效期...)进行 Hash 计算,得到一个 Hash 值,然后再使用私钥对 Hash 值进行加密得到签名,就得到了数字证书。...=True,因为 caching_sha2_password 插件要求交换密码时必须使用 RSA 加密(在没有使用SSL加密连接情况下),AllowPublicKeyRetrieval=True

    3.2K10

    HTTPS:网络安全攻坚战

    不过由于安全问题,TLS 1.1及其以下版本都将作废,不再维护,目前主要在用TLS 1.2和TLS 1.3。 OpenSSL是开源版本实现,目前急需在维护OpenSSL 1.1.1版本。...5.3.2、对称加密算法 所谓对称加密,就是使用同一个密钥进行加解密。 最常见就是AES加密算法。 但是对称加密,加解密双方如何安全传递密钥是一个问题。...使用推算出私钥是非常困难,但是随着计算机运算能力提升,目前在程序中使用非对称密钥至少要2048位才能保证安全性。 虽然非对称加密能够保证安全性,但是性能却比对称加密差很多。...为此,在TLS中,实际上用是用到了两种算法混合加密。通过非对称加密算法交换对称加密算法密钥交换完成之后,在使用对称加密进行加解密传输数据。这样就保证了会话机密性。...5.3.6、算法总结 我们来总结一下上面提到各种算法作用: 签名算法:通过数字证书,和CA,验证获取到服务器可靠性,保证了认证性; 密钥交换算法 + 对称加密算法:通过交换密钥,进行加密通信

    45030

    【HTTPS】407- 记住 HTTPS!

    HTTPS 是使用 RSA 进行身份验证和交换密钥,然后再使用交换密钥进行加解密数据。 身份验证是使用 RSA 非对称加密,而数据传输是双方使用相同密钥进行对称加密。...所以小王打算用非对称加密,非对称加密特点是双方都有自己和私钥对,其中发给对方,密钥交换自己保管不泄漏。 如下图所示: ?...然后再使用 openssl 计算哈希值,如下所示: liyinchengs-MBP:https liyincheng$ openssl dgst -sha256 ~/tbsCertificate.binSHA256...密钥交换 密钥交换方式有两种:RSA 和 ECDHE,RSA 方式比较简单,浏览器生成一把密钥,然后使用证书 RSA 进行加密发给服务端,服务再使用密钥进行解密得到密钥,这样就能够共享密钥了...综上本文主要讨论了对称加密和非对称加密原理,并介绍了如何利用 RSA 对证书签名检验以验证连接服务器身份,怎么利用 ECC 进行数据加密和密钥交换,介绍了下怎么生成和使用 HTTPS 证书,并介绍了下客户端证书

    2.4K41

    HTTPS网络安全与SSL证书相关术语合集

    HPKP 固定,这是一种https网站防止攻击者使用CA错误颁发证书进行中间人攻击一种安全机制,用于预防诸如攻击者入侵CA偷发证书、浏览器信任CA签发伪造证书等情况,采用该机制后服务器会提供一个哈希列表...,客户端在后续通信中只接受该列表上一个或多个。...值是对证书sha256值,includeSubDomains决定是否包含所有子域名,在max-age所指定时间内(秒),证书链中证书至少一个须和固定相符,这样客户端才认为该证书链是有效...DH/DHE Diffie-Hellman(DH)密钥交换是一种密钥交换协议,DH诀窍是使用了一种正向计算简单、逆向计算困难数学函数,即使交换中某些因子已被知晓,情况也是一样。...Logjam Logjam(CVE-2015-4000) 使用 Diffie-Hellman 密钥交换协议 TLS 连接很容易受到攻击,尤其是DH密钥强度小于1024bits。

    1.4K50

    nginx实现keyless解决方案

    TLS记录协议位于TLS协议下层,是负责使用对称密码对消息进行加密通信(对消息压缩、加密以及数据认证)部分 TLS握手协议中使用密码技术 密码:加密预主秘 单向散列函数:构成伪随机数生成器...数字签名:验证证书用(单向散列函数计算密码散列值,加密后得到) 伪随机书生成器:生成预主秘 生成初始化向量(可以使用对称密码,单向散列函数来构建...TLS记录协议中使用密码技术 对称密码(CBC模式):确保片段机密性 消息认证码:确保片段完整性并进行认证(单向散列函数密钥组合而成,也可以通过对称密码生成,应用单向散列函数计算密钥+消息构成...HTTPS中所用到密码技术 证书:、数字签名和指纹组合而成,一般讲是基于指纹数字签名,一堆东西就认证,为了保证不可否认行、认证、完整性 Keyless原理 总体架构 密钥交换算法类 握手协议...是用证书私钥签名,客户端使用证书就可以验证服务端合法性,相比 RSA 密钥交换,DH 由传递 Premaster Scret 变成了传递 DH 算法所需 Parameter,然后双方各自算出

    1.9K00

    HTTPS虐我千百遍,我却待她如初恋!

    所以小王打算用非对称加密,非对称加密特点是双方都有自己和私钥对,其中发给对方,密钥交换自己保管不泄漏。 如下图所示: ?...然后再使用 openssl 计算哈希值,如下所示: liyinchengs-MBP:https liyincheng$ openssl dgst -sha256 ~/tbsCertificate.binSHA256...密钥交换 密钥交换方式有两种:RSA 和 ECDHE,RSA 方式比较简单,浏览器生成一把密钥,然后使用证书 RSA 进行加密发给服务端,服务再使用密钥进行解密得到密钥,这样就能够共享密钥了...而使用 ECDHE 是一种更安全密钥交换算法。如下图所示,双方通过 ECDHE 进行密钥交换: ?...综上本文主要讨论了对称加密和非对称加密原理,并介绍了如何利用 RSA 对证书签名检验以验证连接服务器身份,怎么利用 ECC 进行数据加密和密钥交换,介绍了下怎么生成和使用 HTTPS 证书,并介绍了下客户端证书

    66120

    PKI 体系概述_计算机学科体系概述

    数字签名:RSA私钥加密,解密,结合散列函数。验证消息真实性。 伪随机函数(PRF):生成任意数量伪随机数据。 RSA:可以同时用于密钥交换和身份验证(数字签名)。...(通过为及相关用户身份信息签发数字证书),为用户提供方便证书申请、证书作废、证书获取、证书状态查询途径,并利用数字证书及相关各种服务(证书发布,黑名单发布,时间戳服务等)实现通信中各实体身份认证...组件 描述 数字证书 包含了用于签名和加密数据电子凭证,是PKI核心元素 认证中心(CA) 数字证书申请及签发机关,CA必须具备权威性 证书资料库 存储已签发数字证书和,以及相关证书目录...,用户可由此获得所需其他用户证书及 证书吊销列表(CRL)/OCSP 在有效期内吊销证书列表,在线证书状态协议OCSP是获得证书状态国际协议 密钥备份及恢复 为避免因用户丢失解密密钥而无法解密合法数据情况...密码套件配置 # 密码套件名称构成:密钥交换算法-身份验证算法-加密算法(加密方法-加密强度-模式)-HMAC或PRF算法 # 密钥交换算法/密钥协商算法:ECDHE > DHE > RSA # 身份验证算法

    85910

    OpenSSL简单使用与自签CA证书

    将明文分隔成固定大小块,逐个进行加密 缺陷:密钥过多、密钥传输不安全、密钥交换、身份验证。 加密:非对称加密,加密解密用不同密码分和私钥,是从私钥中提取,可以給别人,私钥保密。...密钥和私钥是成对出现包含在私钥中,称为public key、私钥为secret key,由发起者对接受者索要公,用加密数据后发送给接受者。接受者用算法和私钥解密。...发起者用单项算法计算数据特征码,用自己私钥计算特征码附加在数据后面,在用对称密钥对整个包(数据和加特征码)进行加密,并用接受者加密对称加密密码,附加在整个包中一并发给对方。...伪随机函数TLS使用了称为PRF伪随机函数来将密钥扩展成数据块,是更安全方式。...TLS 在SSL v3.0 基础上,提供了以下增强内容: 更安全MAC算法 更严密警报 “灰色区域”规范更明确定义 TLS对于安全性改进 对于消息认证使用密钥散列法:TLS 使用“消息认证代码密钥散列法

    2.8K20

    keyless原理

    一、ssl握手 SSL握手目的是安全协商出双方加解密密钥。协商算法使用算法(也就是非对称密钥算法)。公共密钥算法(如RSA和DH)使用了大量CPU,是TLS握手中最慢部分。...通信双方使用一个大数作为私钥,传输给对端。对端使用和自身私钥协商出对称密钥。...image.png 服务端发送随机码和,客户端使用加密Premaster secret,在可能不安全信道传输,服务器取得加密后premaster,通过私钥还原出Premaster secret...二、keyless keyless在方案,把服务器私钥统一管理,并且把服务器算法中密钥协商相关计算过程,统一远程调用放在硬件加速卡。提高了处理效率也更安全。来详细看下耗CPU操作。...三、openssl改造 openssl1.0.2版本其中ssl3_get_client_key_exchange,是server 收到client处理函数

    5.5K401
    领券