https
https:超文本传输安全协议(Hypertext Transfer Protocol Secure)
网景在1994年创建了https
|
https就是使用了ssl/tls协议通信的http
#SSL/TLS当前使用的版本
#SSL:Secure Socket Layer v3版
#TLS:Transport Layer Security v1版
SSL/TLS的重要性
#(1) 所有信息都是加密传播,第三方无法窃听。
#(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。
#(3) 配备身份证书,防止身份被冒充。
|
https与http的区别
http 文本协议 tcp:80端口 应用层
https 二进制格式的协议 tcp: 443端口 传输层
|
(1) http事务与加密的https事务
(2)重要概念知识介绍
SSL会话
ssl握手要完成的工作:
交换协议版本号
选择但双方都支持的加密方式
对两端实现身份验证
密钥交换
注意:SSL会话基于IP地址进行:不支持在基于FQDN的虚拟主机上实现
|
X509.3证书格式
证书格式的版本号
证书序列号
证书签名算法
证书颁发者
有效期
持有者的名称
持有者的公钥
CA的ID
持有者的ID
其它扩展信息
基本约束
证书策略
密钥的使用限制
CA签名
|
PKI (Public Key Infrastructure)
端实体(申请者)
注册机构(RC)
签证机构(CA)-->签证机构(CA)
证书撤消列表(CRL)发布机构
证书存取库
|
客户端验证服务器证书
日期检测:证书是否在有效期内
证书颁发者的可信度:
证书的签名检测:
持有者的身份检测:
|
服务器配置https
( 1)确保mod_ssl模块加载
如果没有加载该模块则 #yum -y install mod_ssl*
(2) 服务器自建CA (自我成为CA签发者)
创建服务器自己的私钥
#cd /etc/pki/CA 进入CA目录
#(umask 077;openssl genrsa 2048 > private/cakey.pem) 创建服务器私钥
|
服务器自我生成CA证书
#openssl req -new -x509 -key /private/cakey.pem -out cacert.pem -days 3655
|
创建index.txt (索引文件数据库),serial(签证编号)
#touch index.txt serial crlnumber
# echo 01 > serial
|
( 3 ) 客户端申请CA 我们同时使用服务器做客户端
1、生成客户端自己的私钥 httpd.key
# cd /etc/httpd
# (umask 077;openssl genrsa 1024 >httpd.key)
|
2、客户端生成证书签署请求 httpd.csr
#cd /etc/httpd
#openssl req -new -key httpd.key -out httpd.csr
|
3、 服务器给客户端签署证书 生成 httpd.crt
#openssl ca -in httpd.csr -out httpd.crt -days 3665
|
4、查看密钥和证书
( 4 )编辑配置文件
1、打开拓展配置文件及mod_socache模块
# vim /etc/httpd/httpd.conf
|
2、编辑/etc/httpd/extra/httpd-ssl.conf
设置客户端证书和密钥路径
设置基于ssl的虚拟主机
3 重启httpd服务
#httpd -t 测试配置文件是否有错误
#service httpd restart
|
( 5 )客户端测试
https://www.a.com:443
客户端导入CA证书
#把/etc/pki/CA/cacert.pem这个CA证书拷到window上,改名为cacert.crt,安装此证书
|
客户端重新测试
https://www.a.com:443
( 6 )查看证书信息
( 7 )linux客户端测试
#openssl s_client -quiet -connect 172.16.251.183:443 -CAfile /etc/pki/CA/cacert.pem
|
有瑕疵,请及时指出~
本文出自 “西风瘦猪” 博客,请务必保留此出处http://jungege.blog.51cto.com/4102814/1393008