加密、解密,以及OpenSSL建立私有CA
加密技术是互联网最常用的安全保密手段,其利用技术手段把重要的数据加密后传送,到达目的地后再用相同或不同的手段进行解密。
加密技术包括两个元素:算法和密钥
以上几种加密技术各有千秋,经常组合起来使用
1、对称加密
加密和解密使用同一个密钥,将明文分隔成固定大小的块,逐个进行加密;
常见算法:DES 3DES Twofish IDEA IDEA CAST5 RC6 Blowfish
2、非对称加密:也称为公钥加密
其有一密钥对儿:私钥和公钥
私钥为个人所有,公钥为放在网上其他人任何人都可以得到
公钥从私钥中提取而来;使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之亦然;
常用于身份认证及密码交换、因其加密效率较低一般不用于较大数据的加密
常用算法:RSA DSA(只能做数字认证) ELGamal
3、单向加密
数据只能加密不能解密,主要用于提取数据的特征码;
特性:定长输出 、 雪崩效应、不可逆
常用算法MD5 SHA SHA256 SHA384 SHA512:
OpenSSL建立私有CA
OpenSSL 是一个强大的安全套接字层密码库
用openssl创建CA时的配置文件:/etc/pki/tls/openssl.cnf ,配置文件中定义了创建时的一些默认配置;
在创建CA之前应先cat /etc/pki/tls/openssl.cnf了解一些默认配置。下面就在本机上看一下怎么建一个私有CA的
1、首先在自己主机上先建立一个可以签发证书的CA:
(1)生成私钥文件:
# (umask 077; openssl genrsa -out/etc/pki/CA/private/cakey.pem 2048)
(2)生成自签证书
# openssl req -new -x509 -key/etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
-new:生成新的证书签署请求;
-key:私钥文件路径,用于提取公钥;
-days N: 证书有效时长,单位为“天”;
-out:输出文件保存位置;
-x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;
(3)根据提示输入一些信息……
(4)提供辅助文件
#touch /etc/pki/CA/index.txt
#echo 01 > /etc/pki/CA/serial
2、在其它主机上创建一CA申请
(1)生成私钥;# (umask; openssl genrsa -out /etc/httpd/ssl/httpd.kye 1024)
(2) 生成证书签署请求;#openssl req -new -key /etc/httpd/ssl/httpd.kye -out /etc/httpd/ssl/httpd.csr
(3)根据提示输入一些信息……
(a) 其中的subject信息部分,要与主机中创建的CA的subject保持一致;
(b) Common Name要使用此主机在通信真实使用名字;
(4)把请求发送给主机CA;
3、主机CA签发证书
(1)验正请求者信息
(2)签署证书
# openssl ca -in/etc/httpd/ssl/httpd.csr -out /etc/httpd/ssl/httpd.crt -days 3650
(3)把签署好的证书发还给请求者
4、吊销证书:
(1)获取吊销证书的序列号;
#openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial -subject
(2)吊销证书
# openssl ca -revoke/etc/httpd/ssl/httpd.crt
(3)生成吊销证书的编号
echo 01 > /etc/pki/CA/crlnumber
(4)更新证书吊销列表
#openssl crl -gencrl -out ca.crl