OpenSSL学习笔记

蹲街弑〆低调 提交于 2019-12-29 22:39:12

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!