SSL缺省只进行server端的认证,客户端的认证是可选的。以下是其流程图(摘自TLS协议)。
加密算法介绍:
对称加密:
DES:date encrption standard,56bit
3DES:
AES: Advanced
AES192,AES256,AES512
Blowfish
单向加密
MD4,MD5
SHA1, SHA192,SHA256,SHA384
CR3-32
公钥加密:(加密和签名)
身份认证(数字签名)
数据加密
密钥交换
RSA:加密、签名
DSA:签名
ELGamal
OpenSSL:SSL的开源实现
libcrypto: 加密库
libssl: TLS/SSL的实现
基于会话的,实现身份认证,数据机密性和会话完整性的TLS/SSL库
openssl:多用途命令行工具
实现私有证书颁发机构
子命令
测试opensll对加密算法支持的速度 speed: openssl speed des
加密和解密 enc (man enc)
加密(encrypted)
openssl enc -des3 -salt -a -in inittab -out inittab.des3 #inittab是被加密的文件
解密(decrypted )
openssl enc -des3 -d -salt -a -in inittab.des3 -out inittab
提取信息的特征码(SHA、MD5)
openssl dgst -md5 inittab
openssl dgst -sha1 inittab
加密密码 (通过whatis passwd,可以得知应该man sslpasswd)
第一个$表示加密算法,第二个$表示salt
生成随机数
openssl rand -base64 15
openssl实现私有CA
证书其实包含三部分,用户的信息,用户的公钥,还有CA中心对该证书里面的信息的签名,要验证一份证书的真伪(即验证CA中心对该证书信息的签名是否有效),需要用CA 中心的公钥验证,而CA中心的公钥存在于对这份证书进行签名的证书内,故需要下载该证书,但使用该证书验证又需先验证该证书本身的真伪,故又要用签发该证书的证书来验证,这样一来就构成一条证书链的关系,这条证书链在哪里终结呢?答案就是根证书,根证书是一份特殊的证书,它的签发者是它本身,下载根证书就表明您对该根证书以下所签发的证书都表示信任,而技术上则是建立起一个验证证书信息的链条,证书的验证追溯至根证书即为结束。所以说用户在使用自己的数字证书之前必须先下载根证书。
1.生成一对密钥
1.1生成私钥(公钥是从私钥中提取而来)
openssl genrsa -out server.key 2048 #或者:openssl genrsa 2048 > server.key
1.2 赋权
chmod 600 server.key
1.3 提取公钥
openssl rsa -in server.key -pubout
2.生成自签证书
openssl req -new -x509 -key server.key -out server.crt -days 365
查看证书信息
openssl x509 -text -in server.crt
参考:https://segmentfault.com/a/1190000002554673