当前位置: > Linux服务器 > nginx >

配置nginx支持ssl sni (一个IP绑定多个证书)

时间:2014-12-08 14:15来源:linux.it.net.cn 作者:IT
让nginx支持多证书,nginx必须支持TLS SNI,使用命令/www/wdlinux/nginx/sbin/nginx  -V查看,服务器的查看结果如下:
    nginx version: nginx/1.4.4
    TLS SNI support disabled
    configure arguments: --prefix=.... ....

很明显,不支持TLS SNI,需要重新编译openssl和nginx。

openssl:
./config enable-tlsext

nginx:
./configure --prefix=/workspace/soft/nginx_ssl2 --with-openssl=../openssl-1.0.1g/ --with-http_ssl_module --with-http_stub_status_module

奇怪的是,openssl不能指定prefix, 否则nginx make的时候会报告错误。原因:
nginx make的时候执行:
cd /workspace/soft/openssl \
    && make clean \  (就错在这一句,prefix target是无法make clean的,直接stop了)
    && ./config --prefix=/workspace/soft/openssl/.openssl no-shared  no-threads \
    && make \
    && make install LIBDIR=lib

上面例子使用的是:openssl-0.9.8l,如果使用0.9.8j后版本,openssl直接不需要config,make,make install,直接nginx ssl指向此目录即可,因为nginx也会自动编译openssl的。
从0.9.8f版本开始,OpenSSL通过“--enable-tlsext”配置选项加入SNI支持,从0.9.8j版本开始,此选项成为默认选项。

参考:
http://www.wdlinux.cn/bbs/viewthread.php?tid=7833
http://blog.csdn.net/cccallen/article/details/6672451
http://www.openssl.org/source/
http://nginx.org/cn/docs/http/configuring_https_servers.html
http://xfeng.me/nginx-enable-tls-sni-support/
http://nginx.org/cn/docs/http/configuring_https_servers.html
http://inotgaoshou.iteye.com/blog/962946:即将这些程序编译到nginx里面去,这样nginx启动时就不会采用动态加载的方式去load。
http://openwares.net/misc/server_name_indication.html:服务器名字指示SNI(Server Name Indication)

后续:
后来重新安装了新的环境,按照上面的部署死活不成;用本机的hosts测试没问题,一切换到dns上就出问题;
后来竟然发现必须./config & make & make install 安装openssl(环境变量不需配置),切换到dns就可以了;


(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容