前言

要自建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:

服务器端:

生成密钥

自签证书

初始化工作环境

节点:

生成密钥对儿

生成证书签署请求

把请求发送给CA

CA服务器:

验正请求者信息:自建CA无需该步骤

签署证书

把签好的证书发送给请求者

服务器端自建CA

生成密钥:

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

自签证书:

req: 生成证书签署请求

-news: 新请求

-key /path/to/keyfile: 指定私钥文件

-out /path/to/somefile:输出文件到那里

-x509: 生成自签署证书

-days n: 有效天数

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

详细记录证书创建时所填信息如不一致签署将失败。建议修改openssl.conf文件发给每个申请节点

初始化工作环境:

touch /etc/pki/CA/{index.txt,serial}:创建相关文件

echo 01 > /etc/pki/CA/serial。只需第一次创建序列号

节点申请证书:

生成密钥:

(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)

生成证书签署请求:

openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr

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

CA服务器签署证书:签署证书:

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

发送给请求者:

CA证书验证会话模型

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

以上为建立CA大致流程,如有遗漏请告知。

原创文章,作者:xiangjin1,如若转载,请注明出处:http://www.178linux.com/3991

电脑ssl协议 linux,基于ssl协议和openssl工具建立私有CA相关推荐

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

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

  2. php-ews发送邮件,node.js 基于 STMP 协议和 EWS 协议发送邮件

    本文主要介绍 node.js 发送基于 STMP 协议和 MS Exchange Web Service(EWS) 协议的邮件的方法.文中所有参考代码均以 TypeScript 编码示例. 1 基于 ...

  3. SSL协议解析及SSL虚拟专用网

    参考博客地址 目录 第一部分:SSL协议解析 一.SSL简介 二.SSL协议介绍 三.SSL协议应用 四.SSL协议特点 五.SSL协议结构分析 六.SSL连接建立过程(握手过程) 七.几个重要的se ...

  4. tcp/ip协议详解——HTTP协议和POP3协议SSL加密协议

    http协议有两大特点: 1.哑服务:在链接进行之后,服务器不提示任何信息,所有命令需要客户端发出,服务器做出反应. 2.瞬时协议:客户端对服务器发出命令之后,服务器立刻做出反应,传输超文本,tcp链 ...

  5. 什么是rip协议其优缺点_OSPF协议和RIP协议

    0x00:前言 一题目:OSPF协议和RIP协议的区别,没复习到(/(ㄒoㄒ)/~~) 0x01:RIP协议 RIP(Routing Information Protocol),路由信息协议 RIP是 ...

  6. 服务器端配置的ssl协议版本,客户端ssl协议

    客户端ssl协议 ssl协议  时间:2021-02-24  阅读:() i目录1SSL·1-11. 1SSL简介1-11. 1. 1SSL安全机制1-11. 1. 2SSL协议结构1-11. 2SS ...

  7. 服务器 ssl协议怎么开启,SSL协议是什么?SSL未开启如何解决?

    本文给大家介绍一下著名的网络安全协议SSL,如果有需要的朋友可以参考学习,希望以下的分享对您的学习有所帮助. 安全套接字协议(Secure Socket Layer,SSL)是web浏览器与Web服务 ...

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

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

  9. nginx服务器配置ssl协议,国密SSL协议之Nginx集成

    1 背景 Nginx自身支持标准的SSL协议,但并不支持国密SSL协议.本文描述了Nginx配置的国密SSL协议(单向)的完整过程,仅供学习和参考之用. 特点:Nginx 无需改动源码.支持任意版本. ...

最新文章

  1. php禁止网页抓取,服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站 - 龙笑天下...
  2. python学习之第三课时--基本数据类型及区别,变量
  3. 基于PSR-0编码规范开发一套PHP-MVC框架(一)
  4. 高并发解决方案_高并发提交订单的解决方案
  5. linux 使用systemctl 设置java进程开机启动,管理springboot开机进程
  6. 懒人版黑苹果mbr安装_MBR和GPT的区别,选择适合自己的
  7. 【kafka】Kafka Producer Sticky Partitioner kafka 生产者 粘性 分区器
  8. 【备忘】【No37】LAMP兄弟连李明老师讲Linux
  9. python关键词排名批量查排名_[代码全屏查看]-Python 批量获取Baidu关键词的排名并入库...
  10. C语言 —— 数组(数组的声明、初始化、访问)与字符串指针
  11. php表格链接地址,wps表格如何制作目录及超链接?
  12. 洛谷P1053 篝火晚会
  13. [AFCTF2018]花开藏宝地
  14. html 去掉html超链接下划线
  15. java实现剩余年假计算_通过参加工作日期计算出年假
  16. 微信端视频播放防被浏览器劫持
  17. WordPress批量添加、修改、删除自定义字段的sql命令
  18. 培养下属的12条黄金法则
  19. Windows下用某品牌随身WiFi搭建一个钓鱼热点
  20. 开源视频、音频截取软件

热门文章

  1. python高频面试题_02-27 朴素贝叶斯
  2. 公关战之下,分裂的今日头条
  3. win7共享打印机设置
  4. http服务器究竟做了什么(一)
  5. 13,12_基本运算,add/minus/multiply/divide,矩阵相乘mm,matmul,pow/sqrt/rsqrt,exp/log近似值,统计属性,mean,sum,min,max
  6. C语言如何求出一堆整数的最大值
  7. Linux基础之vim
  8. 中文实时语音识别引擎
  9. c语言作文的题目_C语言入门题
  10. 《HelloGitHub》第 60 期,你喜欢玩游戏吗?