Linux学习28-CA搭建与证书申请

CA搭建与证书申请

概述

  • 需要掌握证书申请
  • 了解证书吊销
  • 用到的命令openssl

引言

前面提到的不对称加密时,将公钥传送给对方时,存在中间人攻击的隐患,如果接收方没有进行安全检测,贸然认可,那后续传输就谈不上安全了。
为保证用户之间在网上传递信息的安全性、真实性、可靠性、完整性和不可抵赖性,不仅需要对用户的身份真实性进行验证,也需要有一个具有权威性、公正性、唯一性的机构
这里写图片描述

1. CA和证书

  • 需要知道的名称
  1. PKI
    Public Key Infrastructure公钥基础设施
  2. 发证机构(CA)
  3. 注册机构(RA)
  4. 证书吊销列表(CRL)
  5. 证书存取库
  6. X.509:定义了证书的结构以及认证协议标准
    包括:版本号、序列号、签名算法、颁发者、有效期限、主体名称、主体公钥、CRL分发点、扩展信息、发行者签名
  • CA证书的作用

    1. 为实现双方安全通信提供了电子认证。
    2. 使用数字证书实现身份识别和电子信息加密。
    3. 数字证书中含有密钥对(公钥和私钥)所有者的识别信息,通过验证识别信息的真伪实现对证书持有者身份的认证。
  • 证书获取

  1. 向证书授权机构申请
    1. 生成签名请求(csr),发送给RA,RA审核后发送给CA
    2. CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者
  2. 自签名的证书
    自已签发自己的公钥,如建立根CA
  • 安全协议
    如下图所示,TLS工作在传输层与应用层之间,也就是用户只能看到传输层以下的数据
    在这里插入图片描述

    1. Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换
    2. ChangeCipherSpec 协议:一条消息表明握手协议已经完成
    3. Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告
    4. Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等
  • 示例:
    HTTPS 协议:就是“HTTP 协议”和“SSL/TLS 协议”的组合。HTTP over SSL”或“HTTP over TLS”,对http协议的文本数据进行加密处理后,成为二进制形式传输
    在这里插入图片描述

    1. 客户申请访问https网站
    2. 服务器接收到请求,服务器具备CA认证的密钥
    3. 将CA证书发给客户
    4. 客户用CA的公钥验证服务器证书,确认后,生成对称密钥key,用服务器的公钥加密key
    5. 将加密的key发送给服务器
    6. 服务器端用自己的私钥解密,得到key
    7. 服务器传输key加密信息
    8. 客户端接收加密信息,解密获取
  • 命名

    1. SSL: 安全套接层(Secure Socket Layer)
      早期名称,由Netscape公司开发的
    2. TLS: 传输层安全(Transport Layer Security)
      由IETF(Internet工程任务组) 将SSL命名的国际标准名称,目前主流的为1.2版本
  • 功能

    1. 实现数据的加密
    2. 认证
    3. 完整性
    4. 重放保护 认证
      1. 基于重放攻击的保护手段,通过记录时间,只负责这一次的验证
      2. 所谓重放就是不解密数据,将为解密数据再去匹配
        例如:登录时的账号与密码,不去破解,而是将其拿出来发给服务器,如果服务器校验成功,就会登录
  • 安全协议实现
    分为握手阶段和应用阶段

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

2. OpenSSL工具

证书的申请,需要用到开源项目OpenSSL

2.1 概述

  • 主要组件
    • openssl: 多用途的命令行工具,包openssl
    • libcrypto: 加密算法库,包openssl-libs
    • libssl:加密模块应用库,实现了ssl及tls,包nss
  • 主要文件目录
    /etc/pki/CA
  • 涉及名称:satl值
    • 原理:
      为用户密码添加Salt值,使得加密的得到的密文更加冷僻,不宜查询。即使黑客有密文查询到的值,也是加了salt值的密码,而非用户设置的密码。salt值是随机生成的一组字符串,可以包括随机的大小写字母、数字、字符,位数可以根据要求而不一样。
    • 用途
      当用户首次提供密码时(通常是注册时),由系统自动添加随机生成的salt值,然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的加盐值,然后散列,再比较散列值,已确定密码是否正确。
  • openssl命令:
    直接输入openssl回车进入交互模式,输入带命令选项的openssl进入批处理模式(非交互式 )
    • 程序版本号
      openssl version

        [root@hai7 ~/.gnupg]$openssl version
        OpenSSL 1.0.2k-fips  26 Jan 2017
      
    • 获取帮助
      openssl ?

      [root@hai7 ~/.gnupg]$openssl ?		   				
      标准命令
      Standard commands   
      asn1parse         ca                ciphers           cms
      ......
      消息摘要命令(哈希运算)
      Message Digest commands (see the `dgst' command for more details)
      md2               md4               md5               rmd160            
      sha               sha1  
      加密命令(各种加密算法)
      Cipher commands (see the `enc' command for more details)
      aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb 
      

2.2 对称加密

  • 工具
  1. openssl enc
  2. gpg
  • 算法
    3des, aes, blowfish, twofish

  • 帮助
    man enc

  • 格式

    1. 加密
      openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
    2. 解密:
      openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
  • 选项

    • -e:加密输入数据,默认值
    • -d:解密输入数据
    • -des3:加密类型,表示用des3加密
    • -a:base64处理数据。这意味着,如果进行加密,数据将在加密后进行base64编码;
      如果解密被设置,那么输入数据在被解密之前就被解码了
    • -salt: 加盐,随机生成,或者提供-S选项
    • -S : 指定salt值
    • -in: 跟要加密的文件
    • -out: 跟输出的文件
  • 示例
    示例1:为文件f1以des3算法加密,输出为f1.des3

1. 为文件f1以des3算法加密,输出为f1.des3
[root@localhost  /data]$openssl enc -e -des3 -a -salt -in f1 -out f1.des3
enter des-ede3-cbc encryption password:           <==输入2次密码
Verifying - enter des-ede3-cbc encryption password:
2. 查看生成文件,已转换成base64
[root@localhost  /data]$cat f1.des3                 
U2FsdGVkX19KJwR5kcHwfvMkXiumg9uX/MnR9J5KnNPXa2H1OsMabw==

示例2:批处理模式解密示例1中生成的f1.des3

[root@localhost  /data]$openssl enc -d -des3 -a -salt -in f1.des3 -out f2.des3 -pass pass:magedu

2.3 信息摘要算法

  • 算法
    md5sum, sha1sum, sha224sum,sha256sum…

  • 帮助
    man dgst

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

  • 选项

    • -sign filename
      用“文件名”中的私钥(DSA算法)对摘要进行数字签名
  • 示例

示例1:以md5算法计算文件f1哈希值,

[root@localhost  /data]$openssl dgst -md5 f1
MD5(f1)= fda4e701258ba56f465e3636e60d36ec
[root@localhost  /data]$md5sum f1
fda4e701258ba56f465e3636e60d36ec  f1

示例2:用md5算法为文件f1签名࿰

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值