前三步是建立TCP连接(三次握手)
1. 建立连接后客户端向服务器发起数字证书请求,而后服务器下发数字证书,并确认使用非对称加密算法种类
2. 得到服务器下发的数字证书后,客户端会向第三方认证机构认证此证书是否有效
3. 客户端本地随机生成一组非对称加密密钥,同时将密钥本身通过公钥(数字证书中包含)加密后传给服务端
4. 服务端拿到密钥后就可以与客户端进行加密通讯
对称加密算法
- DES Data encrption standard , 56 bits
- 3DES 使用DES加密三次
- AES advanced encrption standard
- AES192
- AES256
- AES512
- Blowfish
单向加密
- MD4
- MD5
- SHA1
- SHA192,SHA256
- CRC-32
公钥加密
身份认证(数字签名)--主要
数据加密
- RSA
- DSA
普通的模型
应用层(HTTP 、FTP 、SMTP 、TELNET)封装 -- 传输层封装(TCP、UDP) -- 网络层封装(IP包)
安全模型
应用层(HTTP 、FTP 、SMTP 、TELNET)封装 -- 调用SSL库对数据进行加密 -- 传输层封装(TCP、UDP) -- 网络层封装(IP包)
SSL : Secure Socket Layer
TLS : Transport Layer Security (国际标准化组织)
OpenSSL :SSL开源实现(加密工具)
libcrypto :加密库
linssl:TLS/SSL实现
openssl:多用途命令行工具,私有证书颁发
命令:openssl ? 可以列出openssh支持加密类型
root@ubuntu:/etc# openssl ? openssl:Error: '?' is an invalid command. Standard commands asn1parse ca ciphers cms crl crl2pkcs7 dgst dh dhparam dsa dsaparam ec ecparam enc engine errstr gendh gendsa genpkey genrsa nseq ocsp passwd pkcs12 pkcs7 pkcs8 pkey pkeyparam pkeyutl prime rand req rsa rsautl s_client s_server s_time sess_id smime speed spkac srp ts verify version x509 Message Digest commands (see the `dgst' command for more details) md4 md5 rmd160 sha sha1 Cipher commands (see the `enc' command for more details) aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc aes-256-ecb base64 bf bf-cbc bf-cfb bf-ecb bf-ofb camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb camellia-256-cbc camellia-256-ecb cast cast-cbc cast5-cbc cast5-cfb cast5-ecb cast5-ofb des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb des-ofb des3 desx rc2 rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb rc4 rc4-40 seed seed-cbc seed-cfb seed-ecb seed-ofb
使用
#使用sha1 算法对passwd文件进行加密 root@ubuntu:/etc# openssl sha1 /etc/passwd #MD5加密 root@ubuntu:/etc# openssl sha1 /etc/passwd #获得随机数 root@ubuntu:/etc# openssl rand -base64 123