IT培训网 - IT职场人学IT技术上IT培训网
三分钟教会你web服务器安全方案如何构建
时间:2018-11-23 11:03:53 来源:编程网 作者:IT培训网 已有:名学员访问该课程
如何构建一个安全的web服务器?那就需要制定一个web服务器安全方案,Security Web Server安全的web服务指的是可以加密(encrypt)和解密(decrypt)所有的HTTP请求和相应的web服务。这将用到SSL(Security Sockets Layer)协议。与SSL协议的类似的一个协议是TLS(Transport Layer Security)。下面我们就一步步来认识并熟悉。
安全的web服务器如何搭建?
SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。
TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1,它是写入了 RFC 的。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。
本文主要介绍SSL协议的工作原理和使用。顺便提一下,此时不再使用HTTP而是使用HTTPS,默认端口是443。
SSL工作原理
SSL是一种用来安全地在网络通信的协议。为了理解为什么需要SSL,我们先来看一下没有SSL的互联网是一种什么景象吧。
1、 An Internet without SSL
为了更加通俗地解释,我们使用打电话来的场景来叙述。那么当你打电话的时候会出现什么状况呢?我再和谁通话?在打电话的时候你怎么能确定在和你讲电话的人就是你要找的人呢?尤其是在你第一次打电话找一个以前素未谋面的人的时候,你怎么能确定电话另一边的人不是骗子呢?会不会有人在窃听呢?在无加密的情况下窃听电话是很简单的事情,在互联网也是如此。鉴于以上两点,为了安全我们需要做到两点:确定我们在通信的电脑就是我们想要的那一台; 确保我们的传输数据是安全的。
2、 SSL工作原理
传统的加密方法使用密码来保护数据的安全,通信的双方都知道这个密码,然后使用这个密码加密和解密数据。但是这是不安全的,因为你的密码除了你竟然还有人知道!安全的做法是使用密钥。密钥分为公钥和私钥,私钥是你自己保留的,公钥可以人尽皆知。使用你的公钥加密的数据你在收到之后使用你自己的私钥解密,这样的话即使别人拿到了你的信息和公钥也没有办法解密你的数据。
步骤
1)获得一个SSL证书(或者创建一个自己的私人证书)
创建一个证书签名请求CSR(Certificate Signing Request),同时创建一个私钥。 向第三方证书授权机构CA(Certificate Authority)请求,CA机构会审核你的请求,审核通过以后就会给你一个公钥(public key)当然这个公钥是使用CA机构自己的私钥加密过的。 将得到的公钥安装在你的服务器上
2)浏览器和服务器通信
3、 加密技术
比方说你想要访问银行系统并完成一笔交易,可以肯定的是你一定希望这个过程是安全的。在本文3.2小结我们描述了安全交易的过程,现在我们来简单叙述一下加密技术。
对称加密(Symmetric Cryptography)一个密钥同时用来加密和解密,但是使用这种方式的前提是这个密钥是足够安全的,除了交换信息的双方,没有第三者知道这个密钥。 非对称加密(Asymmetric Cryptography)使用两个密钥,一个用来加密,另一个用来解密。
补充:
加密算法应该是算法原理公诸于世的,但是依据加密后的数据很难推算出原来的明文,或者得到明文的代价比获得的收益大的多。这样的加密算法才算是安全的加密算法。
现在你可以用银行的公钥来加密你的交易数据,但是这里仍然存在一个隐患:银行如何确定这笔交易是没有被篡的呢?会不会有人截获了你的信息并更改,然后破坏这笔交易?所以银行需要确定信息的完整性。一个简单的办法是对传输的信息创建一个概要(concise summary)并将其一并发到银行系统,银行系统也会创建一个概要并和你发来的概要进行比较,最终确定信息的完整性,这被称为message digest。Message digest 可以对长文本信息创建简短的、固定长度的摘要,并且摘要算法被设计为很难从摘要得到原文。
最后一步,银行需要确定这笔交易确实来自于你而不是其他人。你需要在信息中包含一个你的电子签名(digital signature).可以通过使用自己的私钥加密message digest和一些其他信息来生成电子签名。尽管电子签名可以被破解,但是只有私钥拥有者才可以生成自己的电子签名。
3、 在Apache应用SSL
我们在编译的时候已经把相应的模块编译过了,因此我们只需要很少的步骤就可以了。
首先,创建自己的证书:
mkdir /etc/apache/certs
openssl genrsa -des3 -out self_signed.key
openssl req -new -key self_signed.key -out self_signed.csr
openssl req -x509 -key self_signed.key -in self_signed.csr -out self_signed.cert
然后,去掉如下的注释:
LoadModule ssl_module modules/mod_ssl.so
然后,对httpd.conf做如下修改:
Listen 443
SSLEngine on
SSLCertificateFile "/etc/apache/certs/self_signed.cert"
SSLCertificateKeyFile "/etc/apache/certs/self_signed.key"
打开浏览器,输入 https:127.17.0.2 会出现如下:
你可以看到由于我们是自己创建的证书,并没有经过第三方权威证书认证机构认证,因此需要点击信任证书才会得到座后的结果(依然提示我们证书不被信任,不过不要担心)。
每期开班座位有限.0元试听抢座开始!
温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。