数据的加密(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 (公钥文件)

注意:此时也会出现一些安全问题,AB的公钥会在互联网上传播,假如有第三者拿到A或者B的公钥作一些改变,此时数据的传输依然达不到我们想要的效果。这时一般采用的方法就是把AB的公钥放在一个可信任的第三者处(CA),需要对方的公钥就到CA处取,这时就需要ABCA处电子注册。
1make 的注册如下:

[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 –text

在实验室环境下我们可以自己制作一个CA:

1.cd /etc/pki/CA

2.openssl genrsa 2048 > private/cakey.pem

3.openssl req –new –x509 –key private/cakey.pem –out ./cacert.pem –days 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 –in test.csr –out test.csr

可以命令查看最后的证书:

openssl x509 –in test.csr –noout –text