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

加密、解密以及Openssl建立私有CA

时间:2015-04-22 02:08:05      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:linux   加密   解密   openssl   

一、openssl简介
      OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用
的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
  SSL:secure socket layer  安全套接层协议 可以在internet提供秘密性的传输。

二、加密算法  
 加密算法的分类:对称、公钥和单向加密
 1、对称加密:
  加密和解密用同一个密钥,安全性依赖于密钥,而非算法。
   (1)算法:
        DES:Data Encryption standard,数据加密标准,56bits
        3DES:DES加强版
        AES:Advanced encrption standard 高级加密标准(128bits,192,256,382,512,)
        可自行选择加密位数,常用算法
        blowfish
        twofish
        tdea
        rc6
        casts
   (2)特性
       1)同一密钥
       2)将明文分隔成固定大小的块,逐个进行加密
   (3)缺陷
       1)密钥过多
       2)密钥分发
 2、公钥加密:
    (1)私钥和公钥
      私钥:secret key,仅允许个人使用
      公钥:public key,公开给所有人获取
      公钥从私钥中提取而来,使用公钥加密的数据,只能使用与此公钥配对配对的私钥解密
  (2)用处:
   1)身份认证:私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份;
   2)密钥交换:与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发送给对方;
   3)数据加密:
  (3)算法:
   RSA
   DSA
   ELGamal
    (4)特性
       1)密钥长度较大,512,2048
       2)加密解密分别使用密钥对儿中的密钥相对进行
       3)用于数据签名和密钥交换
 3、单向加密:
  提取数据的特征码
   (1)特性
      1)定长输出,无论原来数据的大小,加密长度一样
      2)雪崩效应:原数据微小改变,导致结果巨大变化
      3)不可逆       
   (2)算法:
        MD5:128bit
        sha1 160
        sha256
        sha384
        sha512
   (3)用处:
        数据完整性            
 4、一次加密通信过程
 发送者:  
 (1)提取数据特征码
 (2)私钥加密特征码
 (3)生成临时密钥
 (4)临时密钥加密数据和加密过的特征码
 (5)使用接收方公钥加密临时密钥,附加在数据后方
 接收方:
 (1)用私钥解密,获得临时密钥
 (2)使用临时密钥解密数据和特征码
 (3)用对方公钥解密特征码
 (4)计算特征码,与解密的对比

三、数字证书
  1、数字证书的定义:
     数字证书:互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在
  Internet上验证通信实体身份的方式,数字证书不是数字***,而是身份认证
  机构盖在数字***上的一个章或印。
     它是由一个由权威机构——CA机构,又称为证书授权(Certificate Authority)
 中心发行的,人们可以在网上用它来识别对方的身份。    
  2、数字证书的格式与用户
   (1)数字证书的格式(x.509 ):
       版本号(version)
       序列号:(serial number):CA用于唯一标识证书
       签名算法标志(signature algorithm identifier)
       发行者的名称:即CA自己的名称
       有效证书主体名称:证书拥有者自已的名字
       证书文体公钥信息:证书拥有者自己的公钥
       发行商的唯一标识
       证书主体的唯一标识
       扩展信息
       签名:CA对此证书的数字签名
   (2)证书通常有两类用途
       用户证书
       主机证书(httpd)
 3、证书的吊销链表:
      算法-->CA的名称-->本次更新时期-->下次更新日期-->用户证书序列号,吊销日期-->CA的数字签名
 4、获取证书的方法:
    (1)向RA注册申请
    (2)建立私有CA 

四、openssl加密解密:
 1、openssl 的组成部分
    libcrypto:加密、解密库文件
    libssl:ssl协议实现
    openssl:多用途命令行工具,每种功能都使用专用 的子命令来实现
 2、对称加密
    工具:openssl enc
    算法:des,3des,aes
    openssl enc -e -CIPHERNAME -a salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/FILE
    openssl enc -d -CIPHERNAME -a salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/FILE
      #cp /etc/fstab ./
      #openssl enc -e -des3 -a -salt -in fstab -out fstab.des3
      #openssl enc -d -des3 -a -salt -in fstab.des3 -out fstab
 3、公钥加密
   工具:gpg,openssl rsautl
   数字签名:RSA,DSA,ELGamal
     DSA:digital signature algorithm  数字签名算法
     DSS:digital signature standard    数字签名标准
操作过程 :生成私钥,从私钥中提取公钥
(1)生成私钥:
     openssl genrsa -out keyFILE  NUM_BITS
     #openssl genrsa -out testkey 2048
    (umask 077;openssl genrsa -out KEY_FILE NUM_BITS)
    #(umask 077;openssl genrsa -out testkey 2048)
    注意:命令加(),会在子shell中运行,修改默认生成私钥权限
(2)提取公钥
     #openssl rsa -in KEY_FILE -pubout
     #openssl rsa -in testkey -pubout
 4、单向加密
    算法:md5,sha1
    工具:openssl dgst,md2sum,sha1sum
    openssl dgst -CIPHER /PATH/TO/SOMEFILE...
    #openssl dgst -md5 fstab
    #md5sum fstab
 5、生成用户密码:
     openssl passwd -1 -salt 8bits 随机数 -1表示以MD5加密
     #openssl passwd -1 -salt 12345678
 6、生成随机数
    openssl rand -hex|-base64 NUM
    #openssl passwd -1 -salt $(openssl rand -hex 4)
     openssl
 7、随机数生成器
    random,urandom
    熵池:保存硬件中断产生的随机数
    /dev/random 仅从熵池中返回随机,当熵池耗尽,进程将被阻塞
    /dev/urandom  取随机数,当熵池耗尽,让生成器生成随机数

五、构建私有CA
 配置文件:/etc/pki/tls/openssl.conf
 工作目录:/etc/pki/CA/
 1、建立私有CA:
  (1)生成私钥文件  /etc/pki/CA/private/cakey.pem
        #cd /etc/pki/CA
        #(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
  (2)生成自签证书
        #openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out/etc/pki/CA/cacert.pem -days 3650
          -new :生成新的证书签署请求
          -key 私钥文件路径,用于提取公钥
          -days N:有效时长 ,天
          -out:输出文件保存位置
              -x509:直接输出自签署证书文件,只有构建CA时才用
  (3)提供辅助文件
        #cd /etc/pki/CA
        #touch /etc/pki/CA/index.txt
        #echo 01 >/etc/pki/CA/serial
 2、给节点发证书
  (1)节点申请证书
         1)生成私钥
             #cd /etc/httpd
             #mkdir ssl
             #(umask 077;openssl genrsa -out httpd.key 1024)
         2)生成证书签署请求
             #openssl req -new -key httpd.key -out httpd.csr
            注意:
               a)其中subject信息部分与CA一致
               b)common Name 要使用此主机在通信使用名字
         3)把请求发送给CA
  (2)CA签发证书
         1)验正请求者信息
         2)签署证书
           openssl ca -in CSR_FILE -out CRT_FILE -days N
           #openssl ca -in /etc/httpd/ssl/http.csr -out /etc/httpd/ssl/httpd.crt -days 3650
         3)把签署好的证书发还给请求者
 3、吊销证书:
  (1)获取吊销证书的序列号
       openssl x509 -in CRT_FILE -noout -serial -subject
      #openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial -subject
  (2)实现证书吊销
        1)吊销证书
          #openssl ca -revoke CRT_FILE
        2) 生成吊销证书编号
         #echo 01 >/etc/pkie/ca/crlnumber
        3)更新证书吊销列表
          #openssl crl -gencrl -out SCA.crl

本文出自 “linux课堂笔记” 博客,请务必保留此出处http://linuxkingdom.blog.51cto.com/6334977/1636696

加密、解密以及Openssl建立私有CA

标签:linux   加密   解密   openssl   

原文地址:http://linuxkingdom.blog.51cto.com/6334977/1636696

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