Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从服务器端检测用户是否未在其计算机中安装/信任my private CA_C_Ssl_Openssl_Ssl Certificate_Tls1.2 - Fatal编程技术网

从服务器端检测用户是否未在其计算机中安装/信任my private CA

从服务器端检测用户是否未在其计算机中安装/信任my private CA,c,ssl,openssl,ssl-certificate,tls1.2,C,Ssl,Openssl,Ssl Certificate,Tls1.2,我正在开发一个服务器应用程序,该应用程序必须首先尝试使用TLS/SSL通过网络进行安全通信,但如果实现该应用程序时出现了一些问题,则应该退回到纯文本通信,而不是加密通信 此应用程序将使用通过我自己的私人证书颁发机构生成的证书(自签名证书),因此“某些问题”指的是用户尚未在其计算机中安装/信任我的CA,因此客户端应用程序可能会警告它(像浏览器一样)连接不安全 我想从您那里了解一下,如果用户没有安装/信任我的私人CA,是否有办法通过使用OpenSSL(或一些易于使用的替代TLS/SSL实现库)C A

我正在开发一个服务器应用程序,该应用程序必须首先尝试使用TLS/SSL通过网络进行安全通信,但如果实现该应用程序时出现了一些问题,则应该退回到纯文本通信,而不是加密通信

此应用程序将使用通过我自己的私人证书颁发机构生成的证书(自签名证书),因此“某些问题”指的是用户尚未在其计算机中安装/信任我的CA,因此客户端应用程序可能会警告它(像浏览器一样)连接不安全

我想从您那里了解一下,如果用户没有安装/信任我的私人CA,是否有办法通过使用OpenSSL(或一些易于使用的替代TLS/SSL实现库)C API来了解,这样我就可以在客户端应用程序发出警告消息之前退回到纯文本通信。我不能依赖客户端验证,因为我的应用程序旨在与第三方客户端兼容。可能吗


编辑:我只想知道是否有可能从服务器端检测到用户是否已在其计算机上安装/信任我的私人CA。如果可能,我应该在服务器应用程序上使用OpenSSL检查什么

我的意思是,用户尚未在其计算机中安装CA证书,因此客户端应用程序将无法进行TLS/SSL握手

没有这种情况。响应
CertificateRequest
的客户端没有证书不是TLS错误,也不会导致握手失败

真正发生的是握手成功,而当服务器应用程序去获取对等证书时,它没有得到任何证书。我不知道这在OpenSSL中是什么形式。但是你必须为它编写代码


编辑现在看来您正在谈论丢失的服务器证书,您的问题没有真正意义。初始化OpenSSL的步骤之一是告诉它在哪里可以找到服务器私钥和证书,在这个阶段,您肯定可以知道它是否存在。与此同时,客户到底应该做什么?尝试SSL握手并在失败时通过明文继续?以明文开始,然后以某种方式神奇地被告知使用TLS?

因此,客户端从服务器接收无效(由不受信任的CA签名)证书的副作用是,当服务器请求证书时,不会向其提供任何证书?这对我来说毫无意义,除非客户机在请求时提供的证书与服务器之前发送的证书相同,但只有在可以通过CA验证的情况下才会提供。会发生这种情况吗?@Tiago.SR这对我来说也没有任何意义,我也没有说过。再读一遍我写的东西。我特别说“没有客户的证书”。这似乎也不是你要问的,虽然还不是很清楚。我只是想知道,如果用户在他的计算机上安装/信任了我的自签名CA,是否有可能,以及如何从服务器端执行。如果它没有安装/受信任,那么我将以明文形式继续。因此,您需要尝试SSL握手,看看是否成功。@jww您的编辑被拒绝。难以理解。问题中特别提到了OpenSSL,而HTTPS没有提到。@EJP-我很想听听这与OpenSSL有什么关系(除了OP碰巧知道库名),但我今天还有其他事情要做。祝你好运。@jww这是你的编辑。你证明了这一点。告诉我们您从哪里获得HTTPS,以及OP提到的OpenSSL与此无关。我希望你有更好的事情要做,而不是做错误的编辑。@jww谁是Olaf?它是怎么坏的?尽管被问了好几次,您仍然没有回答。@EJP-我在原因栏中留下了原因。享受这个问题;这是你最好的作品之一。