nginx配置多个SSL证书

首先是Nginx的版本

版本的话,是支持的:

图片说明

然后是nginx的配置

我配置了两个文件:

server {
        listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
        server_name example.cn;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
        root /var/www/html;
        index index.html index.htm;
        ssl_certificate cert/3292735_example.cn.pem;   #将domain name.pem替换成您证书的文件名。
        ssl_certificate_key cert/3292735_example.cn.key;   #将domain name.key替换成您证书的密钥文件名。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
        ssl_prefer_server_ciphers on;
        location / {
        #       root html;   #站点目录。
                index index.html index.htm;
        }

}
server {
        listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
        server_name app.example.cn;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
        root /var/www/app;
        index index.html index.htm index.php;
        ssl_certificate cert/3292893_app.example.cn.pem;   #将domain name.pem替换成您证书的文件名。
        ssl_certificate_key cert/3292893_app.example.cn.key;   #将domain name.key替换成您证书的密钥文件名。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
        ssl_prefer_server_ciphers on;
        location / {
        #       root app;   #站点目录。
                index index.html index.htm;
        }
}

这样配置后,使用nginx -t检查无错,但是在访问www.example.cn的时候,出现了问题:

图片说明

请问是哪里的配置出现了问题吗?

没问题,这是ssl配置成功了,只是这个证书不是公认的。

是的,你的证书是自己生成的么?买付费的ssl证书,或者也有一些免费的,用那些来生成的证书才是被认可的。免费的有一个工具是certbot-auto,可以百度一下,用这个生成的证书可以用,前提是你要有自己的可公网访问的域名。

nginx1.6已开启TLS SNI support enabled,各域名都有自己的ssl证书,但还是只能访问其中一个https域名,访问其他的https域名默认跳到默认的https,怎么办?