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将证书发送给请求的主机
  

原文地址:https://www.cnblogs.com/kankanhua/p/4657920.html