我正在配置具有公共和私有IP的服务器。它没有任何关联的域名。
使用自签名证书访问以下URL可正常运行:
https://<PUBLIC IP>:8443
但是,当我尝试使用其私有IP访问该服务器时:
wget https://<PRIVATE IP>:8443
我收到以下错误:
错误:无法验证证书,由'/ C =?/ ST =?/ L =?/ O =?/ OU =?/ CN =未知'发出: 遇到自签名证书。 错误:证书通用名称“未知”与请求的主机名“'不匹配。 要不安全地连接,请使用`--no-check-certificate'。
有没有办法在配置中指定应该接受公共IP和私有IP?
我还尝试在server.xml中包含多个连接器,其中包含address属性,但它不起作用。
答案 0 :(得分:1)
您可以使用两个主机(公共和私有IP)创建证书,如下所述:
http://apetec.com/support/GenerateSAN-CSR.htm
使用openssl
配置带有SubjectAltName的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