先介绍数据加密:为了让数据安全传输,使数据明文变成密文。从而让截获此数据的人不容易知道此数据的内容。
数据加密常见的有三种:
(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。