这篇文章大概分为三个部分来讲,包括各种加密算法,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的博客上再细说