數字證書、CA及PKI,openssl使用

對稱加密: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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章