电脑ssl协议 linux,基于ssl协议和openssl工具建立私有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:
服务器端:
生成密钥
自签证书
初始化工作环境
节点:
生成密钥对儿
生成证书签署请求
把请求发送给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相关推荐
- 基于ssl协议和基于openssl工具创建私有CA
目录 前言 加密类型 对称加密: 公钥加密: 单项加密: ssl会话模型 openssl工具 建立私有CA: 服务器端自建CA ...
- php-ews发送邮件,node.js 基于 STMP 协议和 EWS 协议发送邮件
本文主要介绍 node.js 发送基于 STMP 协议和 MS Exchange Web Service(EWS) 协议的邮件的方法.文中所有参考代码均以 TypeScript 编码示例. 1 基于 ...
- SSL协议解析及SSL虚拟专用网
参考博客地址 目录 第一部分:SSL协议解析 一.SSL简介 二.SSL协议介绍 三.SSL协议应用 四.SSL协议特点 五.SSL协议结构分析 六.SSL连接建立过程(握手过程) 七.几个重要的se ...
- tcp/ip协议详解——HTTP协议和POP3协议SSL加密协议
http协议有两大特点: 1.哑服务:在链接进行之后,服务器不提示任何信息,所有命令需要客户端发出,服务器做出反应. 2.瞬时协议:客户端对服务器发出命令之后,服务器立刻做出反应,传输超文本,tcp链 ...
- 什么是rip协议其优缺点_OSPF协议和RIP协议
0x00:前言 一题目:OSPF协议和RIP协议的区别,没复习到(/(ㄒoㄒ)/~~) 0x01:RIP协议 RIP(Routing Information Protocol),路由信息协议 RIP是 ...
- 服务器端配置的ssl协议版本,客户端ssl协议
客户端ssl协议 ssl协议 时间:2021-02-24 阅读:() i目录1SSL·1-11. 1SSL简介1-11. 1. 1SSL安全机制1-11. 1. 2SSL协议结构1-11. 2SS ...
- 服务器 ssl协议怎么开启,SSL协议是什么?SSL未开启如何解决?
本文给大家介绍一下著名的网络安全协议SSL,如果有需要的朋友可以参考学习,希望以下的分享对您的学习有所帮助. 安全套接字协议(Secure Socket Layer,SSL)是web浏览器与Web服务 ...
- ssl协议,openssl,创建私有CA
SSL是Security Socket Layer:安全的套接字层 他介于HTTP和TCP协议层之间 SSL是Netscape公司开发的,属于个人 TLS是标准委员会制定的 OpenSSL是SSL的开 ...
- nginx服务器配置ssl协议,国密SSL协议之Nginx集成
1 背景 Nginx自身支持标准的SSL协议,但并不支持国密SSL协议.本文描述了Nginx配置的国密SSL协议(单向)的完整过程,仅供学习和参考之用. 特点:Nginx 无需改动源码.支持任意版本. ...
最新文章
- php禁止网页抓取,服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站 - 龙笑天下...
- python学习之第三课时--基本数据类型及区别,变量
- 基于PSR-0编码规范开发一套PHP-MVC框架(一)
- 高并发解决方案_高并发提交订单的解决方案
- linux 使用systemctl 设置java进程开机启动,管理springboot开机进程
- 懒人版黑苹果mbr安装_MBR和GPT的区别,选择适合自己的
- 【kafka】Kafka Producer Sticky Partitioner kafka 生产者 粘性 分区器
- 【备忘】【No37】LAMP兄弟连李明老师讲Linux
- python关键词排名批量查排名_[代码全屏查看]-Python 批量获取Baidu关键词的排名并入库...
- C语言 —— 数组(数组的声明、初始化、访问)与字符串指针
- php表格链接地址,wps表格如何制作目录及超链接?
- 洛谷P1053 篝火晚会
- [AFCTF2018]花开藏宝地
- html 去掉html超链接下划线
- java实现剩余年假计算_通过参加工作日期计算出年假
- 微信端视频播放防被浏览器劫持
- WordPress批量添加、修改、删除自定义字段的sql命令
- 培养下属的12条黄金法则
- Windows下用某品牌随身WiFi搭建一个钓鱼热点
- 开源视频、音频截取软件
热门文章
- python高频面试题_02-27 朴素贝叶斯
- 公关战之下,分裂的今日头条
- win7共享打印机设置
- http服务器究竟做了什么(一)
- 13,12_基本运算,add/minus/multiply/divide,矩阵相乘mm,matmul,pow/sqrt/rsqrt,exp/log近似值,统计属性,mean,sum,min,max
- C语言如何求出一堆整数的最大值
- Linux基础之vim
- 中文实时语音识别引擎
- c语言作文的题目_C语言入门题
- 《HelloGitHub》第 60 期,你喜欢玩游戏吗?