LNMP使用多个SSL证书同IP配置多个HTTPS站点记录

更新时间:2018-10-06 分类:网络技术 浏览量:2468

LNMP使用多个SSL证书同IP配置多个HTTPS站点记录

HTTPS是一种趋势,许多开发平台,像苹果,微信等都要求使用HTTPS接入。主要是因为HTTPS采用加密连接,有助于信息安全,减少劫持。特别是Chrome浏览器在访问网站时,如果没有采用HTTPS协议网站,在要求输入密码时,会在网址处提示“不安全”。因此,几番纠结,几番尝试,也为几个小站点采用了HTTPS协议,在此记录一些经历。

使用LNMP/LAMP配置环境,配置HTTPS站点时,相对简单容易。只需要在添加站点时选择是否启用SSL,然后根据提示,配置好SSL证书目录即可。而LNMP1.4测试版,还提供了SSL添加管理,经测试使用,效果还是挺不错的。

同一个IP的服务器有多个站点,如果都启用HTTPS,需要Nginx支持TLS协议的SNI扩展(Server Name Indication,简单地说这个扩展使得在同一个IP上可以以不同的证书serv不同的域名)。SNI扩展还必须有客户端的支持,另外本地的OpenSSL必须支持它。如果启用了SSL支持,Nginx便会自动识别OpenSSL并启用SNI。是否启用SNI支持,是在编译时由当时的 ssl.h 决定的(SSL_CTRL_SET_TLSEXT_HOSTNAME),如果编译时使用的OpenSSL库支持SNI,则目标系统的OpenSSL库只要支持它就可以正常使用SNI了。Nginx在默认情况下是TLS SNI Support Disabled。不过,LNMP1.4测试版默认是TLS SNI Support Enable。因而,使用LNMP1.4测试版配置多个SSL证书的HTTPS站点,则相对容易多。

LNMP1.4测试版本在添加站点时,有选择是否启用SSL。如果前期没有启用SSL,后期也可以通过命令

lnmp ssl add

进行添加。

如果是使用旧版本LNMP,如lnmp0.X版,可以通过升级脚本升LNMP,或者,自行编辑Nginx版本。

启用方法:
需要重新编译nginx并启用TLS。步骤如下:


# wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz
# tar zxvf openssl-1.0.1e.tar.gz 
# ./configure --prefix=/usr/local/nginx --with-http_ssl_module \
--with-openssl=./openssl-1.0.1e \
--with-openssl-opt="enable-tlsext" 
# make
# make install

查看是否启用:


# /usr/local/nginx/sbin/nginx -V
TLS SNI support enabled

启用之后,对站点Nginx配置文件加入以下内容就可以。


server  {
        listen 443;
        server_name   域名1;
        index index.html index.htm index.php;
        root  网站目录;
        ssl on;
        ssl_certificate "/usr/local/nginx/conf/ssl/域名证书-1.cer";
        ssl_certificate_key "/usr/local/nginx/conf/ssl/域名证书-1.key";   
 ......
} 
 
server  {
        listen 443;
        server_name   域名2;
        index index.html index.htm index.php;
        root  网站目录;
        ssl on;
        ssl_certificate "/usr/local/nginx/conf/ssl/域名证书-2.cer";
        ssl_certificate_key "/usr/local/nginx/conf/ssl/域名证书-2.key";   
 ......
}

以上配置参考文章:运维生存时间 》 Nginx 同一个IP上配置多个HTTPS主机

在配置好HTTPS过程中,总是会出现一些别的问题,比如:

1、如果站点启用了百度云加速,一定要先取消或是更改加速方式,不然无法正常启用HTTPS。百度云CDN加速,免费版是不支持HTTPS加速,如果要启用HTTPS加速,就要购买百度云加速套餐。

2、如果采用Let's Encrypt免费证书,可以参考:免费SSL证书Let's Encrypt(certbot)安装使用教程。个人比较推荐使用LNMP1.4测试版添加站点时选择启用SSL时的Let's Encrypt,可以自动生成证书,并定时对证书的90天续期。

3、阿里云ECS,如果建立了多个站点,都想要采用HTTPS,需要注意HTTPS占用CPU资源比HTTP高。如果阿里云ECS配置不高,而站点流量比较大,建议不要全部采用HTTPS访问,可以选择站点配置。

了解Nginx配置等级检测,可以访问这里检测。

相关阅读:免费SSL安全证书Let's Encrypt安装使用教程(附Nginx/Apache配置)