验证公钥是否正确(没写完)

  • 证明公钥的正确性的方法:使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书

  • 数字证书认证机构处于是客户端和服务器双方可信赖的第三方机构立场上,**威瑞信(veriSign)**就是其中一家非常有名的数字证书认证机构。

  • 浏览器在整个通信的最开始会请求服务器的公钥(其实是证书),这里的公钥就是我们常说的 SSL 证书的一部分了。

  • 关于 SSL 证书,一般是由专门机构(CA 机构)颁发,其实也就是颁发几个文件,其中有包含私钥信息的文件和包含公钥信息的文件,私钥文件一直秘密地保存在服务器,不会公布出去,公钥文件会在这次请求中下发给浏览器

  • 公钥文件除了包含有公钥密钥信息外,还有其他信息比如域名、颁发机构、有效期等等。

  • 每一个证书都包含域名信息,操作系统也维护了一个可信的证书列表。当客户端获得服务器返回的证书后,提取证书里的域名、签发机构等信息,然后根据本地的可信证书列表判断该证书是否可信,然后才提取证书里的公钥并接着和服务器通信,否则给出警告。

  • 补充:一般来说,高质量的 SSL 证书需要购买,而且价格不菲。如果对站点的要求没有那么高,也可以在一些网站上申请免费证书,比如SSL证书选购 - 腾讯云、SSL For Free。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 PHP 中,你可以使用 OpenSSL 扩展来验证 RSA 公钥正确性。具体来说,你可以使用 `openssl_pkey_get_public` 函数将公钥字符串转换为 OpenSSL 公钥资源,并使用 `openssl_pkey_get_details` 函数获取公钥参数,然后使用 `openssl_pkey_new` 函数来验证公钥的有效性。 以下是一个简单的 PHP 代码片段,用于验证 RSA 公钥: ```php $public_key = file_get_contents('rsa_public_key.pem'); // 将公钥字符串转换为 OpenSSL 公钥资源 $public_key_resource = openssl_pkey_get_public($public_key); // 获取公钥参数 $public_key_details = openssl_pkey_get_details($public_key_resource); // 构造一个 OpenSSL 公钥结构 $public_key_structure = openssl_pkey_new([ 'rsa' => [ 'n' => $public_key_details['rsa']['n'], 'e' => $public_key_details['rsa']['e'] ] ]); // 验证公钥有效性 if (openssl_pkey_export($public_key_structure, $public_key_string) && $public_key_string === $public_key) { echo "Public key is valid\n"; } else { echo "Public key is invalid\n"; } openssl_free_key($public_key_resource); ``` 在这个示例中,我们首先使用 `file_get_contents` 函数从文件中读取公钥字符串。然后,我们使用 `openssl_pkey_get_public` 函数将公钥字符串转换为 OpenSSL 公钥资源,并使用 `openssl_pkey_get_details` 函数获取公钥参数。接着,我们使用 `openssl_pkey_new` 函数构造一个 OpenSSL 公钥结构,并将从公钥资源中获取的参数设置为结构体的参数。最后,我们使用 `openssl_pkey_export` 函数将构造的公钥结构导出为字符串,并将其与原始公钥字符串进行比较,以验证公钥的有效性。 需要注意的是,上述代码仅供参考,并不是整的代码。实际应用中,你需要添加错误处理和其他必要的步骤来确保代码的正确性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值