标签:创建私有ca
别人可以得到我们的加密转换规则,但是不知道密钥是什么,你仍然能够将密文转换为明文!
近些年来比较流行的:
对称加密:加密解密用的同一个密码
单向加密:提取数据特征码,输入一样,输出必然相同
非对称加密算法:公钥私钥
IKE:密钥交换简写
离散对数原理剖析: (单向加密)
A:生成 x B:生成 y
A:g^x%p --> B A把g的x次方对p取模 传给B
B: g^y%p --> A B把g的y次方对p取模 传给A
我们在互联网上传递了4个数字:
四个数字分别是 g 、p、 g^x%p、g^y%p
拿到数字后 A:(g^y%p)^x=g^yx%p
B:(g^x%p)^y=g^xy%p 分别取自己手中数字的平方,结果相同
这就是著名的Diffie-Hellman算法
那么问题又来了,你俩交换数字的时候,怎么确认是对方发的
所以又催生了
非对称加密算法:
公钥:p 公钥是私钥中提取出来的,是公开的
私钥:s
我拿着你的公钥去加密,只有你的私钥能解密 ;
公钥加密加密速度太慢,所以通常用它来进行身份验证
用自己的私钥加密,可以实现身份验证
PKI:定义了CA与其跟CA之间的对应关系,及CA的证书吊销列表
咱们有两种PKI: (TLS ;OpenGPG)
证书权威机构:
CA:
x509:
公钥及有效期限
证书的合法拥有者
证书该如何使用
CA的信息
CA签名的校验码
网上著名的协议TLS/SSL 就是用的x509的证书
TLS:传输层安全 类似于SSL都是加密机制
OpenGPG 也是一种证书管理机制
OSI七层模型:
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
三次握手后,协商使用哪种协议 是SSL 还是TLS
1、server将自己的证书发给客户端
2、客户端验证证书是不是我信赖的机构所颁发的,如果是才信任
3、验证这个证书是不是完整的,如果是就拿着这个证书的公钥去使用
4、客户端生成一个对称密钥,通过server端的公钥加密以后传给server
5、server端拿着这个密码加密数据发给客户端
这是SSL会话的建立过程
然后协商双方之间的加密算法,因为对称加密的加密算法也有很多种。
对称加密:常用算法
DES算法
3DES
AES:高级加密算法
Blowfish:也是一种对称加密算法
单向加密:常用算法
MD4
MD5
SH1
SHA192,SHA256,SHA512 越大速度越慢
CRC-32:循环冗余校验码 (不是加密算法,是一种校验码机制)
公钥加密:(加密/签名)
身份认证
数据加密
密钥交换
公钥加密:常用算法
RSA:加密;签名
DSA:签名 美国国家安全局公开使用
ElGamal:商业算法
linux上实现对称加密:
OpenSSL:SSL的开源实现
组成:
libcrypto:通用加密库
libssl:TLS/SSL的协议的实现;基于会话的实现了身份认证,数据机密性和会话完整性的库
openssl:多用途的命令行工具,还可以模拟实现私有证书颁发机构
OpenSSL的配置文件:/etc/pki/tls/openssl.cnf 用于将openssl工作成私有CA时用
加密实例: 将inittab这个文件用des3的加密算法加点盐,保存到当前目录叫inittab.des3
openssl enc -des3 -salt -a -in inittab -out inittab.des3 会让你输入密码
解密实例:openssl enc -des3 -d -salt -a -in inittab.des3 -out inittab
如何查看特征码:md5sum +file / sha查看各种sum
基于Openssl提取特征码: openssl -dgst -sha inittab
重点:OpenSSL创建私有CA
在公司实现https服务器,就必须要先给web服务器发一个证书
1、生成一对密钥,把公钥做成证书
2、生成自签署证书
genrsa:生成一个私钥
站在CA目录上执行
一:openssl genrsa 2048 > private/cakey.pem 使用rsa算法生成私钥保存为cakey.pem这个名
或者:(umask 077; openssl genrsa -out /private/cakey.pem 1024) 使生成的文件权限为600
提取公钥
二:openssl rsa -in server.key -putout 将server.key里的公钥提取出来,一般不需要手动
req生成自签署证书( 指定密钥文件是cakey.pem 保存在cacert.pem 指定有效期限为一年)
站在CA目录上执行
三:openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 365
CN;Hebei;Zhengzhou;Renfang;Yunwei;ca.mageedu.com;caadmin@mageedu.com
自签署证书做好了 可以用这句话查看openssl x509 -text -in server.crt
现在CA准备好了
四:vim /etc/pki/tls/openssl.cnf 编辑CA的配置文件
修改:dir =/etc/pki/CA
CA中还必须包含下面的几行命名的目录
在下面 还可以设置默认的个人信息,以后就不用重复填写了
五:私钥应该保存在/etc/pki/CA/private目录下叫做cakey.pem
六:在CA下创建 mkdir certs newcerts crl
七、还要准备两个文件:touch index.txt touch serial ;echo 01 > serial
八、在另外一台服务器上mkdir /etc/httpd
cd /etc/httpd; mkdir ssl/ ; cd ssl/
九、这台服务器需要申请生成私钥 (umask 077; openssl genrsa -out httpd.key 1024 )
十、还在ssl目录下 进行证书签署请求
openssl req -new -key httpd.key -out httpd.csr
下面填写的城市 公司 部门 一定要和CA一致
十一、因为在一台服务器,签署证书就不用远程发送;下面是ca签发的过程
openssl ca -in httpd.csr -out httpd.crt -days 365
十二:当前目录下就会有一个httpd.crt的证书
十三:回到CA cd /etc/pki/CA; cat index.txt 会有一个01号 因为前面咱们echo进去了一个01
.crt是证书 .csr是请求 .key是生成密钥
这个过程需要背过;而且要能把当前主机做成CA的过程用脚本实现,包括修改配置文件
附加知识点 生成测试用户:cd /etc/pki/tls/certs/
make httpd.pem 他会自动帮你生成私钥 让你填写各种信息
在certs目录下就会生成一个httpd.pem (私钥也在里面,但是正式环境不能这么玩) 根据后缀的不同自动确定是什么文件 Makefile文件中有定义
标签:创建私有ca
原文地址:http://10183596.blog.51cto.com/10173596/1696148