当前位置: 首页 > 知识库问答 >
问题:

验证服务器如何识别要在RSA中使用的公钥?

南宫建白
2023-03-14

我试图在我的(Java)应用程序中实现一个(简化的)类似RSA的验证过程。客户端发送一个请求(数据私钥签名),服务器拒绝或处理他的请求,具体取决于签名的有效性。

但是我不明白验证服务器如何知道使用哪个公钥进行签名解密。事实上,似乎没有公钥——也没有公钥ID——被发送到验证服务器。

它真的测试了所有授权的公钥吗?或者公钥是从以前的通信交换中存储的?

共有2个答案

韦业
2023-03-14

正如您随问题附上的图所示,客户端将其证书连同签名一起发送,证书包含公钥,服务器检查证书有效性并使用它来检查签名。

缪志新
2023-03-14

该图有几个错误和一些遗漏,因为它可能是一种简化:

>

  • 哈希是数字签名的,不是加密的,签名是验证的,不是解密的。底层加密操作是不等效的。

    签名数据应包括证书和认证链

    如果使用CMS、pkcs#7或XMLDsig等已知格式,则要签名的哈希通常还包括对签名证书和内容类型的引用,以避免篡改

    要验证已签名的文档,请使用随附证书的公钥验证签名,但必须检查签名证书是否可信,以验证证书本身或颁发证书的机构是否存在于客户端的受信任方中。

    签名包括认证链,因为信任库通常不包含中间CA。信任库的证书以前交换过

    此外,验证过程应检查证书是否已过期且未被吊销

    请注意,公钥基础结构中的所有数字证书的验证过程都是相同的,而不仅仅是RSA

  •  类似资料:
    • 我想知道是否有一个示例C代码或库可以使用RSA公钥验证我的JWT令牌签名。我找不到任何涉及C的示例 openssl for C没有任何与RSA相关的示例。 谢谢

    • 在PHP中,我试图使用AWS的RSA公钥(我在https://cognito-identity.amazonaws.com/.well-known/jwks_uri). 密钥以适当的页眉/页脚开始,然后开始RSA公钥等等。我查看了一些PHP库,如Emarref\Jwt\Jwt\code>,但是我发现了错误:。这一切归结为基本的php函数:。 我已经研究了php。net/manual进行openss

    • 本文向大家介绍如何在PHP中识别服务器IP地址?,包括了如何在PHP中识别服务器IP地址?的使用技巧和注意事项,需要的朋友参考一下 可以使用以下代码行标识服务器IP- 可以使用下面的代码行来标识端口- 对于5.3和更高版本的PHP,可以使用以下代码行- 当运行独立脚本(未通过Web服务器运行)时,可以使用此功能。

    • 问题内容: 如何识别PHP中的服务器IP地址? 问题答案: 像这样的服务器IP: 这是港口

    • 当使用Citrus测试框架对服务器进行测试时,我无法禁用证书检查。 我得到以下错误:org.springframework.web.client.resourceAccessException:“”的POST请求上的I/O错误:证书与证书主题的公共名称不匹配:;嵌套异常是javax.net.ssl.SSLException。 下面是用于在Citrus中创建endpoint的代码片段: 任何想法都欢

    • 我想知道如何使用公钥来验证私钥。 “<代码> <模数> 这是一个字符串,我试图使用Python验证它的私钥(也是作为字符串提供的)。我知道发行人和观众需要做什么,但我不确定如何处理所有这些信息。 我看了一些peoples使用各种包的例子,但我似乎不知道pub_key、private_key和message是什么类型...请帮帮我...我希望学习