数据加密过程及证书颁发
3026 点击·0 回帖
![]() | ![]() | |
![]() | 数据加密方式: 1、对称加密 加密效率高 DES 3DES: AES:支持不同长度的加密128 192 256 512 Blowfish 工具 openssl enc gpg 2、公钥加密(非对称加密) 算法复杂,加密过程慢,通常用于实现密钥交换 加密和签名:RSA ELGmal 数字签名:DSA 3、单向加密 加密的过程是不可逆的,通常用于实现文件的摘要特征,保证文件完整性 MD5 128 SHA1 160 CRC-32 工具: md5sum sha1sum openssl dgst 计算文件的校验码: #md5sum FILE ==> #openssl dgst -md5 FILE #sha1sum FILE ==> #openssl dgst -sha1 FILE 计算机网络中数据加密实现过程: 用户A给用户B发送加密文件: 1、用户A将文件用单向加密,生成文件的摘要特征码,用自己的私钥把特征码加密 2、A用户电脑随机生成对称密钥将文件和加密过的特征码一并加密 3、用B的公钥将对称密钥加密 4、将加密过的密钥和2过程中产生的文件一并发给B 用户B收到A的加密数据: 1、用自己私钥将文件解密 得到A的对称密钥 2、用对称密钥解密文件 3、用A的公钥解密特征码,并将文件单向加密也形成摘要特征码,两者比对,若一致,表示文件是A用户发送且未被篡改过 公钥是公开在网络中的 私要则是用户自己妥善保存的 这里有个问题就是A 和B的公钥如何在网络中传输并确定A的公钥就是A的B的公钥就是B的 用户B可向具有公信力的第三方CA(证书颁发机构)申请证书,证书内容包括: 一、证书的持有者的相关信息 二、CA的相关信息 三、证书的使用方法 四、公钥 CA会用私钥对证书的特征码加密 用户A和B需要进行数据加密传输是,会各自得到对方的证书,会用CA的公钥解密,并对比特征码,以实现证书的真实性,确定就是对方的证书,那么就可以得到对方的公钥 上述过程就可以进行 在Linux中颁发过程 ,因为是实验过程 所以需要自己创建个CA,此CA为自己颁发证书 CA服务器建立: #cd /etc/pki/CA #vim /etc/pki/tls/openssl.cnf dir = ../../CA 替换成/etc/pki/CA 此目录为CA的工作目录 #openssl genrsa 1024>/private/cakey.pem //生成私钥 #chmod 600 cakey.pem #openssl req -new -x504 -key /private/cakey.pem -out cacert.pem -days=365 //为自己颁发证书 需要为CA服务器建立目录和文件 #mkdir certs crl newcerts #touch index.tst serial crlnumber #echo 01>serial 处理证书请求的文件序列号 从01 开始 用户向CA请求 cd /etc/http #openssl genrsa 1024 >httpd.key #openssl req -new -key httpd.key -out httpd.csr //生成证书请求 会要求输入相关信息 #scp httpd.csr /CASERVERIPADD:/tmp //将httpd.csr文件cp到CA服务器中,递交请求 CA处理用户的证书请求 #openssl ca -in /tmp/httpd.csr -out httpd.crt //颁发证书 | |
![]() | ![]() |