随着网络的发展,安全成了一个很严重的问题,也就是在安全的方面要有更高的可信度,这样才能保证用户在internet上传输数据的时候能够更加的安全,但是在我们Linux中,主要使用openssl和gpg两个方法来实现安全机制。
首先简单介绍一下加密技术:
加密技术可以分为单向加密,对称加密,非对称加密。
单向加密即使计算一段数据的特征码,这个特征码值是独一无二的,对数据完整性进行校验,且输出定长。其常见的加密算法有MD5(128位)、SHA1(160位),看起来SHA1加密生成的校验码会比MD5的长,当让加密的效果会更好,但是由于加密的程度更强,所有就会导致速度会慢,所以安全和速度是两个相对的概念,只有中和了两者,才能更好的实现最终的目的。
对称加密就是加密方和解密方使用相同的密钥,这样就会导致加密和解密的速度更快,但是其有一个缺点,如果一个用户和很多用户有通信,那么这个用户要么得记住很多的密钥,要么使用一些相同的密钥,这样就在使用相同密钥的用户中,可以使用自己的密钥解密其他用户的加密信息,从而获取他人的信息。常见的加密算法有DES(128位)、AES(128、192、256位)、3DES。
非对称加密就是加密和解密使用的不是一个密码,常见的算法有DSA(支持认证)、RSA(支持认证和加密)。
但是为了为了两个初次通信的用户能彼此知道对方的公钥,采用了IKE(internet key exchange)机制,这样两个用户在internet上传输数据的时候就知道彼此的公钥,然后使用对方的公钥来解密发来的加密的数据,而如何在通信的过程中来确定对方的身份,这就需要借助PKI(公钥基础设施),也就是说通过第三方来出示证明,在这里也就是使用证书机制来验证用户的信息,通常一个证书中存放着通信人的公钥。所以接下来就从加密开始,然后到颁发证书,最终实现验证的实验过程。
1、首先,提到的加密算法,使用openssl对文档加密的方法如下
#mkdir /opentest
#cd /opentest
#cp /etc/fstab ./
#cat inittab 文件查看如下所示:
#openssl enc -des3 -salt -a -in inittab -out inittab.des3
加密算法的时候,我们将会看到如下的内容:
如果我们解压出来加密后的文件,可以看出文档还是恢复到原来的样子:
#openssl enc -d -des3 -salt -a -in inittab.des3 -out inittab
#cat inittab 如下图所示:
如果使用openssl -X(X为任意参数)可以看到openssl的参数信息
这是对文件进行简单的加密和解密的。
计算文件单向加密的特征码
#openssl dgst -sha inittab
原本特征码的值是唯一的,但是我对inittab的文件做了一下修改,就是在第一行加了一个“#”结果发现特征码的值扬中不一样,这就是所谓的“雪崩效应”,牵一发而动全身,所以特征码是用来检验一个用户的所发信息的完整性的指标,可以看出其在传输的过程中是否被修改。这样就不会根据获取的特征码来逆向解析原文件,这就是单向加密算法的优点。
使用openssl passwd -1可以机密密码
就会生成如下的加密的密码:
[root@server64 open]# openssl passwd -1
Password:
Verifying - Password:
$1$MECaB7dA$FUqQcS1r.LroaXLYgeQHl0
当然可以使用whatis passwd 查看passwd 信息:
所以使用 man sslpasswd 来查看passwd的信息,
当让sslpasswd中有一个-salt选项,只要-salt是一样的,加密后的密码就是一样的
如图所示:
2、接下来我们将介绍关于证书方面的知识
证书包括证书的颁发,证书的撤销,证书的
一个机构要想有颁发证书的权限,他自己也要取得别人的信任,所以要有自己的钥展示给大家,但是公钥可以很Easy的从私钥中获取的,接下来先讲讲私钥和公钥的生成方法:
#cd /opentest
#(umask 66;openssl genrsa 1024 >my.key) //生成私钥
#openssl rsa -in my.key -pubout -out my.pub //生成公钥
然后使用#cat my.key 和cat my.pub可以看到两个文件内容,公钥是从私钥中提取出来的,所以他两个是紧密结合,成对出现的。
CA的步骤:
首先用户要有一对公钥和密钥,然后向CA机构发起证书发出请求:
但是作为CA机构自己也要有自己的证书,所以需要生成
# cd /etc/pki/CA
#(umask 66 ; openssl genrsa 2048 > private/cakey.pem) //为自己生成一个证书
#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650然后执行下面交互式的回答,完成之后就能生成一个证书。
接下来就是用户自己也要有一对公钥和密钥,接下来我们建立一对新的公钥和密钥,
#cd /tmp/opentest
#(umask 66 ; openssl genrsa 1024>server.key)生成密钥
#openssl rsa -in server.key -pubout -out server.pub
#openssl req -new -key server.key -out server.csr //CA申请
接下来就是CA机构进行审核然后颁发证书:
#openssl ca -in /tmp/opentest/server.csr -out /tmp/opentest/server.crt -days 3650
但是在CA颁发证书的之前还要进行一系列的设置,如
编辑/etc/pki/tls/openssl.cnf文件
在/etc/pki/CA 下建立一些列的目录
#mkdir certs newcerts crl //建立证书、新证书、证书撤销的目录
#touch index.txt serial
#echo 01>serial //初始化序列号
这样就建立了一个简单的CA创建,颁发请求的过程
本文出自 “IT梦-齐-分享” 博客