娇w兴 发表于 2018-5-11 10:40:43

RedHat 学习笔记 基于ssl的httpd服务配置 (openssl创建CA)

  这篇文章大概分为三个部分来讲,包括各种加密算法,openssl的初级使用等
  

  第一部:简单介绍HTTPS,如何实现身份认证+数据加密
  

        SSL(Secure Socket Layer) 负责Web网站和客户端浏览器之间的通信安全。
        与HTTP的URL由“http://”开头且使用80port不同,HTTPS的URL由“https://"开头且默认port为443.
        SSL在HTTP应用协议之下作为一个独立的协议层运行。

        SSL利用加密来防止窃听,篡改和假冒消息。

  

     这里先补充一点几个简单的加密算法说明

  对称加密算法(symmetric algorithm):特点是加密密钥能够从解密密钥推算出来,加解密速度快

        DES(data encryptiion standard),IBM研制,加密解密用的是同一个密钥

        3DES(triple DES),DES的advanced版本

        AES,支持128,256,512等不通位数

        linux的工具:openssl enc; gpg

  

      公钥加密算法:加密解密使用不同的密钥,加密密钥(public key)可公开,解密密钥(private key)需保密

        RSA

        DSA

        linux的工具:openssl; gpg

  

  单向加密算法:信息摘要函数

        MD5(message-digest algoritm 5), 提取数据的特征码,特定为不可逆性,雪崩效应等

        SHA1(secure hash algorithm 1),类似MD5,默认长度为160

  

      接着模拟一下客户端和服务器实现身份认证和数据加密
        client: 利用MD5提取原始数据的特征码--->利用自己的私钥加密这段特征码-->与server协商生成一对对称密钥-->用对称密钥加密整个数据-->发给server
        client:获得server公钥(public key)-->用这把public key加密自己生成的对称密钥-->发个server

        server:使用自己的private key解密获得client生成的对称密钥-->用这个对称密钥解密整个数据-->用client的公钥解密这段特征码-->从新计算数据的特征码并比较

  

      这里就有个问题了,client怎么才能获得正确server的public key,这个时候就需要有一个具有公信力的中间机构--认证中心(Certificate Authority,CA)。

  

  

  第二部分:通过openssl这个软件来模拟一个CA然后给自己的Web服务器发放证书。
  1.下载openssl

        我用我10.16.121.124的主机充当CA

  2.在CA主机上生成一个私钥

              切换到/etc/pki/CA 目录中

     
      这里粗略介绍一下openssl的几个简单用法

              openssl command [ command_opts ] [ command_args ]
                  Creation of RSA, DH, and DSA key parameters (创建以这几个算法的公开密钥)

              例如: openssl genrsa 2046 (以RSA算法生成长度为2046位的公开密钥的私钥)

              在上面的例子中我们将生成的私钥放在 /etc/pki/CA/private/中,以cakey.pem命名,且权限为600   

  

  3.124主机要充当CA还需要一个自签证书,还要用到我们的openssl

     
                 req:

                  -new: this option generates a new certificate request.

                  -x509: this is uesd to generate a test certificate or a self signed root CA

                  -key private/cakey.pem: 以哪个私钥来生成自签证书

                  -out cacert.pem: 证书保存的位置

                  然后按要求就填入证书的各种信息

                  Country Name(国家):

                  State or Province Name(省份):

                  Locality Name(城市):

                  Organization Name(公司):

                  Organizational Unit Name(部门):

                  Comom Name(因为这是自签证书,所以要求不高可以填入你服务器的hostname)
                  Email Address(管理员的邮箱):   

  

  4.编辑CA配置文件(/etc/pki/tls/openssl.cnf),作用为指定你CA内文件存放的位置

  
     

  

  5.创建CA生成证书的相关目录与文件

     
  

  6.切换到我们Web服务器10.16.121.120上面,申请一个私钥存放在/etc/httpd/ssl/目录下,命名为webprivate.key   

     
  

  

      7.用10.16.121.120Web服务器向CA请求获得证书。先在本机上生成一个申请证书

     
        这个步骤是在Web服务器上执行的,类似步骤3不过这里要注意的是下面有一项是Comman Name,要填入自己Web服务器的FQDN,且请求证书文件名为web.csr   ----csr(Certificate Signature Request)

  

      8 把10.16.121.120Web服务器生成的申请证书web.csr传给10.16.121.124 CA服务器

     
           利用scp(secure copy)命令可以进行远程copy文件

  

      9.在CA服务器上给Web服务器颁发证书

     
  在CA服务器上就成功给Web签署了证书,文件为web.crt

     

      10.还要把web.crt传回给Web服务器

        至于在Web服务上的配置我放在Web的博客上再细说

  
页: [1]
查看完整版本: RedHat 学习笔记 基于ssl的httpd服务配置 (openssl创建CA)