一、安全协议
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