openssl创建私有CA

                          浅谈数据加密

A—>b:(ftp,http,smtp,telnet)
明文传输
不能保证数据完整性
不能进行身份验证
机密性:
plaintest–>转换规则–>ciphertext
ciphertext–>转换规则–>plaintest
所以我们需要一种方案来确保我们的信息安全。这就是我们的密钥。
转换算法:密钥
对称加密:加密和解密使用相同的密钥
优点:加密速度块
缺点:安全性低,不能保证数据的完整性
举个例子来说:
A女和B男异地恋,它们之间进行正常通信,但是A的前男友C截获了A跟B发的信息,并且篡改了其中的数据,使得他们产生矛盾,此时B不知道他收到的数据其实是C篡改过的,所以这种数据传输是不安全的,所以在现实生活中我们决不能让这种事情发生。这便是明文传输,类似于明信片之间的传输,任何人都可以查看。这种传输当然是不可靠的。所以A在发给B的时候会给数据上进行加密处理,两个人都有其中的对应规则,来进行破解和加密数据,,但是相应的密码规则该如何传输呢,如果密码规则在传输过程中被C截获,然后他就可以冒充A或B来进行通信。
单项加密算法:提取数据特征码。footprint
加密特点:
输入一样,输出必然相同。
雪崩效应(或称蝴蝶效应)输入晓得wewixiaogaibian,将会引起结果的巨大改变。
定长输出:无论原始数据十多长,骑术局的特征码位数相同,
过程不可逆:因为使用了复杂的加密算法。无法根据特征码还原原来的数据
此时的数据完整性很高,但是不能进行身份验证,回到上面得例子,A用单项加密的数据发送给B,此事的数据包括明文和特征码,B将明文执行同样的算法加密,也可以得到相应的特征码,与数据后的特征码进行比对,如果相同,则说明数据未被更改,如果特征码不同,则说明数据被更改过,数据无效,但是此时会出现man in middle(中间人攻击)中间人会篡改数据和特征码,即C将A发送的数据进行截获后,重新编辑了一份数据也用加密算法发给B,此时B用数据加密的特征码于数据携带的特征码比对当然是相同的,但是他不知道这份数据完全是C伪造的。
所以单项加密虽然能保证数据的完整性,但不能进行身份验证。这种加密方法通常在各种网站下载文件下附带特征码
那么如何保证中间人不能进行更改数据或者当期它用户更改数据后可以发现数据被更改。
可以将特征码进行加密,并设置约定的密码
但是,对于素为谋面的人如何约定密码呢?
协商生成密钥,进行密钥交换,需要互联网协议支撑支撑。这就是互联网密钥交换(internet key exchange IKE)
基本协议是Diffie-hellman协议
A–>B p,g(大素数,生成数) 运用离散对数原理
A:在A的主机上升成一个随机数X,A:g^X%p –>B A:(gY%p)X=g^YX%p
B:在B的主机上升成一个随机数X,B:g^Y%p –>A B:(gX%p)Y=g^XY%p
A将g的x次方对大素数P取余,得到的数字发送给B,B将收到的数字在进行Y次方,
B将g的y次方对大素数P取余,得到的数字发送给A,A将收到的数字在进行x次方,
此时AB得到的数据是相同的,而其他用户只看到p,g,gX%p,gY%p,不能推出xy的值
公钥加密算法:非对称加密算法
密钥对: 公钥可以从私钥中提取公钥P,私钥S 768位
发送方用自己的私钥加密数据,可以实现身份验证
发送方用对方的公钥加密数据,可以保证数据机密性,
但是加密算法很少用来加密数据,因为其速度过慢,但通常会用于身份验证
但是B如何将自己的公钥发送给A呢?如果被C抢先一步发送,冒名顶替了B,那么后果不堪设想
所以此时就需要一个机构来进行公钥验证及公布即发放证书CA,就像我们的身份证一样。
这个机构会发放一个证书,类似于网上银行的U盘盾,其实就是一张证书。
PKI:(public key infrastructure)
CA :(certificate authority)核心
比较流行的格式 x509 pkcs12
x509:
公钥及其过期时间(有限期限)
证书的合法拥有者
证书该如何被使用
CA的信息(机构名称,服务器地址)
使用CA的四要哪(签名校验码)
在意太web服务器上,我们都知道http的端口是80,https的端口是443,为什么相同的服务却端口不同呢,这时因为两者的的机制不同所以端口肯定也不同
在这里插入图片描述
对称加密:
DES:数据加密标准(Data EAncrption Standard)
3DES:3次数据加密
AES:Advanced Standard AES192 AES256 AES512
Blowfish :64bit
单向加密:
MD4 MD5 SHA1 SHA192 SHA256 SHA384
CRC32循环冗余校验码:只是一种校验码不提供任何安全机制,会发生撞车现象,
公钥加密:(加密和签名)两种核心功能
身份认证(数字签名)
数据加密
密钥交换
RSA:既是算法又是公司的名称,这种算法即可加密又可签名
DSA:只能实现签字
Elgamal:一种商业算法
在linux中的加密工具有:openssl、gpg、

openssl:ssl的开源实现
libcroto:通用加密哭,提供函数
libssl :TLS/SSL的实现(实现linux使用https)基于会话实现了身份认证、数据机密性和会话完整性的TLS/SSL库
openssl:多用途命令;inghanggongju,实现私有私有证书办法机构。

openssl version

在这里插入图片描述
speed 速度测试
enc -des3 使用des3加密

openssl enc -des3 -salt -a -in inittab -out inittab.des3

enc -des3 -d 使用des3解密

openssl enc -des3 -d -salt -a -in inittab.des3 -out inittab

计算inittab的特征码 128位

smd5sum inittab
halsum inittab

进行模拟一个私有的证书签发机构

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

在这里插入图片描述
在这里插入图片描述
解释:()的作用是再不打开子shellde 的前提下在父shell中对子shell的umask定义为077,即600权限,
此处为生成密钥

openssl -req -new -x509 -key private/cakey.pem -out cacert.pem

此处卫生成新自签证书,并提示进行填写相关内容注意此处private/cakey.pem此处不能够更改,如若更改,请更改opssl的配置文件位于/etc/pki/tls/openssl.cnf

生成私钥
在这里插入图片描述

ls -l private

查看生成的私钥文件
在这里插入图片描述
设置自签证数
此时按照自己公司的实际情况进行填写,切记主机名称填写的时候务必确认,否则证书签名的时候会出现错误。
在这里插入图片描述
创建配置文件中的文件夹,我的已经存在,按照配置文件里,进行创建文件夹
在这里插入图片描述
创建索引文件,以及编号文件在这里插入图片描述

touch index.txt serial
echo "01" > serial

此时将echo出来的01送至serial这个文件夹里,即签过名的个数,
此时已经模拟出一个私有的证书签发机构
下面我们就开始进行模拟签名申请和签名
打开另一台虚拟机,在这里我的虚拟机是ubuntu16.04,openssl这些软件都是自带的,所以我们直接开始

cd /tmp/httpd
mkdir ssl
(umask 077; openssl genrsa -out httpd.key 1024)

生成密钥
在这里插入图片描述

openssl req -new -key httpd.pem -out httpd.csr

生成证书申请
在这里插入图片描述

seq httpd.csr 172.16.200.129:/tmp/

输入对方的root密码

发送密钥申请
在这里插入图片描述

openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 3655

在这里插入图片描述
此处输入两次y证明你同意该签名,n为不同意
在这里插入图片描述
此时实验结束。

错误分析:

错误1:

[root@localhost tmp]# openssl ca -in /tmp/http.csr -out /tmp/http.crt -days 3655
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
matc h:invalid type in 'policy' configuration

此处是配置文件出错,
在这里插入图片描述

[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

在这里插入图片描述
将规则改为上面内容即可,本设置文件我并为更改,可能是这个配置文件在编译的时候被更改了,改过来就好啦。

错误2:

[root@localhost tmp]# openssl ca -in /tmp/http.csr -out /tmp/http.crt -days 3655
Using configuration from /etc/pki/tls/openssl.cnf
Error opening CA certificate /etc/pki/CA/cacert.pem
140050491598752:error:02001002:system library:fopen:No such file or directory:bss_file.c:402:fopen('/etc/pki/CA/cacert.pem','r')
140050491598752:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:404:
unable to load certificate

未发现密钥文件,重新生成即可,或者你的密钥文件不再指定文件夹,更改一下配置文件即可
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值