阿里巴巴SSL安全机制利用Nginx支持HTTPS协议原理
Tengine是一个由阿里巴巴工程师基于Nginx开发的开源Web服务器,适合流量大的互联网服务,在淘宝、天猫等电商业务大量使用,并成为阿里云产品SLB、OSS、CDN的核心组件。微博、土豆、小米等大型互联网公司也是Tengine客户。
朱照远是Tengine开源项目发起人,同时也是阿里巴巴集团开源委员会成员,在业内他的花名“叔度”更为知名。他表示,“按照目前的发展趋势,Tengine可能很快就会超过老牌Web服务器Lighttpd位列第8。”
因业务庞大,阿里巴巴经常性地面临大规模交易、云计算、大数据等技术领域的极端挑战。该公司既有大量的自研技术,同时也积极拥抱开源社区,使用并回馈,如Tengine团队就向Nginx官方贡献过patch,并帮助Nginx官方将其文档翻译成中文。
下面为大家说一说阿里巴巴SSL安全机制利用Nginx支持HTTPS协议是如何实现的。首先详情一下HTTPS是以安全为目标的HTTP通道,简单来说就是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因而加密的详细内容就需要SSL。配置HTTPS协议支持,采用Tomcat和Nginx协同进行安装配置满足工作需要。
首先准备工作Tomcat此处省略,Nginx安装时的准备工作如下:
Nginx安装如下插件:
openssl-1.0.2
pcre-8.21
zlib-1.2.8
openssl安装时注意少量其余依赖插件如:
libcrypto.a libcrypto.pc libssl.a libssl.pc
准备就绪之后,进行Nginx安装操作,Linux检测安装平台目标特征,执行命令:
./configure –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module
–with-http_realip_module –with-openssl=/usr/local/openssl-1.0.2 –with-zlib=/usr/local/zlib-1.2.8
Linux编译并安装命令,具体如下:
编译命令:make
安装命令:make install
清理编译命令:make clean
生成秘钥文件,Linux下生成秘钥分别执行命令如下:
参考参数说明:
Country Name (2 letter code)[XX]:cn——–国家
State or Province Name (full name)[]:yoodb———省份
Locality Name (eg, city) [DefaultCity]:yoodb————–地区名字
Organization Name (eg, company)[Default Company Ltd]:yoodb——公司名
Organizational Unit Name (eg,section) []:ning—–部门
Common Name (eg, your name or yourserver's hostname) []:yoodb—-CA主机名
Email Address []:———邮箱
Please enter the following 'extra'attributes
to be sent with your certificaterequest
A challenge password []:———–证书请求密钥,CA读取证书的时候需要输入密码
An optional company name[]:———–公司名称,CA读取证书的时候需要输入名称
Nginx配置nginx.conf文件,具体如下:
部署以及重启 Nginx 操作:
开启 Linux 端口号 443
iptables -A INPUT -p tcp –dport 443 -j ACCEPT
/etc/init.d/iptables status 查看防火墙状态
vim /etc/sysconfig/iptables 编辑防火墙文件
/etc/init.d/iptables restart 重启防火墙
nginx –s reload 重启 Nginx服务器命令
Nginx板块与工作原理
Nginx由内核和板块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将用户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的板块去完成相应的工作。
Nginx的板块从结构上分为核心板块、基础板块和第三方板块:
1) 核心板块:HTTP板块、EVENT板块和MAIL板块
2) 基础板块:HTTP Access板块、HTTP FastCGI板块、HTTP Proxy板块和HTTP Rewrite板块,
3)第三方板块:HTTP Upstream Request Hash板块、Notice板块和HTTP Access Key板块。
Nginx的板块从功能上分为如下三类:
1) Handlers(解决器板块)。此类板块直接解决请求,并进行输出内容和修改headers信息等操作。Handlers解决器板块一般只能有一个。
2) Filters (过滤器板块)。此类板块主要对其余解决器板块输出的内容进行修改操作,最后由Nginx输出。
3) Proxies (代理商类板块)。此类板块是Nginx的HTTP Upstream之类的板块,这些板块主要与后台少量服务比方FastCGI等进行交互,实现服务代理商和负载均衡等功能。
Nginx本身做的工作实际很少,当它接到一个HTTP请求时,它仅仅是通过查找配置文件将此次请求映射到一个location block,而此location中所配置的各个指令则会启动不同的板块去完成工作,因而板块可以看做Nginx真正的劳动工作者。通常一个location中的指令会涉及一个handler板块和多个filter板块(当然,多个location可以复用同一个板块)。handler板块负责解决请求,完成响应内容的生成,而filter板块对响应内容进行解决。
Nginx的板块直接被编译进Nginx,因而属于静态编译方式。启动Nginx后,Nginx的板块被无限加载,不像Apache,首先将板块编译为一个so文件,而后在配置文件中指定能否进行加载。在解析配置文件时,Nginx的每个板块都有可能去解决某个请求,但是同一个解决请求只能由一个板块来完成。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 阿里巴巴SSL安全机制利用Nginx支持HTTPS协议原理