ssl - 为什么我需要 SSL 证书?

标签 ssl certificate ssl-certificate

我有一个简短的问题:为什么我需要一个 SSL 证书(我的意思是只有证书而不是 SSL 连接)?

在我的例子中,谷歌浏览器检测到连接是加密的和安全的,但一切都是红色的,因为我自己创建了证书。 如果连接是安全的,为什么我需要 SSL 证书?

My case:

最佳答案

仅仅因为到 192.168.xxx.xxx 的流量没有离开您的网络边界并不意味着它是安全的。

特别是如果您将 BYOD 连接到网络(即使没有,您也不想成为 hard shell with a juicy interior ),有人可以将受感染的笔记本电脑或手机连接到网络,然后病毒就可以拦截网络上发生的一切(参见 firesheep)。

因此您必须假设该网络是恶意的 - 将您的 LAN 视为互联网。

那么现在问题又回来了——为什么我不能依赖自签名证书(在本地网络和互联网上)?

那么,您要防止什么? TLS (SSL) 可防止两件事:

  1. 拦截 - 即使我对你进行 MITM(我成为你的路由器),我也无法读取你发送和接收的内容(因此我无法读取你的信用卡号或密码)

  2. 欺骗 - 我无法在您和服务器之间注入(inject)代码。

那么它是如何工作的呢?

我连接到服务器并获得由 CA 签名的证书。这个 CA 被浏览器认为是信任的(他们必须通过各种审计来获得信任,如果他们破坏它就会被驱逐)。他们验证您控制服务器,然后签署您的公钥。

因此,当客户端从服务器获取签名的公钥时,他知道他将加密一条只有目标服务器才能解密的消息,因为 MITM 无法用他自己的公钥替换服务器的 (他的公钥不会由 CA 签名)。

现在您可以与服务器进行安全通信了。

如果浏览器接受任何 SSL 证书(自签名)会怎样?

还记得浏览器如何区分官方证书和伪造的 MITM 证书吗?通过由 CA 签名。如果没有 CA,浏览器实际上无法知道它是在与官方服务器还是 MITM 对话。

所以自签名证书是一个很大的禁忌。

不过,您可以做的是,您可以生成一个证书并将其设为“根”证书(实际上,为您的内部计算机启动您自己的 CA)。然后,您可以将其加载到您的浏览器 CA 存储中,您将能够通过 SSL 进行通信,而无需通过 letsencrypt(顺便说一下,这就是企业网络监控工具的工作方式)。

关于ssl - 为什么我需要 SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50140485/

相关文章:

java - 从/assets/filename 公钥加载 X509Certificate 不正确

c# - 动态添加具有指向动态生成的自签名证书的 HTTPS 绑定(bind)的网站

spring-boot - 由于 jsse.alias_no_key_entry 使用带有 GoDaddy 签名证书的 JKS,SpringBoot 无法启动

java - 由 : java. security.UnrecoverableKeyException: 无法恢复 key 引起

ssl - Inno 安装程序 : Ignore SSL Certificate errors using the third party tool DwinsHs

apache - 一个 IP 地址和端口上的多个 SSL Namebased 多个虚拟主机

java - 使用 Java 的 WebSphere 的 SSL 握手错误

powershell - 检索安装在不同用户下的证书。 Get-ChildItem 证书 :\<username>\My

docker - docker 容器中的 terraform init 出现错误 -- x509 : certificate signed by unknown authority

ruby - 如何在 ruby​​ 中为 OpenSSL 设置 ca-bundle 路径