SSL如何实际运作?

时间:2009-12-14 23:15:15

标签: security ssl

每当我看到它被谈论时,听起来就像一个简单的“打开”SSL,然后所有来自/来自在线服务器的请求/响应都是神奇的安全。

是吗? SSL只是关于代码 - 我可以编写两个应用程序并通过SSL进行通信,还是必须以某种方式在外部注册/证明它们?

10 个答案:

答案 0 :(得分:9)

在端口443而不是普通端口80上请求安全网页.SSL协议(本身很复杂)负责保护通信,并使用SERVER和BROWSER上的证书信息来验证服务器就像他们所说的那样。

生成SSL证书很简单。生成一个基于99%的Web浏览器中嵌入的信息需要花钱。但技术方面并没有什么不同。

您可以看到,有些组织(Verisign,Globalsign等)已经拥有多年使用浏览器的证书颁发机构信息。这样,当您访问拥有(签名)证书的网站时,您的浏览器会说:

“好吧,如果Verisign信任XYZ.com,我相信Verisign,那么我相信XYZ.com”

这个过程很简单:

转到合格的SSL供应商,例如GlobalSign。在Web服务器上创建KEY和证书申请。使用它们(和您的信用卡)购买证书。将其安装在服务器上。将Web浏览器指向HTTPS(端口443)。其余的都是为你完成的。

答案 1 :(得分:2)

SSL是通过TCP连接(或其他一些可靠方案)进行加密通信的协议。加密使用X.509证书进行公钥加密。 SSL处理隐私和信任。这些是相关的:如果您不信任服务器,您不相信服务器没有将其私钥分发给北美的每个人。

因此,客户端必须信任服务器的证书。对于公共站点,这是通过证书颁发机构的层次结构来安排的,根权限由浏览器和JRE的套接字实现自动地信任。

任何人都可以为服务器生成自签名证书,但必须手动配置客户端以信任它。

答案 2 :(得分:1)

SSL本身并不是一个让一切安全的神奇子弹。安全没有这样的东西。

然而,SSL是一个已经设计好的即用型系统,用于解决常见问题:通过网络连接进行安全流通信。

使用SSL保护您的应用程序需要做两件事:

  • 修改应用程序的代码以使用SSL。
  • 确定证书信任模型(并分别部署和配置应用程序)。

其他答案和文档提供了比我能提供的更好的答案。

答案 3 :(得分:1)

我会谨慎对待风,试图凝聚一个巨大的主题 SSL试图解决两个问题:
1)认证,因此信任,即客户信任服务器,反之亦然 2)没有窃听的通信

1)通过中间人,即受信任的第三方进行处理 - 这些被称为“根证书颁发机构”(或根CA)的示例包括Verisign,RSA等。 如果公司想要对用户进行身份验证,更重要的是,如果用户想要验证公司的网站,那么它就连接到您的银行,那么根CA会向公司颁发证书,该证书有效地说“我受信任的根CA验证我信任X公司”是他们说的是谁,并且相应地颁发证书'。所以你得到了一个信任链,即我相信来自ACME Co的证书,因为Root CA Verisign创建并发布了它。

2)双方通过身份验证后,证书(通常为X590)用于使用公钥/私钥加密形成安全连接。

绝望的简单和不完整但希望给出一个粗略的想法

答案 4 :(得分:0)

是和否。在使用SSL部署之前,您应该自行签署证书并在内部使用SSL测试该站点,首先。要使公共站点在SSL下安全,您需要从任意数量的证书提供商之一购买证书。然后,您将获得由受信任的第三方签名的证书,该证书与您的域名绑定,以便用户的浏览器不会抱怨证书无效等。打开SSL几乎只是翻转一个开关,否则。 / p>

答案 5 :(得分:0)

在大多数情况下,您需要在外部购买和注册证书。

答案 6 :(得分:0)

您需要让您的服务器证书由证书颁发机构(CA)签署,他们将向您收取费用。客户端需要信任该CA并拥有相关CA公钥的副本。然后,客户端可以检查您是谁(包括域名(来自DNS)和https的显示名称。)

答案 7 :(得分:0)

This is a good tutorial关于如何为Apache创建自签名证书。

如果您想知道SSL如何在服务器或客户端上运行,那么我建议谷歌搜索它。正如您所怀疑的那样,这是一个非常复杂的过程,客户端和服务器之间有很多通信,很多非常奇特的数学运算,以及大量的处理。还涉及许多理论,几种协议和许多不同的算法和加密标准。将http://更改为https://对于用户来说如此简单,这是非常令人难以置信的,但却为双方带来了如此多的工作,并且非常安全。要真正了解它,您需要参加一个安全课程(多个课程来完全理解它),因为整个加密历史记录使您登录Gmail安全。

答案 8 :(得分:0)

SSL实际上做了两件事:

  1. 加密通信,以便观察数据流的观察者无法读取对话。
  2. 保证您正在与您认为自己在说话的人交谈。
  3. 只有#2才需要获得官方证书。如果您只关心在不设置信任关系的情况下加密通信,则可以使用自签名证书,也可以使用不需要证书的算法(即Diffie-Helman)。

答案 9 :(得分:0)

启用TLS(通俗地称为“SSL”)确实 使您的网站神奇安全。您可能仍然容易受到堆栈溢出,SQL注入,XSS和CSRF等应用程序级漏洞的攻击。<​​/ p>

正如其他答案所解释的那样,TLS只能防止中间人。客户端和正确配置的TLS服务器之间的流量无法被拦截或修改,客户端可以通过验证X.509证书来可靠地确认服务器的身份。这可以防止攻击者冒充您的TLS服务器。