ssl以及构建私有CA
ssl协议:将报文在传输前进行加密;
#
ssl
所谓的安全,加密是指保证:保密,完整,可用;
ssl将明文通过密钥转为密文,
密码算法和协议:
对称加密;
单向加密;
公钥加密;
认证协议;
#
对称加密:
即单密钥加密,发送方和接收方都拿着相同的密钥(钥匙),发送方用密钥给报文加密,其他人想要查看报文内容就必须要有密钥,而此时只有接收方有;
[ " 甲和乙是一对生意搭档,由于生意上的需要,他们经常会相互之间邮寄重要的货物。为了保证货物的安全,他们商定制作一个保险盒,将物品放入其中。他们打造了两把相同的钥匙分别保管,以便在收到包裹时用这个钥匙打开保险盒,以及在邮寄货物前用这把钥匙锁上保险盒。" ]
#
常用的对称加密算法:
DES,3DES,TDEA,AES等,
特点:
算法公开,计算量小,加密速度快,加密效率高;
必须实现协商好秘钥,秘钥的唯一性(只能双方知道),是的双方收发会拥有密钥量大,不易管理;
不能保证内容完整性,可用性,
公鈅加密:
公钥是从私钥提取的,公钥是隐藏在私钥中的,通过某种算法从私钥提取公钥,
[ " 甲在和乙建立会话的时候把自己的公钥(箱子)给乙,乙把报文放入箱子(用公钥加密)还给甲,而只有甲才有开这箱子的钥匙,而甲想发报文给乙,就需要乙先给甲一个公钥(钥匙),由此就解决了对称加密的管理多组密对儿的麻烦,此时甲可以同时给多个人提供箱子(公钥),能开这些箱子的只有甲才有的私钥(钥匙)" ]
常用的对称加密算法:
RSA、ElGamal
特点:
可靠,性能差,
常用的公钥加密算法:
SAR
甲乙通信,甲先将公钥发给乙,然后乙先将需要发给甲的报文用对称加密加密,(此时甲不知道对称加密密码),然后乙将对称加密的密码用甲给的公钥加密,完成后附加到报文后面,然后发给甲,甲拿到乙发的后,先用公钥解密那串对称秘钥,然后再用那串对称秘钥解密报文,
缺点,不能保证内容完整性,可用性,
单向加密:
提取数据指纹的特征码,通过特征码判断内容是否被修改,
甲乙通信,甲先将公钥法给乙,先生成特征码,并用乙自己的私钥加密它,然后附加到内容后面,然后生成一次性会话秘钥(对称加密),乙再用甲的公钥加密这段对称密钥,并附加到后面,发过去,
甲解密的时候先用自己的私钥解密这数据得到对称密钥,再用密钥解密这内容,然后在用同样的单向加密验证特征码,查看内容是否正常;
CA 证书授权机构,
加密算法和协议:
对称加密:DES,3DES,AES ...
公钥加密:RSA,DSA,ELGamal ...
单向加密:MD5,SHA1,SHA256 ...
密钥交换:IKE,DH
PKI:Public Key Infrastructure,
签证机构:CA
注册机构:RA
吊销机构:CRL
证书存取库
x.509:定义了证书结构和认证协议标准(尊崇规则版本)
版本号
序列号
签名算法ID
发行者名称
有效期
主体名称
主体公钥
发行者唯一标识符
主体的唯一标识符
扩展
发行者的签名
ssl:secure socket layer
tls:transport layer security
slsv1 和 sslv3没多大区别,
ssl/tls
http(80/tcp) --> ssl --> https(443/tcp)
http和https是完全不同的协议,
openssl 是ssl协议的实现,它有三部分组成:
openssl 多用途的命令工具,各功能分别使用子命令实现;
libcrypto:公共的加密库;
libssl:ssl协议的实现;
#
openssl命令行;
对称加密:
工具:openssl enc,gpg
算法:des,3des,aes ...
enc
openssl enc -e -des3 -a -salt -in WHEREFILE -out WHEREFILE
enc是工具;-des3是算法,-e 表示加密,-a,-salt表示加介质,
-in后面的表示要加密的文件,-out后面的表示加密后地址和名字;
openssl enc -d -des3 -a -salt -in WHEREFILE -out WHEREFILE
enc是工具;-des3是算法,-d 表示解密,-a,-salt表示加介质,
-in后面的表示要解密的文件,-out后面的表示解密后地址和名字;
单向加密:这是校验码,用来做对比的,生成不是解压;
工具:openssl dgst ...
算法:md5,sha1,sha256 ...
openssl dgst -md5 -salt WHEREFILE
MAC:消息验证,保证传输数据的完整性;
生成用户密码:
openssl passwd -1 -salt SALT
生成随机数:
openssl rand -hex NUM
NUM:表字节 每个字符为4为,因此,两个字符为一个字节;
公钥加密:
加密:
算法:RSA,ELGamal
工具:gpg,openssl reautl
数字签名:
算法:RSA,DSA,ELGamal
秘钥交换:
算法:公钥加密,DH
#
生成秘钥对儿:
openssl genrsa -out /root/file.key 2048
genrsa:指明是rsa密对儿,-out指定生成密钥保存位置路径 2048是多长,
bash中,( )小括号表示子shell里执行,
(umask 077;openssl genrsa -out /root/file.key 2048) # -out可以不指定
从私钥提取公钥:
openssl rsa -in /root/file.key -out /root/file.sk -pubout # -out可以不指定
openssl自建CA:
x.509证书
构建私有CA:
openssl的主配置文件:/etc/pki/tls/openssl.cnf # 构建私有CA的配置文件,
[CA_default]
dir: CA的主目录
certs: 已颁发证书的存储位置
crl_dir:已吊销证书的存储位置
database:证书索引文件
new_certs_dir:新颁发证书的存储位置
certificate:CA证书文件
serial:证书颁发时的当前序列号
crlnumber:吊销证书的当前序列号
crl:当前使用的CRL
private_key: CA私钥
RANDFILE:私有随机数生成器文件
构建私有CA步骤:
1,创建私钥,
2,生成自签署证书,
req子命令:生成PKCS#10格式的证书签署格式,
-new:生成新的证书签署请求;
-key /file 私钥文件路径
-days n 证书有效时长;(天)
-out /file 生成的证书放在哪儿;
-x509:专业于CA生成自签证书时;
openssl req -new -x509 -key /file -days 365 -out file
私有CA,国家,省份,城市,公司,部门,主机名,都必须一样,
# touch ./{index.txt,serial} 会自动生成,
echo 01 > serial
服务器请求CA认证:
1,本地生成CA
openssl genrsa -out /file 2048
openssl req -new -key /file -out /newfile -days 365
然后把生成的newfile给CA服务器让它认证;
man ca
openssl ca -in /file -out /nfile -days 365
把对应的生成的nfile文件拿回来,
查看证书中的相关信息
# openssl x509 -in /file -noout -text
ok
吊销证书:
1,获取证书的serial(序列号)
# openssl x509 -in /file --noout -serial -subject
2,CA
1,根据证书持有者提交的序列号和subjet的
2,openssl revoke /etc/pki/CA/newcerts/file
3,生成吊销证书的编号(如果是第一次吊销)
# echo 01 > /etc/pki/CA/crlnumber
4,生成/更新证书吊销列表
# cd /etc/pki/CA/crl
#openssl ca -gencrl -out thisca.crl
注意:查看crl文件方法
# openssl crl -in /file -noout
#