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

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

     SSL(Secure Socket Layer) 负责Web网站和客户端浏览器之间的通信安全。

       与HTTP的URL由“

       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的博客上再细说