openssl

什么是openssl:
OpenSSL是套开放源代码的SSL套件,其函式库是以C语言所写成,
实作了基本的传输层资料加密功能。
此软件是以Eric Young以及Tim Hudson两人所写的SSLeay为基础所发展的,
SSLeay随着两人前往RSA公司任职而停止开发。
其实openssl,就是是一个加密套件,可以实现各种加密。用的最多的应该就是https和CA认证。
加密分类:
1,对称加密:
   常用算法:DES(56bits), 3DES, AES(128bits), Blowfish
             Twofish, IDEA, RC6, CAST5, Serpent
   优点:加密速度快,保证数据私密性
   缺点:不能实现身份认证,不能实现密钥交换,不能保证数据完整性

   有个特别的DH算法能实现密钥交换(有的说是非对称加密里的,原理

   就是应用离散对数上的离散指数难计算。加密双方保留自己的指数,只传送结果,然后用各自
   的指数进行运算,得到一个相同的密钥)
2,非对称加密:
   加密算法:RSA, EIGamal, DSA
   优点:能进行身份认证,能实现密钥交换,保证数据私密性
   缺点:加密速度慢,不能保证数据完整性
3,单向加密:
   加密算法:MD5, SHA1, SHA512, CRC-32
   优点:保证数据完整性,速度快
   缺点:不能保证私密性,不能进行身份认证
具体用法:加密一个文件
1.用opensssl对称加密一个文件
加密:# openssl enc -rc4 -in /tmp/isolinux.cfg -out /tmp/isolinux.enc

解密:# openssl enc -d -rc4 -in /tmp/isolinux.enc -out 123.txt

enc:对称加密
-rc4 :算法
-in/-out:加密前后的文件
2.单向加密(就是提取特码)

# openssl dgst -md5 ./123.txt

这个很简单,和md5sum一样
3.非对称加密
应用:数字签名(私钥加密,公钥解密)
     密钥交换,身份认证
关于https  出自维基百科
HTTPS的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人***提供合理的保护。
HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(如VeriSign、Microsoft等)(意即“我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的HTTPS连接可被信任,当且仅当:
   用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构;
   用户相信证书颁发机构仅信任合法的网站;
   被访问的网站提供了一个有效的证书,意即,它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);
   该证书正确地验证了被访问的网站(如,访问https://example时收到了给“Example Inc.”而不是其它组织的证书);
   或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层(TLS或SSL)不能被窃听者破坏。
-------------------------
https的实现
建立连接
1,tcp三次握手
2,服务端把自己的公钥给客户端(也就是证书)
3,客户端拿着公钥去找CA,
4,CA把自己的证书发给客户端
5,客户端通过自己的证书表比对CA的证书,
6,如果比对成功,继续连接,CA告诉客户端,服务端的证书是否可信
7,如果可信客户端把自己的公钥给服务端()
---
数据传输
传输
1,数据提取特征码(单向加密,保证数据完整性)
2,用自己的的私钥加密特征码(保证特征码是自己生成的,即这个数据就是我发的)
3,用对称加密数据,会生成一个口令(保证数据私密性)
4,用对方公钥加密口令(保证口令安全)
接收
1,用自己的私钥解密(拿到口令)
2,用口令解密数据(得到明文)
3,用对方的公钥解密特征码(保证数据是对方发的)
4,用特征码校验数据的完整性
---------
用openssl建立私有CA
配置文件:/etc/pki/tls/openssl.cnf
CA的工作目录
1,生成私钥

# openssl genrsa -out /etc/pki/CA/private/cakey.pem

genrsa:生成私钥

2,给自己发证书

# openssl req -new -x509 -key private/cakey.pem -out cacert.pem

req:证书申请

-x509:证书格式
-new:就是新建

3,创建需要的文件:

# touch index.txt serial crlnumber
这几个文件是配置文件中写到的,配置文件有写用途

3,给别人签证书

# openssl ca -in /tmp/http.crs -out http.crt

4,吊销证书
# openssl ca -revoke http.crt
----------------
作为客户端申请证书
1,生成私钥(公私钥成对出现的,公钥是从私钥提取的)

# openssl genrsa -out http.key

2,制作证书申请

# openssl req -new  -key http.key -out http.crs

填写好自己的信息发给CA

总结:
genrsa:生成私钥
req:证书申请
ca:签证书/吊销证书
-------------------------
基于密钥认证的登录
1,生成密钥

# ssh-keygen
默认是rsa

2,把公钥拷贝到远端

# ssh-copy-id root@192.168.100.101

3,不用密码登录了

总结:如有错误,还请帮忙提出,谢谢。。。