先介绍数据加密:为了让数据安全传输,使数据明文变成密文。从而让截获此数据的人不容易知道此数据的内容。

数据加密常见的有三种:

(1)对称加密:加密和解密使用同一个密钥。

常用加密方法   des :data encryption standard,

3des ,aes: advance data encryption standard(定长输出128bit),aes256 ,

(2)公钥加密:用公钥加密,用与之配对的私钥解密,也称作非对称加密。

(3)单向加密:严格的来说不是一种加密,只是为了验证数据的完整性。

 单向加密的常见算法:MD5: 定长输出 128bit,sha1,sha256,sha512

 linux有两个常用软件加密:

1,gpg: 一般用于rpm包中比较常见。

2,openssl主要用于:

(1)对称加密算法

(2)非对称加密算法

(3)单向加密算法

(4)CA(OPENCA)  

(5)实现证书格式的转换

CA第×××证机构,这里介绍的CA公司内部,属于私有的,只对公司内部生效。

实验流程:

服务器端:

(1) 先检查主机上有没有安装openssl这个软件: rpm -qa |grep openssl

(2)编辑/etc/pki/tls/openssl.cnf(这个文件是openssl.cnf的配置文件) ,找到dir 修改成/etc/pki/CA(表示证书存储在哪个位置)其余的可以不用修改

 (2)在/etc/pki/CA/下建立certs(发证的目录),crl(吊销证书的目录) ,newcerts(发新证的目录),index.txt(证书的索引)

mkdir /etc/pki/CA/{certs,newcerts,crl}

touch /etc/pki/CA/index.txt

echo 01 > /etc/pki/CA/serial(当前所发证书的序列号,从01开始)

(3)服务端给自己自签证书

一,先给自己生成私钥,必须放在CA目录下的private下

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

使用(),只让umask 077在子shell生效,genrsa一种加密工具

二,给自己发证

cd /etc/pki/CA/

openssl req -x509 -new -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 180(x509加密协议,-days证书的有效期)

openssl x509 -noout -in cacert.pem -text查看生成的自签证书内容

客户端(证书申请方)

(1)为某服务生成密钥(在这里用vsftp举例)

 cd /etc/vsftpd/

mkdir ssl

cd ssl 

(umask 077;openssl genrsa 1024 > vsftpd.key ) 生成密钥,和上面的命令作用一样,都是生成密钥,两种方法都可以

openssl req  -new -key vsftpd.key (指定私钥名称) -out vsftpd.csr

(2)将此证书传递给CA服务器,这里用scp

scp vsftpd.csr root@192.168.0.160:/etc/pki/CA

(3)CA服务器签署证书

cd /etc/pki/CA

openssl ca -in(从哪读进来) vsftp.csr -out vsftpd.crt -days 180

scp vsftp.crt root@172.16.190.1:/etc/vsftpd/ssl(生成的证书返回给客户端)

此时vsftpd已经支持ssl协议,重启启动ftp服务就ok。