目录

前言

加密类型

          对称加密:

          公钥加密:

          单项加密:

ssl会话模型

openssl工具

建立私有CA:

服务器端自建CA

        初始化工作环境:

        生成密钥:

        自签证书:

节点申请证书:

      生成密钥:这里以https为例

         生成证书签署请求:

         把签署请求文件发送给CA服务

CA服务器签署证书并将证书发还给请求者:

        签署证书:

        发送给请求者:

        查看证书中的信息:

吊销证书

        客户端获取要吊销的证书的serial

        CA服务器端:

CA证书验证会话模型


前言

要自建CA需先了解openssl工具和ssl协议还有各加密类型
    ssl(Secure Socket Layer)安全套接字层当前版本为3.0,浏览器与Web服务器之间的身份认证和加密数据传输,它工作在传输层和各应用层之间,用户可以选择是否使用ssl进行传输,选择ssl协议将调用ssl函数库,端口也会发生变化。

加密类型

对称加密:

任意加密数据块和流的内容,加密和解密用同一个密码, 通常明文通过算法和密钥生成密文,再由接受者用相同的密钥和算法解密获取明文。
                  算法:(DES、3DES、AES现在使用比较广、Blowfish、Twofish、IDEA、RC6、CAST5)
                  特性:加密、解密使用同一口令。将明文分割成固定大小块,逐个进行加密
                  缺陷:密钥过多、密钥传输不安全、密钥交换、身份验证。

公钥加密:

公钥和私钥是成对出现的,公钥包含在私钥中,公钥称为public key、私钥为secret key,由发起者对接受者索要公钥,用公钥加密数据后发送给接受者,接受者用算法和私钥解密
                 缺陷:加密、解密时间过长一般不用于简单通信

单项加密:

单项机密也叫数据完整性校验,抽取数据特征码和之前特征码作比较以确保数据没有被窜改

认证协议:用来确定通信方的真实性。

ssl会话模型

发起者用单项加密获取数据特征码,用自己的私钥计算特征码附加在数据后面,在用对称加密对整个包(数据和特征码)进行加密,并用对方公钥加密对称加密密码,附加在整个包中一并发给对方。接受者用自己的私钥解密获取对称加密密码,得到密码后解密整个包获得数据和特征码,在用相同的算法计算特征码,用对方的公钥解密数据验证对方身份,用对方计算结果(特征码)和解析结果(特征码)进行对比,来验证数据的完整性。

openssl工具

对称加密工具openssl enc
               openssl命令选项:
                   -e:指定为加密,可以不写默认为加密。
                   -des3:指定算法算法
                   -salt:默认设置,生成一段字符串放在密码最前面进行加密,提高解密难度。
                   -a:基于base64处理数据。加密结果进行base64编码处理
                   -in:读取那个文件进行加密
                   -out:输出到那里
                   -d:指定为解密
               案例如下:
                   加密文件:openssl enc -e -des3 -a -salt -in test.sh -out ./test.txt
                   解密文件:openssl enc -d -des3 -a -salt -in test.txt -out ./test.sh
       单项加密:openssl dgst
                  -md5:用md5方式加密
                  -sha1:sha1方式加密
                  -out:加密后密码保存到那里
               案例如下:
                  openssl dgst -md5 test.sh 或openssl dgst -md5 -out ./123a test.sh
                  openssl dgst -sha1 test.sh
       用户密码:openssl passwd
                  -1:md5加密、
                  -salt:自己指定附加信息。
                  生成随机数:openssl rand -base64 4或openssl rand -hex 4,生成8位随机数
               案例如下:
                  openssl passwd -1 -salt `openssl rand -base64 4` 123456  
       生成私钥和公钥:openssl genrsa
               案例如下:
                 (umask 077;openssl genrsa -out ./mykey 2048)生成只有当前用户可读的2048字节mkkey私钥文件
                  openssl rsa -in ./mykey -pubout,-pubout根据私钥文件提取公钥

建立私有CA:

openssl的配置文件:/etc/pki/tls/openssl.cnf
        CA服务器端:
             生成密钥
             自签证书
             初始化工作环境
        节点:
             生成密钥对儿
             生成证书签署请求
             把请求发送给CA
       CA服务器:
             验正请求者信息:自建CA无需该步骤
             签署证书
             把签好的证书发送给请求者

服务器端自建CA

初始化工作环境:

touch /etc/pki/CA/{index.txt,serial}:创建相关文件
            echo 01 > /etc/pki/CA/serial。只需第一次创建序列号

生成密钥:

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

自签证书:

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
             详细记录证书创建时所填信息如不一致签署将失败。建议修改openssl.conf文件发给每个申请节点
                     req: 生成证书签署请求
                     -news: 新请求
                     -key /path/to/keyfile: 指定私钥文件
                     -out /path/to/somefile:输出文件到那里
                     -x509: 生成自签署证书
                     -days n: 有效天数

节点申请证书:

生成密钥:这里以https为例

(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

把签署请求文件发送给CA服务

scp    /etc/httpd/ssl/httpd.csr hostname@IP:/tmp/

CA服务器签署证书并将证书发还给请求者:

签署证书:

openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days N

发送给请求者:

scp

查看证书中的信息:

openssl x509 -in /PATH/FROM/CERT_FILE    -noout    -text|-subject|-serial

吊销证书

客户端获取要吊销的证书的serial

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

CA服务器端:

先根据客户端提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致:
            吊销证书:
                openssl    ca    -revoke    /etc/pki/CA/newcerts/SERIAL.pem
        生成吊销证书的编号(第一次吊销一个证书)
            echo 01 > /etc/pki/CA/crlnumber
        更新证书吊销列表
            openssl ca -genrsa -out thisca.crl
            查看crl文件:
                openssl crl -in /PATH/FROM/CERT_FILE_crl    -noout    -text

CA证书验证会话模型

在基于tcp/ip协议建立后,服务端会把ca证书发送给客户端,客户端得到证书后通过ca公钥进行解密ca签名,能解密证明该证书是可信任的、把解密出来的数据和重新计算出来的特征码对比对确保完整性、之后验证主机的名称和申请者名称是否相同,验证通过后客户端会取得服务器端公钥信息,客户端用公钥生成个一次性的对称加密密码发给服务器端。服务器端获取密码后加密网页数据发给客户端。

基于ssl协议和基于openssl工具创建私有CA相关推荐

  1. 网络通信中的加密解密及openssl和创建私有CA详解

    本文大纲: 1.为什么网络通信要进行数据加密? 2.数据加密方式有哪些?它们是如何进行加密的? 3.通信中是如何进行数据加密传输的? 4.https方式进行数据传输的具体流程 5.SSL 的实现工具O ...

  2. 电脑ssl协议 linux,基于ssl协议和openssl工具建立私有CA

    前言 要自建CA需先了解openssl工具和ssl协议还有各加密类型 ssl(Secure Socket Layer)安全套接字层当前版本为3.0,浏览器与Web服务器之间的身份认证和加密数据传输,它 ...

  3. OpenSSL 使用openssl工具搭建私有CA

    SSL(安全套接层)是为网络通讯提供安全及数据完整性的一种安全协议,TLS(SSL的继承版本)与SSL在传输层对网络连接进行加密. SSL用以保障在数据传输的安全利用数据加密技术,可确保数据在网络上之 ...

  4. ssl协议,openssl,创建私有CA

    SSL是Security Socket Layer:安全的套接字层 他介于HTTP和TCP协议层之间 SSL是Netscape公司开发的,属于个人 TLS是标准委员会制定的 OpenSSL是SSL的开 ...

  5. MySQL基于SSL协议的主从复制

    数据对于大部分公司来说都是最重要的部分,而MySQL的服务器在同步数据时,默认是使用明文进行传输,所以接下来就来说说MySQL基于SSL协议进行密文传输数据的主从复制模式. 逻辑拓扑: 接下来的实验中 ...

  6. 【绿冰壶的脚本小屋】第二期:基于icmp协议开发简易ping工具

    [绿冰壶的脚本小屋]第二期:基于ICMP协议开发简易ping工具 任务目标:编写程序使用 ICMP 协议探测主机是否存活 任务要求: 1.理解ICMP协议的原理 2.实现代码,尽可能多的实现探测主机是 ...

  7. openssl工具的使用以及创建私有CA

    openssl软件包在安装之后,主要会生成三段重要内容:加密库 ssl相关库文件 openssl命令行工具 下面就来介绍一下openssl命令行工具的使用: openssl和yum类似,有着许许多多的 ...

  8. linux加密解密基础、PKI及SSL、创建私有CA

    linux加密解密基础.PKI及SSL.创建私有CA 1.加密解密基础:            数据在网络中传输过程中要保证三个要点: (1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡 ...

  9. 加密解密技术基础及用OpenSSL创建私有CA

    1.加密解密技术基础 (1)进程通信 传输层协议有TCP,UDP,SCTP等,端口号port表示进程地址,进程向内核注册独占使用某端口. 同一主机上的进程间通信方式:进程间通信(IPC), 消息队列( ...

最新文章

  1. 百度DisConf分布式配置框架源码试读(一)HttpClient 长连接
  2. node中模块、AMD与CMD、ES6模块,node中使用ES6
  3. 亿级别记录的mongodb分页查询java代码实现
  4. HugeGraph图数据库获Apache TinkerPop官方认证
  5. 关于《在Windows与.NET平台上的持续交付实践》的问答录
  6. 【模拟】游戏(jzoj 1614)
  7. 常见问题_智能切膜机常见问题
  8. 【一些简单的jQuery选择器】
  9. 什么是云原生,跟云计算有什么关系?终于有人讲明白了
  10. 支持javascript的博客汇总
  11. c 函数 字符串 find_如何在C ++中使用字符串find()
  12. java 获取当前时间并转化为yyyy-MM-dd HH:mm:ss格式(性程安全模式与不安全)
  13. 10行代码搞定移动web端自定义tap事件
  14. (MSSQL)sp_refreshview刷新视图失败及更新Table字段失败的问题解决
  15. Java Web——基于Servlet、JSP(无框架版)电影网站项目总结(一)
  16. 计算机导入文件格式,电脑如何打开zip格式文件|电脑打开zip格式文件的方法
  17. 小猪的Python学习之旅 —— 3.正则表达式
  18. iOS开发之--内购、GameCenter、iCloud、Passbook功能开发汇总
  19. 嵌入式物联网系统软硬件基础知识大全
  20. 工作记录(JS向textarea添加固定内容、通过固定字符将字符串分割为数组)

热门文章

  1. 20考研数一137分考研数学经验分享
  2. Docker安装chemexIT资产管理系统
  3. 【聚类算法】MiniBatchKMeans算法
  4. MT7688的openwrt下4G的移植
  5. 教你给大量视频快速调整色调的方法
  6. 【第三方登录】第三方登录 Part1 —— QQ登录(2016-09最新版)
  7. vue 百度地图获取经纬度地址
  8. excel表格怎么调整行高和列宽_同事看呆!文档怎么打印在一页上?这招超简单!...
  9. 通过身份证号得到年龄、性别和出生日期
  10. 安装apache出错