码迷,mamicode.com
首页 > 其他好文 > 详细

openssl

时间:2015-08-06 09:26:53      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:

openssl

openssl

PKI: Pubile key Infrastucture 公钥基础设施

openssl 的三大功能:
libcrypto 通用功能的加密库
libssl 用于实现 TLX/SSL 的功能
openssl 多功能命令工具, 生成密钥,创建数字证书,手动加密解密数据

对称加密

工具 gpg openssl enc
加密 openssl enc -des3 -a -salt -in /ets/fstab -out /tmp/fstab.cipher
解密 openssl enc -d -dec3 -a -salt -in /tmp/fstab.cipher -out 文件

DES(56bits) 数据加密标准
3DES
AES(128bits) 高级加密标准
Blowfish
Twofish
IDEA
RC6
CAST5
Serpent

单向加密

特性 One-Way (Collision-free)
算法
md5 128bits
sha1 160bits
sha512 512bits
MD5, sha1 是对数据进行计算特征码
工具 sha1sum, md5sum, openssl dgst
openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1][-out filename] /path/to/somefile

MAC: 信息摘要码,单向加密的延伸应用

应用 用于实现在网络通信中保证所传输的数据完整性
机制
CBC-MAC
HMAC: 使用 md5 和 sha1 算法

用户认证

工具: passwd openssl passwd

密钥对

公钥: pkey, 用来加密
私钥: skey, 用来解密

算法 RSA,EIGamal

工具 gpg, openssl rsautl 用于加密, 一般不用密钥来进行加密

数字签名: 私钥加密,公钥解密
算法 RSA,EIGamal,DSA

DSA: Digital Signature Algorithm (签名)
DSS: Digital Signature standard (签名)
密钥交换 IKE
算法 DH(Diffie-Hellman),公钥加密

数字证书

第三方机构使用一种安全的方式把公钥分发出去
证书格式 x509

公钥和有效期限
持有者的个人合法身份信息: 主机名
证书的使用方式
CA 的信息
CA 的数字签名

用户

  1. 生成一对密钥
  2. 把所需信息和公钥按固定格式制作成证书申请

CA 机构

  1. 自签证书 (让自己变成第三方机构, 签证)
  2. 签署证书 (给 server 端生成证书, server 端把 public key 给第三方机构)
  3. 传给用户 (发送 server 端的证书给 client 端)
  4. 维护吊销列表 (取消证书)

OpenCA: 更专业的 CA 工具

openssl 实现私有 CA, 让自己成为 CA

openssl 中有如下后缀名的文件

.key 格式 私有的密钥
.crt 格式 证书文件,certificate 的缩写
.csr 格式 证书签名请求(证书请求文件),含有公钥信息,certificate signing request 的缩写
.crl 格式 证书吊销列表,Certificate Revocation List 的缩写
.pem 格式 用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式

配置文件 /etc/pki/tls/openssl.cnf

  1. 生成密钥对 cakey.pem
    ? cd /etc/pki/CA
    ? (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
    

    cakey.pem 是在 /etc/pki/tls/openssl.cnf 中定义的

  2. 如果想查看公钥, 不是必要的, 仅仅是用来查看
    ? openssl rsa -in private/cakey.pem -pubout -text -noout
    ? openssl rsa -in private/cakey.pem -pubout -text
    
  3. 生成自签证书 cacert.pem
    ? openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
    
  4. 创建需要的文件
    ?  touch /etc/pki/CA/{index.txt,serial,crlnumber}       # 颁发过的列表 序列号 吊销序列号
    ?  echo 01 > /etc/pki/CA/serial
    

至此, 我们已经伪装成为 CA, 现在可以向我们伪装的 CA 申请证书

用 openssl 实现证书申请

在主机上生成密钥,保存至应用此证书的服务的配置文件目录下, 例如

  1. 生成密钥对
    ?  mkdir /etc/httpd/ssl
    ?  cd /etc/httpd/ssl
    ?  (umask 077; openssl genrsa -out httpd.key 1024)
    
  2. 生成证书签署请求
    ?  openssl req -new -key httpd.key -out httpd.csr
    
  3. 将请求文件发往 CA (伪装的 CA)
    scp … …
  4. CA 签署证书
    ?  openssl ca -in /path/to/httpd.csr -out /path/to/httpd.crt -days DAYS
    
  5. 将证书传回请求者
  6. 吊销证书 (私钥丢了, 需要重新换等情况才需要)
    ?  openssl ca -revoke /path/to/somefile.crt
    

openssl

标签:

原文地址:http://www.cnblogs.com/sunznx/p/4706354.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!