在 nginx 中在内存中共享两个 SSL 通配符证书

在 nginx 中在内存中共享两个 SSL 通配符证书

我有一个运行着两个 IP 地址的 nginx 服务器,比如1.2.3.44.3.2.1。此外,还有两个通配符 SSL 证书,分别用于*.example.net(即wc1,指向1.2.3.4)和*.sub.example.net(即wc2,指向4.3.2.1)。

nginx 文档提到您可以在实例之间共享通配符证书,server如下所示:

ssl_certificate      wc1.crt;
ssl_certificate_key  wc1.key;

server {
    listen           1.2.3.4:443;
    server_name      www.example.net;
    ssl              on;
    ...
}

server {
    listen           1.2.3.4:443;
    server_name      test.example.net;
    ssl              on;
    ...
}

但是,我想知道同样的构造是否也可以用于第二个通配符证书。两个域名都有大约 500 个子域名。

ssl_certificate由于现在该构造是全球性的,它们是否不会混淆呢?

答案1

尝试这个:

server {
    listen           1.2.3.4:443 default_server ssl;
    server_name      _;
    ssl_certificate      wc1.crt;
    ssl_certificate_key  wc1.key;
}

server {
    listen           4.3.2.1:443 default_server ssl;
    server_name      _;
    ssl_certificate      wc2.crt;
    ssl_certificate_key  wc2.key;
}

server {
    listen           1.2.3.4:443 ssl;
    server_name      www.example.net;
    ...
}

server {
    listen           1.2.3.4:443 ssl;
    server_name      test.example.net;
    ...
}

server {
    listen           4.3.2.1:443 ssl;
    server_name      www.sub.example.net;
    ...
}

server {
    listen           4.3.2.1:443 ssl;
    server_name      test.sub.example.net;
    ...
}

我可以肯定,这种方法肯定适用于一个通配符证书,所以希望它可以适用于两个或更多通配符证书。

信用:https://serverfault.com/a/548942/185775

答案2

ssl_certificate指令既可以在块级别使用http(在这种情况下它适用于所有server块),也可以server在级别使用(在这种情况下它仅适用于该特定块)。如果您想使用不同的证书,只需在相应的块内server定义即可。ssl_certificateserver

相关内容