nginx多站点,ssl偏爱第一个证书

一个老旧的系统上,部署了nginx及php,今天启用新的ssl证书,在nginx上做了设置,执行nginx -t语法检查没有问题。但重载nginx以后,浏览器访问站点失败,提示证书问题,查看证书,确是同一个nginx下另外一个站点的证书。

再查那个站点的配置,也启用的自己的ssl证书,但这个证书早过期了。于是咨询其它人,问能不能临时把这个ssl配置给取消掉,反正也是过期的证书,也没啥用。再保证不影响其它业务的前提下,我把配置文件(nginx主配置文件以include形式包含单独的文件,不是那种include *.conf,我最反对这样写)做好备份,接着把监听443端口的配置稀里哗啦全部干掉。重载nginx,再访问站点,还是不行,但证书变了,变成另一个站点的证书。

在看主配置文件nginx.conf的include 行的顺序,发现该站点是继承第一个站点的证书(按include 的顺序),那好,我把这个不能访问的站点的配置,写到第一行。

重载nginx,果然变成自己的证书了,访问也正常。

由此可以初步判断,可能是nginx支持多站点证书的问题,拿nginx多站点证书做关键词搜索,果然如我所猜测。需要nginx支持SSL SNI,默认的版本没有显示的支持,需要重新编译nginx,由于目前不能停止业务,先算一卦,看哪天是黄道吉日,然后再夜间做计划性维护。

原文地址:http://blog.51cto.com/sery/2161288

时间: 2024-08-30 09:21:41

nginx多站点,ssl偏爱第一个证书的相关文章

https(ssl)免费证书申请及nginx配置https(ssl)

首先推荐免费证书的申请url:https://freessl.org/ 然后就是上面证书申请的流程,这里可以参考一篇阿里云里面的博文(我会补充一些细节): https://yq.aliyun.com/articles/225669?spm=5176.10695662.1996646101.searchclickresult.1da01cb9Hyk86J freessl免费证书申请补充: 一.补充一下配置DNS验证的流程,我这里用的是阿里云: 然后点击添加记录 确定 完成,全选,启用一下就可以了:

Nginx自签ssl证书创建及配置方法

场景: Nginx使用自签ssl证书实现https连接. 方法: 第一步:使用OpenSSL创建证书 #建立服务器私钥(过程需要输入密码,请记住这个密码)生成RSA密钥 >openssl genrsa -des3 -out server.key 1024 #生成一个证书请求     >openssl req -new -key server.key -out server.csr #需要依次输入国家,地区,组织,email.最重要的是有一个common name,可以写你的名字或者域名.如果为

Nginx 下配置SSL证书的方法

1.Nginx 配置 ssl 模块 默认 Nginx 是没有 ssl 模块的,而我的 VPS 默认装的是 Nginx 0.7.63 ,顺带把 Nginx 升级到 0.7.64 并且 配置 ssl 模块方法如下: 下载 Nginx 0.7.64 版本,解压 进入解压目录: 复制代码代码如下: wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz tar zxvf nginx-0.7.64.tar.gz cd nginx-0.7.64 如果要更改header

CentOS6.5 下在Nginx中添加SSL证书以支持HTTPS协议访问

参考文献: 1. NginxV1.8.0安装与配置 2. CentOS下在Nginx中添加SSL证书以支持HTTPS协议访问 3. nginx配置ssl证书的方法 4.nginx强制使用https访问(http跳转到https) 5.nginx ssl 107 (net::ERR_SSL_PROTOCOL_ERROR) 无法与服务器建立安全连接 解决方法 配置过程如下: 我的nginx是 yum 安装 具体安装过程参考:[转]CENTOS 6.5 配置YUM安装NGINX+服务器负载均衡 一.安

Nginx配置免费SSL证书StartSSL,解决Firefox不信任问题

先在StartSSL上申请免费一年的SSL证书,具体过程网上很多教程.然后把申请到的key和crt文件上传到服务器,比如/usr/local/nginx/certs/. Nginx配置SSL证书 直接贴上我的nginx的部分配置: server { listen 443; server_name domain.com www.domain.com ; ssl on; ssl_certificate /usr/local/nginx/ssl/ssl.crt; ssl_certificate_key

nginx配置免费ssl证书支持https安全访问

1.自行颁发不受浏览器信任的SSL证书: HTTPS的SSL证书可以自行颁发,Linux下的颁发步骤如下: openssl genrsa -des3 -out www.aaa.com.key 1024 openssl req -new -key www.aaa.com.key -out www.aaa.com.csr openssl rsa -in www.aaa.com.key -out www.aaa.com_nopass.key Nginx.conf的SSL证书配置,使用www.aaa.c

nginx多域名ssl证书以及lua模块的编译安装

#!/bin/bash #unzip zip&tar file function  untarfile(){ for i in $( ls . |grep -v .sh) do val=$(echo $i | grep ".zip$" |wc -l) if [[ "$val"  -eq  1 ]];then dirname=$(echo $i|sed "s/.zip//") if [[ ! -d $dirname ]];then echo

nginx安装Lets Encrypt SSL免费HTTPS加密证书

Linux Nginx网站:Certbot安装配置Lets Encrypt SSL免费HTTPS加密证书 原文地址:https://renwole.com/archives/157 实验环境:CentOS Linux release 7.2内核版本:Linux version 3.10.0-514.26.2.el7.x86_64Nginx版本: Nginx-1.13.0 Let's Encrypt是一个免费的.自动化.开放的证书颁发机构.由Mozilla.Cisco.Chrome.faceboo

centos安装nginx并配置SSL证书

centos安装nginx并配置SSL证书 安装nginx的命令 sudo yum install epel-release sudo yum install nginx 让nginx随系统启动而启动 sudo systemctl enable nginx 常用命令 启动:nginx 停止:nginx -s stop 重载配置:nginx -s reload 配置路径:/etc/nginx/ 日志路径:/var/log/nginx 打开配置文件 在HTTP节点下配置两个server节点,其他不变