Nginx开启TLS SNI support

之前因为想让VPS上的多个站点都使用SSL加密,主要那些twitter api被墙怕了,还是加密好

但是看一个ip只能一个ssl证书,我不可能去多买几个ip吧,毕竟只是自己想玩玩,不是那种必须的

但是既然想了就折腾下,后来查了下资料,可以multiple SSL sites on a single IP address

而Nginx如果开启了TLS SNI support,就能支持多个SSL加密站点共同使用一个IP

方法也很简单,首先先看看你现在的Nginx是否enable了这个功能

1
2
3
4
/usr/local/nginx/sbin/nginx -V
nginx: nginx version: nginx/1.1.0
nginx: TLS SNI support disable
nginx: configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6

如果是TLS SNI support disable那你需要重新编译下Nginx,如果enable了,你直接修改配置文件就行

这里的环境事先说明,这里使用LNMP一键安装包搭建的环境,其他方法的请自行查看需要修改地方

方法很简单,首先安装OpenSSL,不过一般都装好的,这里忽略

下载openssl源码包

1
2
wget http://www.openssl.org/source/openssl-1.0.0d.tar.gz
tar xvf openssl-1.0.0d.tar.gz

然后重新编译Nginx,需要在Configuare里多加一行参数,指明openssl的路径

我的openssl解压路径和nginx的目录在同级目录下,如果你的不在请自行修改

1
2
3
4
5
6
7
8
9
10
11
./configure --user=www --group=www --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-ipv6 \
--with-openssl=../openssl-1.0.0d/
make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
cp objs/nginx /usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -t
make upgrade

然后我们看下Nginx版本信息,确认下

1
2
3
4
/usr/local/nginx/sbin/nginx -V
nginx: nginx version: nginx/1.1.0
nginx: TLS SNI support enabled
nginx: configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-openssl=../../openssl-1.0.0d/

搞定,TLS SNI support enabled,接下来就是修改vhost的配置,加上SSL证书配置了

nginx的ssl配置方法这里不写了,有空单独写一篇文章说明

声明: 除非注明,小峰网络遨游记文章均为原创,转载请以链接形式标明本文地址

本博客原创文字只代表本人某一时间内的观点或结论,与本人所在公司没有任何关系。

本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

第三方若用于商业用途的转载,须取得本人授权。

本文作者:

本文地址:http://xfeng.me/nginx-enable-tls-sni-support/

你可能还对下面文章感兴趣: