zoukankan      html  css  js  c++  java
  • 加密解密、PKI及SSL、创建私有CA

    加密解密基础

      1. 对称加密: 加密和解密使用同一个密钥

        常见的加密算法有:DES、3DES、AES、Blowfish、Twofish、IDEA、RC6、CAST5

        特性: 

          1. 加密、解密使用同一个密钥

          2.将原始数据分隔成固定大小的块,逐个进行加密

        缺陷:

          1. 密钥过多

          2. 密钥分发困难

      2. 公钥加密: 密钥是成对出现的

        公钥:pubkey,公开给所有人

        私钥:secret key, 自己留存,必须保证其私密性

        常见的加密算法有: RSA、DSA(只能用于数字签名,不能用于数据加密), ELGamal

          特点: 用公钥加密的数据,只能使用与之配对的私钥解密,反之亦然

      3. 单向加密: 只能加密,不能解密,用来提取数据特征码,验证数据完整性

        常见加密算法有:MD5、SHA1、SHA224、SHA256、SHA384、SHA512

          特性: 定长输出,雪崩效应,一个小的改变,加密后的密钥就大不同

      密钥交换(IKE): 常见的有公钥加密、DH(Deffie-Hellman)来实现密钥交换

     

    PKI: Public Key Infrastructure 公钥基础设施

      主要组件:  

         签证机构:CA
       注册机构:RA
       证书吊销列表: CRL
       证书存取库        

        目前签发的证书:x.509

         x.509: 定义了证书的结构以及认证协议标准:

                版本号
                 序列号
                签署算法ID
                有效期限
                发行者名称
                主体名称
                主体公钥
                发行者唯一标识
                主体的唯一标识
                扩展
                发行者签名

     

    SSL:Secure Socket Layer, 安全的套接字层

    TLS: Transport Layer Security  

    openssl:开源项目

      三个组件:   

      openssl: 多用途的命令行工具
      libcrypto: 公共加密库
      libssl: 库,实现了ssl及tls

    openssl命令:配置文件: /etc/pki/tls/openssl.conf  

    openssl version: 查看程序版本号

      常见的标准命令有enc、ca、req

      对称加密:

        工具: openssl enc, gpg    

    加密: # openssl enc -e -des3 -a -salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMEFILE
    解密: # openssl enc -d -dec3 -a -salt -in /PATH/FORM/SOMEFILE -OUT /PATH/TO/SOMEFILE

      单向加密:

        工具:openssl dgst, md5sum,sha1sum,sha224sum,sha256sum...

     加密: openssl dgst -md5 /PATH/TO/SOMEFILE

      生成用户密码:passwd

      # openssl passwd -1 -salt SALT

      生成随机数:rand

      # openssl rand -base64|-hex NUM
          NUM:表示字节数;-hex时,每个字符4位,出现的字符数为NUM*2

      公钥加密:

        加密: RSA, ELGamal

        工具:gpg, openssl, rsautil

    加密私钥:# (umask 077; openssl genrsa -out private.key 2048)
    提取公钥:# openssl rsa -in private -pubout

     

    创建私有CA

      1. 创建所需要的文件 

    # touch index.txt
    # echo 01 > serial

      2.CA自签证书

    #(umask 077;openssl genrsa -out  /etc/pki/CA/private.pem 2048)
    # openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/casert.pem
        -new: 生成新证书签署请求
        -x509: 专用于CA生成自签证书
        -key: 生成请求时用到的私钥文件
        -days n : 证书的有效期限
        -out /PATH/TO/SOMECERTFILE: 证书的保持路径

      3. 发证

       a. 用到证书的主机生成证书请求 

    # (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
    # openssl -req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr

       b. 把请求文件传输给CA

    # scp /etc/httpd/ssl/httpd.csr root@192.168.1.103:/tmp/

        c. CA签署证书,并将证书发还给请求者

    # openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
      
      查看证书中的信息
        # openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|-subject|-serial

      4. 吊销证书

        a. 获取要吊销的证书的serial 

    # openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

            b. CA

          先根据客户端提交的serial与subject信息对比检验是否与index.txt文件中的信息一致

          吊销证书:

    # openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
        c. 生成吊销证书的编号(第一次吊销一个证书)    
    # ech 01 > /etc/pki/CA/crlnumber

         d. 更新证书吊销列表   

     # openssl ca -gencrl -out thisca.crl

           查看crl文件

    # openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text 

     

     

           

     

  • 相关阅读:
    day40_jQuery学习笔记_01
    jQuery选择什么版本 1.x? 2.x? 3.x?
    6个关于dd命令备份Linux系统的例子
    快速掌握grep命令及正则表达式
    Linux下删除乱码或特殊字符文件
    在 Linux 中永久修改 USB 设备权限
    CentOS 7 中 hostnamectl 的使用
    申请红帽企业版Linux开发者订阅
    CentOS6 下rsync服务器配置
    Centos6下DRBD的安装配置
  • 原文地址:https://www.cnblogs.com/ckh2014/p/10772175.html
Copyright © 2011-2022 走看看