您的位置:首页 > 运维架构

数字证书、CA及PKI,openssl使用

2016-07-14 11:45 525 查看
对称加密:DES,3DES AES
功能:只能保证机密性
非对称加密:(公钥加密):是通过数学函数来算出的。常用的RSA,DSS(只能加密,不能签名),ECC(椭圆曲线算法,要比RSA还要安全,但是不成熟)
功能:身份验证,密钥交换,机密性
单向加密:提取数据的特征码。MD5,SHA1 SHA2 SHA3(安全哈希算法)
功能:数据完整性

1、发送方使用选定的单向加密算法计算原始数据的特征码。
2、发送方使用自己的私钥加密特征码,附加于原始数据后面。
3、发送方生成一次性对称密钥,并使用此密钥加密数据(原始数据+加码后的特征码)
4、发送方使用收方的公钥加密一次性对称密钥,附加于加密数据后面
5、发送

1、接收方使用自己的私钥解密加密的一次性对称密钥:
2、使用对称密钥解密数据,得到加密的特征码和原始数据。
3、使用发送发的公钥解密加密的特征码。
4、使用与发送方相同的单向加密算法重新计算数据的特征码,并与解密出来的特征码比较。从而完成了检验数据完整性操作。

公钥分发
数字证书:
x509v3

版本号(version)
序列号():证书本身在CA中唯一标识:

签名算法标志:
发行者名称:
有效期:
证书主体名称:(组织(主体),个人)

证书主体公钥信息:
发行商唯一标志
证书主体的唯一标志:
扩展:
签名:

PKI:Public Key Infrastructure
端实体(申请者)
注册机构(RC)-->
签证机构 (CA)
证书撤销列表(CRL)发布机构
证书存取库

SSL:
starttls:可以在一个端口上提供加密和非加密。
ssl v1,v2,v3

tls:Transport Lanyer Security
tls v1

OpenSSL:
主要的软件包

libcrypto:加密、解密
libssl:实现ssl

openssl version   #版本号
OpenSSL 1.0.1e-fips 11 Feb 2013
1、加密一个文件
[root@node1 ~]# openssl enc -des3 -in fstab -e -out fstab.des3
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryption password:
2、解密一个文件
[root@node1 ~]# openssl enc -des3 -in fstab.des3 -d -out fstab.txt
[root@node1 ~]# cat fstab.txt
#
# /etc/fstab
# Created by anaconda on Thu Jun 30 10:38:23 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=fd2f1ae1-8eef-4211-a9f3-7db3f3379818 /boot                   ext4    defaults        1 2
........
3、加密算法
openssl dgst -md5 fstab.txt
[root@node1 ~]# openssl dgst -md5 fstab.txt
#获取文件的特征码,只要算法相同,特征码也相同,用md5sum也可以。
MD5(fstab.txt)= 085b811b0c1b10057c5aa43371234c28

4、测试当前主机加密算法的速度
openssl speed des-ede3
[root@node1 ~]# openssl speed des-ede3
Doing des ede3 for 3s on 16 size blocks: 2296748 des ede3's in 3.00s
Doing des ede3 for 3s on 64 size blocks: 642682 des ede3's in 3.00s
Doing des ede3 for 3s on 256 size blocks: 160988 des ede3's in 3.00s
Doing des ede3 for 3s on 1024 size blocks: 40291 des ede3's in 3.00s
Doing des ede3 for 3s on 8192 size blocks: 5038 des ede3's in 3.00s
OpenSSL 1.0.1e-fips 11 Feb 2013

5、sslpasswd 加密
[root@node1 ~]# openssl passwd -1 -salt 12345678
Password:
$1$12345678$xek.CpjQUVgdf/P2N9KQf/
随机数生成
[root@node1 ~]# openssl rand -base64 8
SJkppyT8nio=
[root@node1 ~]# openssl passwd -1 -salt 'openssl rand -hex4'
Password:
$1$openssl $IOYGACZVeLM3HedYIV5G5.
6、生成私钥
[root@node1 ~]# openssl genrsa 1024
Generating RSA private key, 1024 bit long modulus
...................++++++
.................++++++
e is 65537 (0x10001)
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDWaZ6o19Ov7oMRg/N7M/ogGzhaBMTXr/meKCcBh4qO+nuOot/m
9fpgDAEx5tnTO79UDGoBENjhu9sjsqrVKMRHbfHgu51NfgaKDAqKBd29VvNa0C68
zRKRMToXOriVWPwYOOQRiS0j04V9aDy9FRvnBmuI0+sYMqj4HmAkTKsZPwIDAQAB
AoGBAL2D99gXhKWBtVoa/nBMne4ZATMX+gEHKySvKuMAMel03xdRQYS8sISKt9eq
y6gYrGGW429zu6+ywtyHxNXKRcmauvixBnlYIshUAzjx4l+WyAowFfNQ+1m5TIdo
QGOCsXVLqXb9kehwmQesvXHCLaOR2q/nrtOUbx7FW2hwjWvBAkEA8WfXMHIgp5Ez
0EZ4kiVfiwgIzi6MxNZPxx1iOxyS+/Nt/XMQKhAh4GanuRD2dFE+kWehls/xwvgI
I+tKYgfAHwJBAONgBCSoE+fLf7yNZGBYJWaF7n8jepQB/xhDuhBj/rVPhCDDSVTt
WWgQN/wo+eqX1ijuNI7fyKXH7i+3vTRFAuECQBCoI5b6KPqm8DZMxoD/ByqmsUTY
vWnPh82rX13IyPONhmdYiyL73fqH2sbQPtEj0fdieSnYy0uypY0k7Qr6ke0CQQCv
Y6wufnxES+QvlL191+CZsewjpEF0lAmrNOr8o7WhNEIOZ7VUTnWt4PzehNkqzY7E
KeLe5t5Giu8/XbMT87vhAkBAWt02VrExIElBSD9hkSW368SIIB0E1dMzxvMHQNVw
7jSTP+/AN6s/V4pacIbdIJcP3AqNU6Ng4yrAr0o60idc
-----END RSA PRIVATE KEY-----

[root@node1 ~]# openssl genrsa 1024 > mykey.private
Generating RSA private key, 1024 bit long modulus
.........++++++
.......++++++
e is 65537 (0x10001)
加密私钥
[root@node1 ~]# openssl genrsa -des3 2048
Enter pass phrase:
Verifying - Enter pass phrase:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,2D8AA1C9D62164FB
7、生成公钥
[root@node1 ~]# openssl rsa -in mykey.pri -pubout
writing RSA key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8MGAPnk2Xg1A3LFy+aPx
fMFYL+1dWGWF03Uh/mB47W+oG0mtyBpeE5jQsgZr6tlQ7zNJkjNdK9sFv19QQpJm
mH+4Kqa1NsFQHo83RUztfqnCkM9/ub3TIocSTev08+R80Ap7VdslOeVRoECB46y2
VgMMr+kwdHI+CcB4mLWkRsyIixZX2bM4ZrOT0U/YPia5HuYmf/E6iG+J4cHy2yqP
wA1+zUaCrphv6QO7n6EtvBZ+xhvcpeiEPS+SllwKyDnLjUf6NX1PTr+0TEQCHOnt
tALXu5r6+bYAHDcvTZbl1B20JtG6FQsgtyX3T6J/SdjzlKruMw/lqw5HwWRMOQHt
0wIDAQAB
-----END PUBLIC KEY-----
直接用umask设置好权限的操作,务必加上()。umask对子shell执行,对当前无效。否则以后操作都是600。
[root@node1 ~]# (umask 077; openssl genrsa -out /root/mykey2.pri 2048)
Generating RSA private key, 2048 bit long modulus
...................................+++
.........................................+++
e is 65537 (0x10001)
[root@node1 ~]# ll -h /root/mykey2.pri
-rw-------. 1 root root 1.7K 7月  14 11:47 /root/mykey2.pri   #600
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: