Code前端首页关于Code前端联系我们

Nginx 实现多域名证书的 HTTPS 配置:一个 IP 对应多个域名,多个 SSL 证书

terry 2年前 (2023-09-28) 阅读数 62 #未命名

一台服务器,两个域名。

首先购买https并获取CA证书。您将收到两个域名的两套证书。

第二步:现在是Nginx和OpenSSL的安装和配置(这里注意,一个IP一般只支持一个SSL证书,所以如果我们想在一个IP上部署多个SSL证书,我们需要使用Nginx有这个支持。TLS SNI,因为标准 OpenSSL 不启用 TLS SNI)。

1)Nginx对多域SSL证书的支持需要OpenSSL库的支持。 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

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 版本: nginx/1.8.0
built by gcc 4.1.2 20080704 (Red Hat)
built with OpenSSL 0.9.8zh December 3, 2015
启用 TLS SNI 支持 #您可以看到 TLS SNI -启用支持
配置参数:--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文件夹中

文件如下

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 error

错误原因是www用户还没有创建。需要将www用户组和用户www添加到服务器系统中,如下:

#/usr/sbin /groupadd -f www

#/usr/sbin/useradd -g www www

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门