内容简介:SSL: Secure Socket LayerTLS: Transport Layer Security握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。
一、安全协议
SSL: Secure Socket Layer 安全套阶层协议
TLS: Transport Layer Security 安全 传输 层 协议,SSL改名TLS,一个东西,可通称
1995:SSL 2.0 Netscape 1.0不普及 1996: SSL 3.0 1999: TLS 1.0 2006: TLS 1.1 IETF(Internet工程任务组) RFC 4346 2008:TLS 1.2 当前使用 最普遍 2015: TLS 1.3
- 功能:机密性,认证,完整性,重放保护 (防重放,第一次有效第二次失效)
- 两阶段协议,分为握手阶段和应用阶段
握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。
应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信
SSL/TLS
Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换
ChangeCipherSpec 协议:一条消息表明握手协议已经完成
Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告
Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等
HTTPS 协议:就是“ HTTP 协议 ”和“ SSL/TLS 协议 ”的组合。HTTP over SSL”或“HTTP over TLS”,对http协议的文本数据进行加密处理后,成为二进制形式传输 用的最多
二、SSL协议的开源实现:OpenSSL
三个组件:
openssl: 多用途的命令行工具,包openssl libcrypto: 加密算法库,包openssl-libs libssl:加密模块应用库,实现了ssl及tls,包nss
openssl命令:
两种运行模式: 交互模式 和 批处理模式
openssl version:程序版本号
命令大致分为三类:
标准命令:子命令 enc, ca, req, …
消息摘要命令:子命令 dgst …
加密命令:子命令 enc …
查看更多子命令 openssl ?
1、对称加密:
工具:openssl enc, gpg
算法:3des, aes, blowfish, twofish
enc命令:
帮助: man enc
加密: openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
解密: openssl enc -d -des3 -a -salt -in testfile.cipher -out testfile 生成新文件
-e 表示加密
-d 表示解密
-in /PATH/TO/FILE 要加密的文件
-out /PATH/TO/FILE 加密后生成新文件;不加这个选项就只有标准输出,不生成文件
-pass STRING 表示对称加密的秘钥是什么
-a|-base64 表示以base64文本格式进行编码 (大小写字母 / 及 + 的表现形式,不够六位用=补足)
-salt 加杂质使乱码
2、单向加密:
工具:md5sum,sha1sum,sha224sum,sha256sum…
openssl dgst
dgst命令:
帮助: man dgst
openssl dgst -md5 [-hex默认] /PATH/SOMEFILE
openssl dgst -md5 testfile
md5sum testfile 结果同上,格式不一样
生成用户密码: passwd命令
帮助: man sslpasswd
openssl passwd -1 不指定salt,则随机生成
openssl passwd -1 -salt SALT(最多8位) 指定salt
openssl passwd -1 –salt centos 指定盐,则同样的密码加密后生成同样的字符串
生成随机数: rand命令
帮助: man sslrand
openssl rand -base64|-hex NUM
NUM: 表示字节数;-hex时,每个字符为十六进制,相当于4位二进制,出现的字符数为 NUM*2
注:-base64 二进制的六位,指定数字NUM若不是3的倍数,会用=补足
如下图:
随机数生成器:伪随机数字
键盘和鼠标,块设备中断
/dev/random:仅从熵池返回随机数;随机数用尽,阻塞
/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞
3、生成密钥对
生成密钥对儿: man genrsa
生成私钥
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
或 (umask 077; openssl genrsa -out test.key -des 2048)
生成私钥文件,并设定权限及加密私钥,小括号开启子进程,不改变父进程的umask值
将加密key解密并生成文件
openssl rsa -in test.key -out test2.key
从私钥中提取出公钥
openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
例:openssl rsa –in test.key –pubout –out test.key.pub
公钥加密:
算法:RSA, ELGamal
工具:gpg,openssl rsautl( man rsautl )
数字签名:
算法:RSA, DSA, ELGamal
密钥交换:
算法:dh
DSA: Digital Signature Algorithm
DSS:Digital Signature Standard
RSA:
三、创建CA和申请证书
创建私有CA:
openssl的配置文件: /etc/pki/tls/openssl.cnf 其中定义了openssl完成CA工作时的相关属性定义
三种策略:
匹配match:要求申请填写的信息跟CA设置信息 必须一致
支持supplied:必须填写这项申请信息
可选optional:可有可无
1、创建所需要的文件 (服务器端) 掌握!!!
touch /etc/pki/CA/index.txt 生成证书索引数据库文件,内容可为空, 但必须有 ,否则会报错
echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号 没有会报错,十六进制数
2、 CA自签证书 (服务器端) 掌握!!!
生成私钥
cd /etc/pki/CA/ 后续创建的文件夹和目录都要求在此目录下
(umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 目录及文件名定死了
生成自签名证书
openssl req -new -x509 – key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
-x509表示自签名,没有表示申请,签名证书路径名称定死 交互式命令
直接cat /etc/pki/CA/cacert.pem base64编码看不懂
-new:生成新证书签署请求
-x509:专用于CA生成自签证书
-key:生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保存路径
3、颁发证书 掌握!!!
在需要使用证书的主机生成证书请求
给web服务器生成私钥 (客户端)
(umask 066; openssl genrsa -out /etc/pki/tls/private/ test.key 2048) 路径和名字没规定
生成证书申请文件 (客户端)
openssl req -new -key /etc/pki/tls/private/test.key -out / etc/pki/tls/test.csr 交互式命令
-days 365这里不写,有效期由颁发者决定
将证书请求文件传输给CA (客户端)
scp / etc/pki/tls/test.csr IP:/PATH/TO
CA签署证书,并将证书颁发给请求者 (服务器端)
openssl ca -in /tmp/test.csr – out /etc/pki/CA/certs/ test.crt -days 365 目录定死,有效期默认一年
注意:默认国家,省,公司名称三项必须和CA一致,若想不一致可以更改配置文件设定
查看证书中的信息: (服务器端)
openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates
参数:Text格式查看、单看颁发人、单看颁发对象、单看编号、单看有效期
查看指定编号的证书状态 (服务器端)
openssl ca -status SERIAL
补充: cat /etc/pki/CA/index.txt 查看所有证书 行首带V表示有效,吊销R
或者传入Windows电脑,改后缀为.crt或 .cer才会变证书图标,即可查看
安装证书:双击证书图标,安装过程中要出现安全警告才正确!在控制面板-Internet选项-内容查看
4、吊销证书 (了解)
在客户端获取要吊销的证书的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 -gencrl -out /etc/pki/CA/crl.pem
查看crl文件:
openssl crl -in /etc/pki/CA/crl.pem -noout -text
本文来自投稿,不代表 Linux 运维部落立场,如若转载,请注明出处:http://www.178linux.com/99795
以上所述就是小编给大家介绍的《Linux安全和加解密(二)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- APICloud解密本地资源到逆向APP算法到通用资源解密
- NodeJS加密解密,node-rsa加密解密用法
- CMSEasy企业建站源代码解密工具,适用于纯本地解密机制!
- 如何解密keystore文件
- 解密 Runloop
- 加解密详解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Rework
Jason Fried、David Heinemeier Hansson / Crown Business / 2010-3-9 / USD 22.00
"Jason Fried and David Hansson follow their own advice in REWORK, laying bare the surprising philosophies at the core of 37signals' success and inspiring us to put them into practice. There's no jarg......一起来看看 《Rework》 这本书的介绍吧!