zoukankan      html  css  js  c++  java
  • Openssl创建私有CA

    1.A和B通过ssl传输数据大概过程
     
    私钥加密的数据只能自己对应的公钥才能解密,
    CA 签证机关先给自己发一个证书,公共认可的机构,
     

    A B之间通信  数据都是通过自己生成的私钥加密的后生成的数据

    首先  A 将自己的 姓名 地址 公钥 发给CA  ,发送的数据称为AA,

    CA自己生成的有一对公钥和私钥。CA先提取AA数据的特征码, 然后用自己的私钥加密,生成一段 数据,加密的结果附加到AA数据的后面也就是签名,称为AAA。

    B 拿到发证机构的证书,里面包含有发证机构的公钥,能够解密AAA中的数据证明证书是发证机构发的。得到AA,然后拿到A的公钥,验证数据的完整性。然后用A的公钥解密A的  数据。

    2.ssl大概内容

    PKI Public Key Infrastructure  公钥基础设施结构
    核心是CA  Certificate Authority  证书权威机构
    CRL   证书吊销列表 Certificate Revocation List,使用证书之前需要检测证书有效性。

    证书存储格式常见的X509格式
      包含内容
        公钥有效期限
        证书的合法拥有人
        证书该如何使用
        CA的信息
        CA签名的校验码(签名)

    PKI:TLS/SSL  使用的X509格式
    PKI:OpenGPG
    五层协议 : 物理层  数据链路层 网络层 传输层  应用层
    ssl Secure Socket Layer NETscape公司
    是在传输层和应用层的一个库,通过调用ssl实现加密
      V1 V2  V3 版本
    TLS Transport Layer Security 国际化标准组织
     V1相当于sslV3
    https 443端口

    客户端和服务端通信
        客户端请求服务端
        客户端和服务端协商使用加密协议,加密算法  SSLv1 SSLv2 TLSv1
        服务端发送证书给客户端
        客户端生成随机数,通过服务端公钥加密后,传输数据(对称密码)给服务端
        服务端勇对称密码加密数据给客户端
        
    3.常见的加密算法   

    对称加密
        DES
        3DES
        AES
        AES192 AES 256 AES512
    单向加密
        md4
        md5
        SHA1
        SHA192 SHA256 SHA384
        CRC-32

    公钥加密
        身份认证
        数据加密
        密钥交换
           RSA算法 可以用来加密也可用来签名
           DSA算法 只可以用来签名

    Openssl ssl的实现,一种加密工具
        组件
            libcrypto 通用加密库各种加密算法
            libssl  tls/ssl的实现,实现了数据机密性,会话完整性的tsl/ssl库
            openssl 多用途命令行工具,可以实现私有证书颁发机构


    4.openssl命令
       speed 测试本机对各种加密算法的速度
        openssl speed rsa  可以接算法表示测试单个算法的速度
      enc -des  指定加密算法,对称加密算法    
      -a 对文件内容进行base64处理
      -e 加密 默认选项
      -d  解密
      -salt 加盐加密
      -in  指定要加密的文件
      -out 加密后输出文件
      dgst -md5 计算文件特征码
      genrsa 生成rsa密钥
      gendsa 生成dsa密钥

      加密 openssl enc -des3 -salt -a  -in /etc/fstab -out fstab.des3
      解密 openssl enc -des3 -d -salt -a in fstab.des3 -out fstab

      md5sum  sha1sum  计算文件的md5,sha1特征码
      openssl passwd -1 -salt ffgs
        -1指定md5加密
     openssl rand -base64 100 生成100位base64加密的随机数

     whatis passwd 获取帮助



    5.openssl制作私有CA
        生成一对密钥
        生成自签证书
     
      (umask 077; openssl genrsa -out test.key 1024 )  ()中的命令只在子shell中生效,生成

      权限为600,长度为1024位的私钥
      openssl rsa -in test.key -pubout  表示从私钥中提取公钥

       openssl req -new -x509 -key  test.key -out  server.crt -days 365  //生成私有证书
        req  生成证书,和申请证书的命令
        -new 代表生成一个新的申请
        -x509 生成自签证书
        -key 指定密钥文件
        -out 指定输出证书文件
        -days 指定过期时间
       opsenssl x509 -text -in server.crt       //查看私有证书内容文本格式


     /etc/pki/tls/openssl.cnf  openssl配置文件
         dir  表示CA工作目录   /etc/pki/CA
         certs 客户端证书保存目录
         crl  证书吊销列表目录
         database  证书保存数据库
         new_certs_dir 新生成的证书保存路径
         certificate  自有的证书文件
         serial      证书序列号文件
         crlnumber    证书吊销列表的号码
         crl           吊销证书文件
         private_key    CA的私钥文件

     在/etc/pki/CA  目录下创建certs , newcerts,crl目录,和index,serial文件,
     /ect/pki/CA/private/cakey.pem 存放自签私有证书,必须命名为cakey.pem
     给serial文件一个初始值为01(自定义) ,自签证书cacrt.pem

    6.网站请求CA签署请求
      openssl req -new -key request.key -out request.csr   //请求CA签署证书
     
      将证书发送给CA

     
       opensssl ca -in request.csr  -out request.crt -days 3655    //CA签署请求证书  

       CA将证书发送给请求的主机
      

  • 相关阅读:
    Android编译系统
    Android指针管理:RefBase,SP,WP
    Android图片异步加载
    Android动画学习笔记Android Animation
    触发checkbox的click事件时遇到的问题
    C++ Primer笔记
    Android自定义对话框(Dialog)位置,大小
    android startService流程梳理笔记
    自定义SimpleAdapter
    Android Touch事件
  • 原文地址:https://www.cnblogs.com/kankanhua/p/4657920.html
Copyright © 2011-2022 走看看