Nginx多站点SSL证书支持

朋友的博客也是放在我的VPS上的,今天也帮他的博客启用了SSL加密支持,证书是他自己申请的的跟他的域名绑定的签名CA;也就是在我的VPS上Nginx同时配置了2个网站的ssl加密,使用2张不同的证书;
原本以为只需要在nginx.conf中简单对他的虚拟站点配置HTTPS指定到他的证书就可以了;结果重启nginx以后,朋友的博客https访问正常,我自己的博客https访问却出现了证书错误;一看证书,nginx竟然使用的是我朋友的证书,不是我自己的;难道nginx只支持一张证书的ssl加密?
网上一搜得到了答案,若要Nginx支持多域名站点的SSL加密,需要开启TLS SNI(TLS Server Name Indication) 的支持,需要在编译选项中带上openssl源代码目录,然后重新编译才能支持;
第一步,用nginx -V 确认nginx的SNI支持是否开启了;TLS SNI support disabled表示未开启!

#/usr/local/nginx/sbin/nginx -V   
nginx version: nginx/1.0.15   
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-52)   
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 –with-ipv6

第二步,下载最新的openssl的源代码(支持SNI功能的任何版本即可)因为重新编译nginx时会需要制定这个openssl的源代码目录;这里我是放在了nginx源码包的上一层目录;

#cd /root/lnmp0.9-full/  
#wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz  
#tar zxvf openssl-1.0.1c.tar.gz

第三步,重新编译,更新nginx;

#cd nginx-1.0.15
#./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=../openssl-1.0.1c
#make
#mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old 
#cp objs/nginx /usr/local/nginx/sbin/nginx
#make update

注意make的编译选项加上–with-openssl=参数即可开启TLS SNI的支持,注意填写正确的openssl源代码路径;
make编译完成后不要执行make install,直接将objs目录下编译好的新 nginx执行文件copy到原来的路径下替换即可;我的nginx是采用lnmp一键安装包安装的,所以nginx程序路径为 /usr/local/nginx/sbin/nginx,如果不是采用lnmp一键包安装的,请自行调整相关路径;
现在用nginx -V 查看 TLS SNI 支持已经enable了!

#/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.0.15
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-52)
TLS SNI support enable
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

OK,Nginx现在已经可以根据浏览器访问的不同域名,采用不同的CA证书进行SSL加密了!多域名多CA的配置完成!

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 68 queries in 0.068 seconds