为了保证数据在网路传输中的安全,对数据进行加密。

    我们首先要了解下加密的相关知识

    PKI"公钥基础设施",是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI就是利用公钥理论和技术建立的提供安全服务的基础设施。PKI技术信息安全技术的核心,也是电子商务的关键和基础技术。  

    大家应该知道我们在使用TCP/IP协议的时候,并没有加密这一项,这引入了新的协议,位于应用层和传输层之间,即:

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

    加密的类型有:

     1)对称加密

        加密方和解密方使用同一个密钥,位长有56bit128bit,256bit56bit现在应该已经被破解了,不再使用

        常见的对称加密有:

        DES 3DES AES AES256

AES192

AES512

  BLOWFISH

TOWFISH

     2) 公钥加密

        公钥加密分为两部分:

        Secret key :私钥,为自己持有

        Public key :公钥;谁都可以持有自己的公钥

        公钥加密位长512bit

  2048bit

        公钥加密的功能

        1.密钥交换 

        2.数字签名,身份验证,防抵赖 

        公钥加密算法有:RSA  既能加密又能签名

                      DSA  只能签名

     3) 单向加密

        单向加密严格意义上并不算加密,而是通过一种算法,提取出数据的特征码

        单向加密的特点:

        1.特征码是定长输出的

        2.雪崩效应,哪怕数据做了极其微小的改变,得到的特征码将会得到巨大的改变

             利用单向加密的特点,我们可以实现验证数据的完整性,常见的单向加密有MD5

        在网络中数据的发送是以广播的形式发送,只采用对称加密,我们如何告诉别人我们的密钥呢,使用公钥加密,公钥加密的位长决定了当我们要加密一个较大的文件的时候,可能要浪费大量的时间,用单向加密更不可能,那怎么办呢,我们是否可以把这3中加密方法组合起来使用呢,答案是可以的。

      发送方
         1、用单向加密计算数据的特征码
         2、用自己的私钥加密特征码附加在数据的尾部
         3、生成对称密钥,加密所有数据和加密后的特征码
         4、用接收方的公钥加密对称密钥,附加在 3 的尾部
       接收方
         1、用自己的私钥解密文件,知道是发送给自己的,得到对称密钥
         2、用对称密钥解密所有数据,得到数据和加密的特征码
         3、用发送方的公钥解密,加密的特征码,能解密确定发送方的身份,得到数据的特征码
         4、用单向加密提取数据特征码,对比得到的特征码,验证数据的完整性

      这样是不是就好了呢,但是这样必须有一个前提,即我们知道对方的公钥,我们如何知道对方的公钥,不能别人说他自己就是我们要找的人,我们就相信啊,空口无凭吗,对方拿什么证明自己呢,这时候我们就需要有一个第三方来为对方做一个证明,而这个证明我们称之为CA

       CA就是身份的验证,是一个证书,里面包含持有者的公钥,以及一些基本的注释信息,对于这个证书我们也要证明他的来源和完整性,所以证书也是经过组合加密的,我们需要证书就是为了证明对方的身份,可是谁来证明颁发证书的人的身份呢,难道再找一个人骂,这样就无限循环下去了,第三方的×××明的CA由他自己颁发,也就是自证,所以我们在看对方的证书的时候,先看证书的颁发者是否是可信任的。

       别人给你颁发证书并不是义务的是收费的,并且有时间限制的,当一个证书过期或持有者因为密钥丢失而导致证书无效的时候,作为证书的颁发者都是有一个统计的,所以作为我们自己,在查看别人的证书的时候,首先到证书颁发的网站,查看该证书是否依然可以使用。

       以上说的都为公有CA,证书是收费的,有公有,就有私有。作为一个小型公司,我们使用证书仅仅是为了内部通行的安全,难道也要每年花钱来买证书吗,这完全是没有必要的,我们可以自己充当第三方,自己给自己颁发CA,和为下属颁发CA,这就是私有CA.好的下面我们就来介绍一下如何实现吧。     

下面我们用openssl的命令来实现数据的加密和证书的颁发。
1)查看加密的类型

 #openssl -l

2)用des3对称加密加密文件和解密 

 3)公钥和私钥的生成

      4)单向加

5)自签CA

首先修改配置文件,自定义CA存放的目录

6)为别人发证书

1、为某服务生成密钥
#cd /etc/vsfptd/
#mkdir ssl
#cd ssl
#(umask 077;openssl genrsa 1024 >vsftpd.key)
#openssl req -new -key vsftpd.key -out vsftpd.csr
2、将此请求通过某方式传递给CA服务器
scp 发送给服务器
3、CA签署证书(在CA服务器上操作)
#openssl ca -in vsftpd.csr -out vsftpd.crt -days N
4、scp将证书返回给申请者