OpenSSL 使用openssl工具搭建私有CA

SSL(安全套接层)是为网络通讯提供安全及数据完整性的一种安全协议,TLS(SSL的继承版本)与SSL在传输层对网络连接进行加密。

SSL用以保障在数据传输的安全利用数据加密技术,可确保数据在网络上之传输过程中不会被窃取和监听。

功能:机密性,认证,完整性,重放保护

两阶段协议,分为握手阶段和应用阶段

握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。

应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信

OpenSSL

OpenSSL:是ssl的开源项目

三个组件:

    openssl: 多用途的命令行工具,包openssl

    libcrypto: 加密算法库,包openssl-libs

    libssl:加密模块应用库,实现了ssl及tls,包nss

openssl命令:

    两种运行模式:交互模式和批处理模式

对称加密:openssl  enc  -e

    openssl enc -e -des3 -a -salt -intestfile   -out testfile.cipher//-a表示base64编码,-salt加盐添加杂质更安全,

    例给fstab加密
     OpenSSL 使用openssl工具搭建私有CA_第1张图片

对称解密:openssl enc -d

    openssl enc -d -des3 -a -salt –in testfile.cipher  -outtestfile

    例给fstab解密
     OpenSSL 使用openssl工具搭建私有CA_第2张图片
单向加密:openssl  dgst

    openssl dgst -md5 [-hex默认]/PATH/SOMEFILE

    openssl dgst -md5 testfile

生成随机数 base64编码或16进制

    opensslrand -base64|-hex NUM

    NUM: 表示字节数;-hex时,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2
    例
     OpenSSL 使用openssl工具搭建私有CA_第3张图片
    生成随机字符取出其中的 8位字母或数字用作口令,8位长度的随机口令
    

非对称加密:

    使用openssl生成密钥对公钥和私钥man genrsa

     生成私钥://指定私钥生成的文件是什么,位数是多少为了安全加一个600的权限。
 
生成私钥命令如下图所示:           OpenSSL 使用openssl工具搭建私有CA_第4张图片
  对私钥加密如下图所示:
OpenSSL 使用openssl工具搭建私有CA_第5张图片

 #openssl  rsa -in private.key -out private.key2 //对加密的私钥解密

生成公钥:从私钥中提取公钥

    #openssl  rsa -in private.key-pubout  -out public.key

二、CA实现双方安全交换公钥 搭建CA实验  用openssl向CA申请证书

CentOS7当服务器,CentOS6当客户端,CentOS6向CentOS7申请证书

参考CA的一个重要的配置文件搭建/etc/pki/tls/openssl.cnf,定义了管理CA的相关的信息 CA_default ]
OpenSSL 使用openssl工具搭建私有CA_第6张图片

dir 变量 存放CA的工作目录

certs                  =$dir/certs   //专门放证书的

crl                       =$dir/crl //放证书吊销列表

database           =$dir/index.txt  //数据库索引文件记录了证书的状态啊编号啊以及都给谁颁发了证书默认不存在。需要手工创建,不创建会提示 缺少这个文件

-------------------------------------------------------------------------------------------------------

new_certs_dir  =$dir/newcerts     //存放新证书目录

certificate          =$dir/cacert.pem //CA的证书文件

serial                  =$dir/serial          //序列号下一个要颁发的证书编号  16进制数

crlnumber         =$dir/crlnumber   //吊销证书的编号 需要手工创建

crl                       =$dir/crl.pem         //吊销证书列表

private_key      =$dir/private/cakey.pem//私钥文件的路径和名

有效期,如下图所示,可人为指定

策略匹配/不同的策略匹配程度不一致,比如CA国家城市,部门等,私有CA(三个必须一致)公有CA(可选)

policy                =policy_match         //定义客户端和CA申请证书的时候它的信息是否和CA是必须匹配的
OpenSSL 使用openssl工具搭建私有CA_第7张图片

搭建CA具体步骤:

1.建立根CARoot CA(自己给自己颁发证书)

1)生成私钥文件

        #(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem  4096)

2)生成自签名证书 CA要有证书

        #openssl  req -new -x509  -key /etc/pki/CA/private/cakey.pem -out/etc/pki/CA/cacert.pem -days 3650

//req:申请;-x509:自签名

//查看证书内容  openssl x509 -in cacert.pem -noout  -text

//图形方式 sz cacert.pem   改后缀crt

2.用户服务器 申请证书

1)生成私钥

        #(umask 077;openssl genrsa -out app.key 1024)

2)生成证书申请文件

        #openssl  req  -new -key app.key  -out app.csr

3)将申请文件发给CA

        #scp app.csr 172.21.109.25:/etc/pki/CA

3.CA颁发证书--用自己的私钥签名

        #touch index.txt   //这个文件会自动更新

        #echo 0F > serial   //下一个要颁发的证书的编号

        #openssl ca -in app.csr -out certs/app.crt-days 100

4.证书发送客户端

        #scp certs/app.crt 172.21.111.1:/data

5.在应用软件中使用证书

 

你可能感兴趣的:(加密与安全)