首页 > 安全资讯 >

通过开启Nginx TLS SNI来支持同一IP下多SSL证书

15-03-30

前几天说给博客部署 SSL 证书来提高逼格,后来因为自己一个项目的需要,也跟着申请了多了一张 SSL 证书,按照相同的流程部署上去后,发现前面的域名的证书都 load 到了新增加的那张证书。接着 Google 了

 前几天说给博客部署 SSL 证书来提高逼格,后来因为自己一个项目的需要,也跟着申请了多了一张 SSL 证书,按照相同的流程部署上去后,发现前面的域名的证书都 load 到了新增加的那张证书。接着 Google 了下,原来是 Nginx 编译的时候没有开启 TLS SNI ,这样就导致了同一 IP 下只能支持一张证书。

查看已安装的 Nginx 是否开启 TLS SNI

# nginx -V ginx version: nginx/1.6.2
						built by gcc 4.1.2
							20080704 (Red Hat 4.1.2-55) TLS SNI support disabled configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module

TLS SNI support disabled 即未开启

下载支持 SNI 的 OpenSSL

重新编译 Nginx 需要 OpenSSL,下载并解压到某个目录

# cd ~
						# wget http://www.openssl.org/source/openssl-1.0.2a.tar.gz  
						# tar zxvf openssl-1.0.2a.tar.gz

重新编译 Nginx

# cd nginx-1.6.2 #这里假设你已经下载比解压了nginx的源码
						# ./configure --user=www --group=www \
						             --prefix=/usr/local/nginx \              --with-http_stub_status_module \              --with-http_ssl_module \              --with-http_gzip_static_module \              --with-openssl=path/to/openssl-1.0.2a # make
						# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old #备份旧的nginx
						# cp objs/nginx /usr/local/nginx/sbin/nginx #替换编译好的nginx

make 的编译选项加上 --with-openssl=path/to/openssl-1.0.2a 参数指向的是你解压的 OpenSSL 目录,make 编译完成后不要执行 make install ,直接将 objs 目录下编译好的新 nginx 执行文件 copy 到原来的路径下替换即可。

确认已经开启 TLS SNI

# nginx -V ginx version: nginx/1.6.2
						built by gcc 4.1.2
							20080704 (Red Hat 4.1.2-55) TLS SNI support enabled configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_modul --with-openssl=../../openssl-1.0.2a

虽然是很简单的一件事,其实我折腾了好久,我一直以为是我 conf 文件哪里写错了,后来误打误撞发现原来是跟没有开启某些相关,希望能帮助大家少走不必要的路。

相关文章
最新文章
热点推荐