数据的加密(Encryption)
说明:数据在传输过程中,为了保障数据正确的到达通信的对方,需要把数据进行加密。
e.g: A <--------->B,A与B通信,当A给B传递信息时,要保证数据的完整性,还要保证信息的接受者是B,这时就需要对数据进行加密,反之,B给A传递信息时亦是如此。
现在一般采用的方法就是:
sender:
1. 计算数据的hash值
2. 使用自己的私钥加密hash值,然后附加在数据的首部
3. 生成一对对称密钥
4. 使用此对称密钥加密数据和hash值
5. 使用接收方的公钥加密加密此对称密钥,并附在密文尾部发送给接收方
生成私钥有两种方法:
(1)mkae
使用make生成私钥时,需要切换到/etc/pki/tls/certs/目录下,下面介绍生成私钥的步骤:
1.cd /etc/pki/tls/certs/
2.make my.key(在此生成的私钥必须以.key结尾)
[root@station45 certs]# make my.key
umask 77 ; \
/usr/bin/openssl genrsa -des3 1024 > my.key
Generating RSA private key, 1024 bit long modulus
.........++++++
..++++++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
[root@station45 certs]#
生成的时候会让你输入加密此文件的密码
(2)、openssl
openssl genrsa 1024 > test.key ,用此种方法生成时不需要选择特定的地方,后缀名也不没有特定的格式
[root@station45 test]# openssl genrsa 1024 > test.key
Generating RSA private key, 1024 bit long modulus
...........................++++++
....++++++
e is 65537 (0x10001)
[root@station45 test]# ls
test.key
[root@station45 test]#
提取此两种方法生成的公钥可以用同一种方法:
openssl rsa -in (私钥文件) -out (公钥文件)
注意:此时也会出现一些安全问题,A和B的公钥会在互联网上传播,假如有第三者拿到A或者B的公钥作一些改变,此时数据的传输依然达不到我们想要的效果。这时一般采用的方法就是把A和B的公钥放在一个可信任的第三者处(CA),需要对方的公钥就到CA处取,这时就需要A和B在CA处电子注册。
(1)make 的注册如下:
[root@station45 certs]# ls
ca-bundle.crt make-dummy-cert Makefile my.key
[root@station45 certs]# make my.csr
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key my.key -out my.csr
Enter pass phrase for my.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:
这时会提示一些注册信息,然后填上信息就可以注册了。
[root@station45 certs]# ls
ca-bundle.crt make-dummy-cert Makefile my.csr my.key
[root@station45 certs]#
(2)openssl 的注册如下:
[root@station45 test]# openssl req -new -key test.key -out my.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:
填写上信息就行可以注册了。
然后可以查看注册信息:
[root@station45 test]# openssl req -noout -in my.csr �Ctext
在实验室环境下我们可以自己制作一个CA:
1.cd /etc/pki/CA
2.openssl genrsa 2048 > private/cakey.pem
3.openssl req �Cnew �Cx509 �Ckey private/cakey.pem �Cout ./cacert.pem �Cdays 2000
4.vim /etc/pki/tls/openssl.cnf
[ CA_default ]
dir = /etc/pki/CA # Where everything is kept
5mkdir ./newcerts
6. touch ./{serial,index.txt}
7. echo “XX” > ./serial XX为两位数
最后我们自己给自己颁发证书:
openssl ca �Cin test.csr �Cout test.csr
可以命令查看最后的证书:
openssl x509 �Cin test.csr �Cnoout �Ctext