gpt4 book ai didi

tomcat - 公共(public)和私有(private) IP 的自签名证书 (Tomcat 7)

转载 作者:行者123 更新时间:2023-11-28 22:53:26 24 4
gpt4 key购买 nike

我正在配置一个同时具有公共(public) IP 和私有(private) IP 的服务器。它没有任何关联的域名。

使用自签名证书访问以下 URL 可以正常工作:

    https://<PUBLIC IP>:8443

但是,当我尝试使用其私有(private) IP 访问该服务器时:

    wget https://<PRIVATE IP>:8443

我收到以下错误:

ERROR: cannot verify 's certificate, issued by '/C=?/ST=?/L=?/O=?/OU=?/CN=Unknown': Self-signed certificate encountered. ERROR: certificate common name 'Unknown' doesn't match requested host name ''. To connect to insecurely, use `--no-check-certificate'.

有没有办法在配置中指定同时接受公共(public) IP 和私有(private) IP?

我还尝试在包含地址属性的 server.xml 中包含多个连接器,但它不起作用。

最佳答案

您可以使用两个主机(公共(public) IP 和私有(private) IP)创建证书,如下所述:

http://apetec.com/support/GenerateSAN-CSR.htm

使用 SubjectAltName 和 openssl 配置 ssl 请求

使用多个域证书,您可以仅使用一个证书来保护大量域。主题备用名称是 X509 版本 3 (RFC 2459) 的扩展,允许 SSL 证书指定证书应匹配的多个名称。 SubjectAltName 可以包含电子邮件地址、IP 地址、常规 DNS 主机名等。这使用称为 SubjectAlternativeName(或简称 SAN)的 SSL 功能。

生成证书请求文件

对于通用 SSL 证书请求 (CSR),openssl 不需要太多操作。由于我们要向 CSR 添加一两个 SAN,因此我们需要向 openssl conf 文件添加一些内容。您需要告诉 openssl 创建一个包含 x509 V3 扩展的 CSR,您还需要告诉 openssl 在您的 CSR 中包含主题替代名称列表。

创建一个启用主题备用名称的 openssl 配置文件 (openssl.cnf):在 [req] 部分。这是告诉 openssl 如何处理证书请求 (CSR) 的部分。该部分中应该有一行以 req_extensions 开头。我们希望它的内容如下:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

这告诉 openssl 在 CSR 中包含 v3_req 部分。现在我们将自己转到 v3_req 部分并确保它包括以下内容:

[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = US
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = MN
localityName = Locality Name (eg, city)
localityName_default = Minneapolis
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Domain Control Validated
commonName = Internet Widgits Ltd
commonName_max = 64

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = kb.example.com
DNS.2 = helpdesk.example.org
DNS.3 = systems.example.net
IP.1 = 192.168.1.1
IP.2 = 192.168.69.14

生成私钥您需要确保您的服务器已创建私钥:

openssl genrsa -out san_domain_com.key 2048

创建 CSR 文件

然后使用以下方法生成 CSR:

openssl req -new -out san_domain_com.csr -key san_domain_com.key -config openssl.cnf

系统将提示您提供有关您的组织的信息,并询问您是否要包含密码(您不需要)。然后它将在没有太多反馈的情况下结束。但是可以看到已经创建了san_domain_com.csr。

我们可以使用以下命令查看 csr 包含的内容:

openssl req -text -noout -in san_domain_com.csr  

您应该会看到如下所示的输出。注意主题备用名称部分:

Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=US, ST=Texas, L=Fort Worth, O=My Company, OU=My Department, CN=server.example
Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit)
Modulus (2048 bit): blahblahblah
Exponent: 65537 (0x10001)
Attributes:
Requested Extensions: X509v3
Basic Constraints: CA:FALSE
X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Alternative Name: DNS:kb.example.com, DNS:helpdesk.example.com
Signature Algorithm: sha1WithRSAEncryption
blahblahblah

现在我们有了一个新的 CSR。但是,当然,我们必须签署它。

自签名并创建证书:

openssl x509 -req -days 3650 -in san_domain_com.csr -signkey san_domain_com.key
-out san_domain_com.crt-extensions v3_req -extfile openssl.cnf

关于tomcat - 公共(public)和私有(private) IP 的自签名证书 (Tomcat 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33494750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com