https - 客户端(Java、C++ 等)是否需要有效的数字证书才能成功建立 https 连接?

标签 https certificate

我计划实现一个小型独立程序,它将向服务器发出 https 请求。这是否需要客户端中的有效 ssl 证书?在这种情况下 SSL 握手如何工作?没有 SSL 证书的客户端是否存在任何安全问题?

最佳答案

除了对网络流量进行加密外,HTTPS 通常用于对服务器进行身份验证。也就是说,为了让客户放心,关于谁拥有服务器等信息。为此,客户需要检查服务器发布的证书中的信任链。为了自动发生这种情况,客户端计算机应该安装一个证书,该证书描述了颁发服务器证书的证书颁发机构。通常,此类证书可以在您的计算机上名为“受信任的根证书颁发机构”的商店中找到,并且大多数操作系统都已经安装了一组常见的 CA。

此外,许多 Web 服务器提供了一项功能,即客户端可以通过提供客户端证书向服务器验证自己的身份。 Web 服务器能够检查来自客户端的证书并将其映射到服务器上的一组权限。这种“客户端身份验证”对于正常工作的 HTTPS session 不是必需的,但它只是一个选项。

简而言之,您实际上需要客户端上的任何证书,但您可能想要拥有根 CA 证书以验证服务器的身份.如果您没有该证书,您将无法信任服务器(除非您有其他充分的理由这样做),但您仍可以选择与其交换数据。

关于https - 客户端(Java、C++ 等)是否需要有效的数字证书才能成功建立 https 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1001078/

相关文章:

google-chrome - 如何处理 Google Chrome 扩展程序中的 ERR_INSECURE_RESPONSE

ssl - 创建供本地使用的 EV SSL 证书

c# - 如何检查 X509Certificate2 是否可导出

java - URL.getInputStream() 导致 java.security.cert.CertificateException : No subject alternative DNS name

http - 如何强制浏览器http请求中包含 "host" header

javascript - 为什么不总是使用 HTTPOnly 和 Secure cookie 标志?

macos - 如何通过代码从 Mac Keychain 中删除证书?

python - 如何使用 Python 检查证书日志中的证书(不在 PC 上)是否被撤销?

java - 我可以在不重新启动 JVM 的情况下将新证书添加到 keystore 吗?

node.js - 服务器之间通信的安全方式