ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据加密和CA的创建

数据加密和CA的创建

Linux操作系统 作者:luashin 时间:2016-04-08 16:50:27 0 删除 编辑

所谓的数据加密:就是把明文的数据用算法加密为密文,然后进行存放或传输,保证其安全性。

数据加密方式:

    1,对称加密
    加密方和解密方共用一个密钥,用算法加密后会产生一个密码,用于对此数据解密。对称加密的速度非常快,适用于加密大容量的数据。
    通常用的加密算法有:
    DES:支持64位的密钥长度
    3DES:用DES加密三次
    AES:DES的替代者,支持128,256,512位密钥长度的加密

    2,公钥加密

    用算法加密数据后,会产生一对密钥,一个是公钥,一个是私钥。公钥加密的数据只有私钥才能解,而私钥加密的数据只有对应的公钥才能解。但是,公钥机制加密的速度是非常慢的,它不用于加密大容量的数据,一只用于密钥交换,即对用对称加密算法生成的密码进行加密。
    常用的加密算法:RSA,DSA,ElGamal

    3,单项加密

    用单项加密算法对数据加密后,会生成一个数据的特征码,这个特征码用于唯一标识这段数据。
    主要应用就是数字签名和验证数据的完整性。
    常见的算法有:MD5:定长输出128位;SHA1:定长输出160位;CRC-32
    而通常一个安全的数据传输过程,要包括以上三种加密方式:
    发送方准备好自己要发送的数据后,用单项加密算法获得一个特征码。然后发送方用自己的私钥对特征码进行加密,把加密过的特征码放在用对称加密算法加密过的数据前面,然后发送方再用接收方的公钥对数据的密码进行加密,最后发送给接收方。接收方,用自己的私钥可以对加密的数据密码进行解密,有了数据密码就可以对数据进行解密了,接收方再用发送方的公钥对数据的特征码进行解密,如果能解密,就说明这段数据是发送方发的,也就实现了数字签名,然后接受方再把数据用单项加密算法计算出一个特征码,用这个特征码和发送方发过来的特征码进行比对,如果相同,就说明这段数据是完整的,没有被修改,这就实现了数据完整性的检验。
     这其中有一个问题?数据的私钥自己存放,但是数据的公钥要发送给对方,这个通过什么来实现呢?
     这就用到了CA(certificate authority)即电子商务认证中心。它是负责发放和管理数字证书的权威机构,作为第三方存在。CA在发证书的时候,会通过实地调查申请者,确定申请者身份后,才会发证。CA证书发行的时候,也要进行数字签名,用CA的私钥加密,用于唯一标识这个CA组织。
     而CA证书中通常包含的内容为:
     1,证书持有者的相关信息
     2,公钥
     3,CA的相关信息
     4,证书的使用方法
      
     而怎么计算文件的特征码呢?
     md5sum filename
     用md5计算这个文件的校验码
     sha1sum filename
     用sha1计算这个文件的校验码
     openssl dgst -md5 filename
     openssl dgst -sha1 filename
     指定算法对文件进行校验码计算
 
     下面我们来说一下Linux中实现加密的工具openssl:
     openssl有三个重要的库文件:
     1,libcrypto
     加密库,提供加密机制,实现通用的加密
     2,libssl
     保证协议并附加安全机制,如认证安全和传输安全等,并支持传输层安全套接字协议ssl/tls
     3,openssl
     多目标的通用加密,可以生成x.509格式证书,并可以建立一个本地的CA.
 
     openssl的命令用法:
     openssl version
     查看openssl的版本
     openssl cipers
     显示所有常用的算法
     openssl speed md5
     对算法的加密速度进行测试
     openssl ?
     显示openssl可用的指令    
     openssl ca
     用于创建CA
     openssl crl
     用于创建证书吊销列表
     openssl passwd
     用于生成一个经过加密的密码
     openssl genrsa 1024 > mykey.pri
     用于生成经过RSA加密的私钥,并放在mykey.pri这个文件中
     openssl rsa -in mykey.pri -pubout -out mykey.pub
     从私钥信息中提取公钥,保存至mykey.pub这个文件
     openssl rsa -in mykey.pri -des3 -out mykey.cipher
     对私钥进行3DES加密存放至mykey.cipher文件
     openssl rsa -in mykey.cipher -out mykey.sec
     解密这个文件至mykey.sec这个文件
 
     制作本地的CA:
     /etc/pki/CA目录,就是CA默认的工作目录
     /etc/pki/tls/openssl.conf   是openssl的配置文件
     /etc/pki/CA/private         存放我们自己建的CA的私钥
    
     cd /etc/pki/tls
     vim openssl.conf
     找到[ CA_default ]行:
     把"dir =  ../../CA"改为"dir = /etc/pki/CA,即把我们CA的工作目录使用绝对路径来定义
    
    cd /etc/pki/CA
   
    (umask 077; openssl genrsa 2018 > private/cakey.pem)  
    创建这个文件,并直接更改它的权限;文件的名字是固定的,配置文件中定义好的,cakey.pem是用于存放CA自己的私钥,CA虽然是授权的发证单位,但自己也要有私钥来实现数字签名,来区分不同的CA
 
    openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
    会自动提取到公钥,创建cacet.pem这个证书,这个证书是CA本身的证书,格式为x509。以后CA就可以给别人发证了。
    req:申请证书
    -new:表示是新发的申请
    -x509:指定我们的CA证书的格式
    -key:指定一个私钥文件
    -out:从我们知道的私钥中提取公钥信息,并保存至cacert.pem文件中
-days:指定证书的有效期
命令执行之后会出现这些信息让填入:

第一个:我们要创建的CA所在的国家,两个字符
第二个:我们要创建的CA所在的省份
第三个:我们要创建的CA所在的城市
第四个:我们要创建的CA的公司名称
第五个:CA申请者所在的部门
第六个:我们要创建的CA服务器
第七个:我们要创建的CA的邮箱
 
    mkdir certs crl newcerts
    certs 为所签证书的目录
    crl为 所吊销的证书的目录
    newcerts  要签的新证书的目录
    touch index.txt serial crlnumber
    echo 01 > serial
    echo 01 > crlnumber
    通过这几个步骤,我们创建了CA必须的几个文件,至此我们的CA服务器就建好了
 
    可以在请求发证的主机上,申请证书:
    (umask 077; openssl genrsa 1024 > httpd.key)
    生成自己的私钥,私钥长度为1024位
    
    openssl req -new -key httpd.key -out httpd.csr
然后从私钥中提取公钥,并生成一个向CA发送的请求文件httpd.csr

第一个:我们要申请的CA所在的国家
第二个:我们要申请的CA所在的省份
第三个: 我们要申请的CA所在的城市
第四个:我们要申请的CA的公司名称
第五个:申请者所在的部门
第六个:申请者要为哪台主机申请证书
第七个:申请者的email
第八个:对这个请求加密,当CA签证的时候要输入密码
第九个:说明申请者是哪个公司的
 
将httpd.csr发送到CA的服务上,然后在的CA服务器上签署,命令为:
openssl ca -in htttpd.csr -out httpd.crt  (默认一年)
CA签署这个证书
至此,httpd.crt就是我们的证书了,我们就可以使用了。
   
注:要了证书httpd.crt和私钥httpd.key,那么就可以用他们建立安全的通信连接了

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9034054/viewspace-2077540/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-02-18

  • 博文量
    290
  • 访问量
    1151024