Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/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
Security SSL实际上是如何工作的?_Security_Ssl - Fatal编程技术网

Security SSL实际上是如何工作的?

Security SSL实际上是如何工作的?,security,ssl,Security,Ssl,每当我看到有人谈论它时,听起来就像是简单地“打开”SSL,然后所有对在线服务器的请求/响应都会神奇地安全 是这样吗?SSL仅仅是一种代码吗?我可以编写两个应用程序,让它们通过SSL进行通信吗?或者你必须以某种方式在外部注册/认证它们吗?是和否。首先,在使用SSL部署站点之前,你应该对证书进行自我签名并在内部使用SSL测试站点。要使公共站点在SSL下安全,您需要从任意数量的证书提供商之一购买证书。然后,您将拥有一个由可信的第三方签署的证书,该证书与您的域名绑定,这样用户的浏览器就不会抱怨证书无效等

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


是这样吗?SSL仅仅是一种代码吗?我可以编写两个应用程序,让它们通过SSL进行通信吗?或者你必须以某种方式在外部注册/认证它们吗?

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

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

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

了解如何为Apache创建自签名证书


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

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

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


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

在端口443而不是普通端口80上请求安全网页。SSL协议(本身非常复杂)负责确保通信安全,并使用服务器和浏览器上的证书信息来验证服务器的身份

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

您知道,有些组织(Verisign、Globalsign等)多年来一直将其证书颁发机构信息包含在浏览器中。这样,当您访问一个拥有他们制作(签名)的证书的站点时,您的浏览器会显示:

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

过程很简单:


请联系有能力的SSL供应商,如GlobalSign。在Web服务器上创建密钥和证书请求。使用他们(和你的信用卡)购买证书。在服务器上安装它。将web浏览器指向HTTPS(端口443)。其余的都为您完成。

SSL实际上做了两件事:

  • 对通信进行加密,使看到数据流的观察者无法读取对话
  • 保证您正在与您认为正在与之交谈的人交谈

  • 只有#2才需要获得官方证书。如果只想加密通信而不建立信任关系,则可以使用自签名证书,也可以使用不需要证书的算法(即)。SSL本身并不是确保一切安全的灵丹妙药。安全没有这样的东西

    然而,SSL是一个已经设计好的、随时可用的系统,用于解决一个常见问题:通过网络连接的安全流通信

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

    • 修改应用程序的代码以使用SSL
    • 确定证书信任模型(并分别部署和配置应用程序)
    其他答案和文档提供了比我所能提供的更好的答案。打开TLS(通俗地说是“SSL”)并不能使您的站点神奇地安全。您可能仍然容易受到应用程序级漏洞的攻击,如堆栈溢出、SQL注入、XSS和CSRF


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

    我将不顾一切,并试图浓缩一个庞大的主题。
    SSL试图解决两个问题:
    1) 身份验证和信任,即客户端可以信任服务器,反之亦然
    2) 无窃听通信

    1) 由中间人(即受信任的第三方)处理-这些被称为“根证书颁发机构”(或根证书颁发机构)