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 enc -d

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

例给fstab解密
单向加密:openssl  dgst

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

openssl dgst -md5 testfile

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

opensslrand -base64|-hex NUM

NUM: 表示字节数;-hex时,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2
生成随机字符取出其中的8位字母或数字用作口令,8位长度的随机口令

非对称加密:

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

 生成私钥://指定私钥生成的文件是什么,位数是多少为了安全加一个600的权限。
生成私钥命令如下图所示:          
对私钥加密如下图所示:

#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 ]

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是必须匹配的

搭建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.在应用软件中使用证书

OpenSSL 使用openssl工具搭建私有CA相关推荐

  1. openssl搭建私有CA

    数据加密.CA.OpenSSL SSL security socket layer,安全套接字层 openssl (软件) 加密算法和协议: 对称加密:加密和解密使用同一密钥:(依赖于算法和密钥,其安 ...

  2. Openssl搭建私有CA认证

    概述 CA英文全称Certification Authority,即数字证书认机构.从广义上来说,CA是负责发放和管理数字证书的权威机构,并作为用户数字认证中受信任的第三方,承担公钥体系(PKI)中公 ...

  3. 基于ssl协议和基于openssl工具创建私有CA

    目录 前言 加密类型           对称加密:           公钥加密:           单项加密: ssl会话模型 openssl工具 建立私有CA: 服务器端自建CA        ...

  4. Centos7中创建RSA非对称密钥对及搭建私有CA并为客户端颁发证书

    Centos7中创建RSA非对称密钥对及搭建私有CA并为客户端颁发证书 1.在centos7中使用gpg创建RSA非对称密钥对 [13:32:55 root@centos7 data]#gpg --g ...

  5. Linux实现搭建私有CA服务器和证书申请颁发吊销

    利用Openssl搭建私有CA 目标是为了向内网用户颁发证书,方便内部用户得到彼此的公钥 搭CA服务器实际表现为准备好相关的文件 第一步:创建CA对应的文件夹 CentOS 7中已存在CA内容的对应文 ...

  6. linux搭建ca服务器搭建,linux下安装EJBCA 搭建私有CA服务器

    linux下安装EJBCA 搭建私有CA服务器 EJBCA是一个全功能的JAVA的CA系统软件,我们可以用此搭建私有CA服务器: 一:首先我的测试环境: 1.  linux mint18.3 62位: ...

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

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

  8. Openssl加密文件及创建私有CA及证书

    # cat /etc/redhat-release CentOS release 6.6 (Final) # uname -r 2.6.32-504.el6.x86_64 首先我们先演示加密文件的方式 ...

  9. Linux下Oenssl命令及搭建私有CA

    一.Openssl常用命令: # openssl ? # 查看openssl的命令及子命令# man enc # 可以直接查看子命令帮助 加密: # openssl enc -des3 -e -sal ...

最新文章

  1. 判断 std map 中是否有 key
  2. 孩子学计算机最佳年龄,孩子学编程最佳年龄是几岁
  3. discuz加密解密,可参考下
  4. RTT的IPC机制篇——邮箱
  5. 乐视网:公司董事、总经理、财务总监张巍因个人原因辞职
  6. 面试—每日一题(8)
  7. android之Uniapp之Weex之module开发
  8. java基础之输入语句
  9. 前端用户体验提升系列(一)最常见的用户体验指标和提升方式
  10. 微软疑断自由软件开发者“活路”,禁止在微软商店发布商业开源
  11. urule决策引擎实现增量打包部署
  12. 信号量机制实现进程的互斥、同步、前驱
  13. trans系列是sci几区_怎么确定SCI是几区的?
  14. 阿里CEO张勇:“亲亲节”预示未来年轻人生活方式
  15. 【Word】公式“大括号”中的内容对齐
  16. 合并带附件的电子邮件
  17. Maven报错Original error: Could not transfer artifact
  18. Python的生成器函数
  19. NC65 添加客户档案 实战案例
  20. 过拟合解决方案 —— early stopping

热门文章

  1. 设计原则 单一职责原则、开放封闭原则、依赖倒置原则、里氏代换原则、迪米特法则
  2. omnet++ 第一个工程的创建
  3. 复旦大学计算机应用复试线,2019年复旦大学考研复试分数线已出现
  4. LDIFDE试验全记录
  5. React Native开发环境配置检测
  6. c++上三角矩阵求和
  7. 庖丁解牛-图解MySQL 8.0优化器查询转换篇
  8. 【rabbitMQ】真就一篇就够!!
  9. CodeForces - 1436D Bandit in a City
  10. mysql 调用方差函数_mysql 函数大全