一个客户端能否使用一个通用证书对多个Nginx服务器进行身份验证?

我有一个nginx docker,我会在不同的IP上启动多个服务器。但对这个服务器进行调用的目标客户端始终只有两个。我正在尝试使用SSL为我的服务器启用安全性。

为了在本地尝试SSL,我使用我的本地IP 127.0.0.1创建了一个自签名证书,并在我的nginx.config中进行了配置。我在我的python请求中使用生成的证书,如下所示,我能够获得正确的响应。

resp = requests.get(uri, verify='newserv.crt')

我使用以下命令生成密钥

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout newserv.key -out newserv.crt -config ssl_config.cnf

ssl_config的内容如下

[req]
default_bits  = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
countryName = XX
stateOrProvinceName = N/A
localityName = N/A
organizationName = NginxProxy
[req_ext]
subjectAltName = @alt_names
[v3_req]
subjectAltName = @alt_names
[alt_names]
IP.1 = 127.0.0.1

我在nginx中有一个脚本来更新每个IP的ssl_config,因此SSL_config将如下所示

[req]
    default_bits  = 2048
    distinguished_name = req_distinguished_name
    req_extensions = req_ext
    x509_extensions = v3_req
    prompt = no
    [req_distinguished_name]
    countryName = XX
    stateOrProvinceName = N/A
    localityName = N/A
    organizationName = NginxProxy
    [req_ext]
    subjectAltName = @alt_names
    [v3_req]
    subjectAltName = @alt_names
    [alt_names]
    IP.1 = "hostedIP"

脚本将处理使用最新的ssl_config生成证书

是否有一种方法可以使客户端使用一个通用证书对所有这些服务器进行身份验证,而无需在每次部署新IP的新服务器时对客户端进行任何更改?

点赞