加密类型及CA创建

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_43058911/article/details/102518162

对称加密算法:

对称加密:加密和解密使用同一个密钥
	DES:data encryption standard ,56bit,7位
	3DES
	AES:advanced encryption standard	(128,256,512bit)
	Blowfish,Twofish:商业
	IDEA,RC6,CAST5

特性:加密解密使用同一密钥,效率高
	  将原始数据分割成固定大小的块,逐个进行加密
缺陷:
	密钥过多,每个人都使用不同密钥
	密钥分发,哪个密钥分给哪个人
	数据来源无法确认

非对称加密算法

公钥加密:密钥是成对出现
	公钥:公开给所有人,public key
	私钥:只有自己拥有,必须要保证私钥的秘密性,private key
特点:用公钥加密数据,只能使用与之配对的私钥解密,反之亦然
功能:
	数字签名:主要在于让接收方确认发送方身份
	对称密钥交换:发送方用对方的公钥加加密一个对称密钥后发送给对方
	数据加密:适合加密较小数据
缺点:密钥过长,加密解密效率低下
算法:
	rsa:数据加 密,数字签名
	dsa:数字签名
	ELGamal

单向散列(hash算法)

只能加密,没有解密
将任意数据缩小成固定的"摘要","指纹"
	任意长度输入
	固定长度输出
	若修改数据,指纹也会改变(不会产生冲突)
	无法从指纹中重新生成数据(单向的)
功能:数据完整性检查
不论什么数据。不论数据的大小,只要用的算法相同,那么输出长度必定相同
只要数据不同,摘要完全不同,哪怕数据之间只相差一个空格字符
常用于对比数据,数据是否被修改过,数据相同,摘要必定相同

常见算法:
	md5:128bit,sha1:160bit,sha224,sha256,sha384,sha512
相应工具:
	md5sum,sha1sum,sha224sum,sha256sum,sha384sum,sha512sum

	md5sum filename > filename.hash:对文件生成摘要并保存至hash日志,单个文件
	md5sum -c filename.hash :检查原文件是否数据被修改过
	
	md5sum filename1 filename2 ... >> filename.hash	:对多个文件生成摘要保存至文件中
	md5sum -c filename.hash	:可以同时对多个文件进行检查

文件完整性的两种实施方式
	被安装的文件
		md5单向hash
		rpm -V package-name
		例:修改文件内容查看hash
			rpm -qf /etc/issue
				centos-release-7-6.1810.2.el7.centos.x86_64
			rpm -V centos-release
				missing   c /etc/yum.repos.d/CentOS-Base.repo
				missing   c /etc/yum.repos.d/CentOS-CR.repo
			echo 1 >> /etc/issue
			rpm -V centos-release
				..5....T.  c /etc/issue	:5就表示md5,说明文件内容变了,T表示文件的时间变了
				missing   c /etc/yum.repos.d/CentOS-Base.repo
				missing   c /etc/yum.repos.d/CentOS-CR.repo
			然后将追加的1删掉。再次比较
			rpm -V centos-release
				.......T.  c /etc/issue	:文件内容恢复。但是时间改变了
				missing   c /etc/yum.repos.d/CentOS-Base.repo
				missing   c /etc/yum.repos.d/CentOS-CR.repo

	发行的软件包文件
		GPG公钥签名
		rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
		rpm -K tree-1.6.0-10.el7.x86_64.rpm
		
		如果不导入公钥,系统提示没有公钥,不能检查,如果有问题提示NOT OK

CA和证书

	PKI
		签证机构:CA,颁发证书和吊销证书的机构
		注册机构:RA,接收用户申请的机构
		证书吊销列表:CRL,公布出来,说明哪些证书已经不受信任
		证书存取库
	X.509:定义了证书的结构以及认证协议标准
		版本号、序列号、签名算法、颁发者、有效期限、主题名称
		主体公钥、CRL分发点、扩展信息、发行者签名**

SSL:secure socket layer,TLS:transport layer security

	1995:ssl 2.0
	1996:ssl 3.0
	1999:tls 1.0
	2006:tls 1.1
	2008:tls 1.2	当前使用
	2015:tls 1.3
	功能:机密性,认证,完整性,重放保护
两段性协议,分为握手阶段和应用阶段
	握手阶段:客户端和服务端认证对方身份,依赖于PKI体系,利用数字证书进行身份认证,并写上通信中使用的安全参数,密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成
	应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信
ssl/tls协议在应用层与传输层之间

https协议:就是http和ssl的组合,对http协议的文本数据进行加密处理后在进行传输
https的底层工作原理:
	客户端:客户端请求一个网站域名
	服务端:服务端收到将自己申请的CA证书发送给客户端,其中包括公钥等信息
	客户端:收到检查服务端证书是否合法,如果合法,生成随机的key,将来的会话密钥(对称密钥)。如果不合法,提示错误网站不安全
			用服务端的公钥将生成的key加密,然后发送给服务端
	服务端:用自己的私钥解密,拿到key,传送数据时使用这个key,随后的数据都使用这个key加密。

OpenSSL:开源项目

三个组件:
	openssl:多用途的命令行工具,来自openssl软件包
	libcrypto:加密算法库,来自openssl-libs包
	libssl:加密模块实用库,实现了ssl及tls,来自nss包
openssl命令
	两种模式:交互式和批处理模式
	openssl ?	:查看子命令
	对称加密:
		工具:openssl,enc,gpg
		算法:3des,aes
	enc命令“
		man enc
		加密:
			openssl enc -e -des3 -in test_file -out test_file.des3
			回车后两遍输入密码
		解密:
			openssl enc -d -des3 -in test_file.des3 -out test_file
			回车后输入密码

生成随机数:
	man sslrand
	openssl rand -base64 num
	openssl rand -hex num
	
非对称密钥:
成密钥对儿:man genrsa
生成密钥:
	openssl genrsa -out /path/to/privatekey.file num.bit
	例:(umask 066;openssl genrsa -out test.key -des 2048)	:-des可省略,也可以是-des3,aes
		(umask 066;openssl genrsa -out test.key)	:不加密私钥
	将加密后的密钥解密:
		openssl rsa -in test.key -out test2.key
	另一种方式:
		cd /etc/pki/tls/certs	:进入到目录
		make /data/test.key		:指定密钥存放路径,make命令会自动调用目录下一个Makefile的文件中的命令。默认是加密的
	
	从私钥中提取公钥“
		openssl rsa -in privatekey.file -pubout -out publickey.file
		例:
			openssl rsa in test.key -pubout -out test.key.pub
	随机数生成器:伪随机数字
		键盘和鼠标,块设备中断
		/dev/random:仅从熵池返回随机数;随机数用尽,阻塞等待新的随机数生成
		/dev/urandom:从熵池中返回随机数,随机数用尽后,利用软件生成,不阻塞

CA服务器端创建CA和申请证书

	openssl的配置文件:/etc/pki/tls/openssl.cnf
		配置文件中有对应的语句块,定义默认CA,也可以添加CA,CA的默认设置
	文件中关于CA的选项策略,搭建CA时需要指定的信息(国家,城市,公司等等)
		match:要求申请填写的信息和CA设置信息必须一致
		optional:可有可无,和CA设置信息可不一致
		supplied:必须填写这项申请信息
		将来客户端申请填写时要注意以上字段,需要填写一致,否则报错
	1、创建所需要的文件
		touch /etc/pki/CA/index.txt	:生成证书索引数据库文件
		echo 01 > /etc/pki/CA/serial:指定第一个颁发证书的序列号
	2、CA自签证书
		生成私钥
		cd /etc/pki/CA/	
		(umask 066;openssl genrsa -out private/cakey.pem 2048)	:安全
	3、生成自签名证书:
		openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem
		回车后输入CA的信息,地区(两个字符,例CN),公司,CA的域名,邮箱(可选项)
		选项说明:
			-new:生成新证书签署请求
			-x509:专用于CA生成自签证书
			-key:生成请求时用到的私钥文件
			-days n:证书的有效期限
			-out /path/to/file:证书的保存路径
客户端创建私钥申请证书:
	1、创建私钥
		(umask 066;openssl genrsa -out http.key 1024)
	2、利用私钥生成证书申请
		openssl req -new -key /data/http.key -out /data/http.csr
			回车后输入相关信息,默认国家,城市,和公司这三项必须填写一样。部门是自定义的,主机名也是自定以,输入将来你要作为域名的那个名字。
	3、将生成的申请发送到CA服务器
		scp http.csr 服务器IP:/tmp/
服务端CA签署证书,并将证书颁发给请求者
	1、生成证书
		openssl ca -in /tmp/http.csr -out /etc/pki/CA/certs/http.crt -days 365
			回车后输入信息,默认要求国家,省,公司三项必须和CA一致
	2、将证书版发给请求者客户端
		scp /etc/pki/CA/certs/http.crt 客户端IP:/data/
至此证书申请完毕,使用证书是应用软件中实现,在软件例如httpd中添加此证书的路径就可以用了
	
查看证书中的信息
	openssl x509 -in /path/to/file.crt -noout -test|issuer|subject|serial|dates
		例:openssl x509 -in /data/http.crt -noout -text
	openssl ca -status SERIAL	:查看指定编号的证书状态

猜你喜欢

转载自blog.csdn.net/qq_43058911/article/details/102518162