gpt4 book ai didi

security - 列出服务器在SSL_connect上提供的证书链

转载 作者:行者123 更新时间:2023-12-03 11:53:13 30 4
gpt4 key购买 nike

我对安全性不熟悉,因此某些术语可能会被错误地使用:

  • 当我使用SSL_connect创建套接字连接时,服务器应发送回整个证书链,以便可以验证服务器的真实性。
  • 为此,需要相应地配置服务器。
  • 如果服务器未发送回整个证书链,并且中间证书不在客户端证书存储中,则无法验证真实性。这导致体验到的here行为,其中FireFox将网站视为不安全。
  • 我也读过some browsers are able to attain the intermediate certificate automatically。但是,至少在默认情况下,OpenSSL并不具有这种行为。
  • 我还被告知,自几年前推出某些Windows更新以来,已在Windows证书存储区中安装了一些(也许是所有)中间证书。

  • 我想查看服务器返回的证书,以确认我正在取回整个证书链。这是我尝试过的:
  • 我正在使用SSLv3_method
  • SSL_CTX_set_verify是使用SSL_VERIFY_NONE设置的。
  • SSL_connect之后,我使用SSL_get_peer_cert_chain来访问证书链。

  • 考虑:
    STACK_OF(X509)* certificateChain = SSL_get_peer_cert_chain(ssl);
    while (char* stackCertificate = sk_pop(certificateChain))
    {
    X509* certificate = (X509*)stackCertificate;
    }

    这是获取证书链的正确方法吗?我对情况的理解正确吗?也许有更好的方法可以做到这一点?

    感谢您的时间和贡献。

    最佳答案

    以下代码段基于s_client中的代码:

    SSL* ssl = ...;
    STACK_OF(X509)* certCollection = SSL_get_peer_cert_chain(ssl);
    for (size_t i = 0; i < sk_X509_num(certCollection); i++)
    {
    X509* cert = sk_X509_value(certCollection, i);
    ...
    }

    据我了解,必须已创建一个SSL session ,否则 SSL_get_peer_cert_chain将返回null。另外,我还没有发现任何证据与我在问题中提到的 list 相矛盾。

    也许更简单的选择是使用命令行工具(从 here下载):
    openssl s_client -connect {server}:{port} -ssl3

    关于security - 列出服务器在SSL_connect上提供的证书链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26594887/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com