一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS

https://home.cnblogs.com/u/beyang/

一台服务器,两个域名

首先购买https,获取到CA证书,两个域名就得到两套证书

第二步:现在就是Nginx和OpenSSL的安装与配置(这里注意,一般情况下一个IP只支持一个SSL证书,那么我们现在要在一个IP上实现多个SSL证书,就必须让Nginx支持TLS SNI,由于默认的OpenSSL是没有打开TLS SNI的)

1)Nginx支持多域名SSL证书是需要OpenSSL库支持的,CentOS5.X的OpenSSL库本身不支持这种特性,需要重新下载编译,步骤如下:

wget https://www.openssl.org/source/old/0.9.x/openssl-0.9.8zh.tar.gz
tar zxvf ./openssl-0.9.8zh.tar.gz

2)下载Nginx,进行配置

wget http://nginx.org/download/nginx-1.8.0.tar.gz

tar zxf nginx-1.8.0.tar.gz

cd nginx-1.8.0

./configure --prefix=/usr/local/nginx1.8.0 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=../openssl-0.9.8zh

(此处会报错:出现pcre库没找到或zlib没找到,

CentOS下可以使用      yum -y install pcre-devel zlib-devel   进行安装缺失的组件


 make && make install

3)检查Nginx状态

/usr/local/nginx1.8.0/sbin/nginx -V

得到如下结果就说明配置好了:

nginx version: nginx/1.8.0
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-55)
built with OpenSSL 0.9.8zh 3 Dec 2015
TLS SNI support enabled      #可以看到TLS SNI support打开了
configure arguments: --prefix=/usr/local/nginx1.8.0 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=../openssl-0.9.8zh

第三步:

配置Nginx 应用服务器

证书放置到 Nginx/conf/cert  目录下

nginx.conf文件如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
    #access_log  logs/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    #keepalive_timeout  0;
    keepalive_timeout  65;
 
    #gzip  on;
 
 
    upstream shop_wechat {
    server 127.0.0.1:80;   
    }
 
    server {
        listen       443 ssl;
        server_name  www.test1.com;
 
        ssl_certificate      cert/214257281110004.pem;
        ssl_certificate_key  cert/214257281110004.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 / {
            proxy_pass http://shop_wechat;
        }
    }
 
 
    upstream shop_app {
    server 127.0.0.1:1098;
    }
 
    server {
        listen       443 ssl;
        server_name  app.test2.com;
 
        ssl_certificate      cert/214257663690004.pem;
        ssl_certificate_key  cert/214257663690004.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 / {
            proxy_pass http://shop_app;
        }
    }
}

启动Nginx:报错-

nginx: [emerg] getpwnam(“www”) failed错误

错误的原因是没有创建www这个用户,应该在服务器系统中添加www用户组和用户www,如下命令:

#/usr/sbin/groupadd -f www
#/usr/sbin/useradd -g www www

最后:访问下试试看  :https://www.test1.com

[转帖]一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS的更多相关文章

  1. 一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS

    一台服务器,两个域名 首先购买https,获取到CA证书,两个域名就得到两套证书 第二步:现在就是Nginx和OpenSSL的安装与配置(这里注意,一般情况下一个IP只支持一个SSL证书,那么我们现在 ...

  2. RedHat7配置Nginx实现多域名虚拟主机的SSL/TLS认证(实现单IP以不同证书服务于不同域名)

    以RedHat7(64bit)平台为例 如果RedHat源没法用,可以使用EPEL源 # rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-rel ...

  3. 超详细网站博客域名和二级域名、子域名升级HTTPS免费申请SSL证书配置nginx指南

    随着互联网的飞速发展,我们的工作生活已经离不开互联网,HTTP虽然使用极为广泛, 但是存在不小的安全缺陷, 主要是其数据的明文传送和消息完整性检测的缺乏, 而这两点恰好是网络支付,网络交易等网站应用中 ...

  4. 阿里云域名+ 腾讯云服务器 配置nginx

    1,实现目标,通过外网访问域名,能够通过nginx 实现反向代理,以及负载均衡 2,准备工具 阿里云注册的域名: aiyuesheng.com 腾讯云领取的云服务器:centos 7 xshell 6 ...

  5. 一个ip, 两个域名, 两个ssl, 访问多个不同的项目

    在前面一篇中说过, 入了好几个坑. 后来使用了nginx+tomcat配置的方式. 终于成功了. 因为头一次使用nginx, 不知道具体怎么操作, 于是我在操作的时候, 按照以下几个步骤执行的: 导航 ...

  6. 主机配置nginx后如何获取访问者IP

    he你早的时候写了一个根据访问者ip查询天气的小接口,那时候还没得买域名,没有搞nginx,测试自然没有问题,然后随着一个小工具一块上线了,今天突然发现我的小工具有好几个人在使用了,就想写一个记录访问 ...

  7. 配置Nginx支持SSL SNI(一个IP绑定多个证书) 以及Haproxy实现多域名证书

    概述 传统的每个SSL证书签发,每个证书都需要独立ip,假如你编译openssl和nginx时候开启TLS SNI (Server Name Identification) 支持,这样你可以安装多个S ...

  8. win2003 多域名绑定一个ip

    一个IP绑定多个域名 很多虚拟主机,只有一个IP,很多个域名都指向该IP,但都能访问自己域名所在 的网站的内容,这就是一个IP绑定多个域名的技术. 我们得先了解一个概念 什么是主机头所谓的主机头的叫法 ...

  9. apache一个IP一个端口对应多个域名

    一个IP一个端口对应多个域名: NameVirtualHost XXX.XXX.XXX.XXX:80 <VirtualHost XXX.XXX.XXX.XXX:80> ServerAdmi ...

随机推荐

  1. 获取Spring容器Bean对象工具类

    在开发中,总是能碰到用注解注入不了Spring容器里面bean对象的问题.为了解决这个问题,我们需要一个工具类来直接获取Spring容器中的bean.因此就写了这个工具类,在此记录一下,方便后续查阅. ...

  2. (转)Spring Boot(三):Spring Boot 中 Redis 的使用

    http://www.ityouknow.com/springboot/2016/03/06/spring-boot-redis.html Spring Boot 对常用的数据库支持外,对 Nosql ...

  3. Codeforces Round #546 (Div. 2) C. Nastya Is Transposing Matrices

    C. Nastya Is Transposing Matrices time limit per test 1 second memory limit per test 256 megabytes i ...

  4. ThreadLocal源码调试——“this”作为key

    前言:在一次面试过程中被问到ThreadLocal,大家都知道ThreadLocal可以为每个线程单独提供一个副本,从而实现变量间的隔离.在ThreadLocal中set和get操作的key是什么,T ...

  5. centos7下安装docker(16.1docker跨主机存储--Rex-Ray)

    一.Rex-Ray以standalone进程的方式运行在docker主机上,安装方法很简单:在docker1和docker2上运行如下命令: curl -sSL https://dl.bintray. ...

  6. Python单元测试框架 unittest详解

    一 整体结构概览 unittest原名为PyUnit,是由java的JUnit衍生而来.对于单元测试,需要设置预先条件,对比预期结果和实际结果. TestCase :通过继承TestCase类,我们可 ...

  7. 转://Oracle Golden Gate 概念和原理

    引言:Oracle Golden Gate是Oracle旗下一款支持异构平台之间高级复制技术,是Oracle力推一种HA高可用产品,简称“OGG”,可以实现Active-Active 双业务中心架构 ...

  8. 给大家推荐一个C#下的Ribbon风格的Forms实现示例-含源码

    C#下的Ribbon风格的Forms实现示例:源码下载地址

  9. AI VGG16

    VGG(Visual Geometry Group) 16 参考链接: https://arxiv.org/abs/1409.1556

  10. WPF在Canvas中绘图实现折线统计图

    最近在WPF中做一个需要实现统计的功能,其中需要用到统计图,之前也没有接触过,度娘上大多都是各种收费或者免费的第三方控件,不想用第三方控件那就自己画一个吧. 在园子还找到一篇文章,思路来自这篇文章,文 ...