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 )客户端测试
客户端导入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
如有瑕疵,请及时指出~
转载于:https://blog.51cto.com/jungege/1393008