2015-11-03 40 views
0

我正在配置一個同時擁有公共和私有IP的服務器。它沒有任何關聯的域名。公共和私有IP的自簽名證書(Tomcat 7)

使用自簽名證書來訪問以下網址正常工作:

https://<PUBLIC IP>:8443 

然而,當我嘗試使用私網訪問該服務器:

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和p應該接受內部知識產權?

我也嘗試在server.xml中包含多個連接器,其中包含address屬性,但它不起作用。

回答

1

您可以創建具有兩個主機(公共和私有IP)證書如下解釋:

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

配置SSL請求用的SubjectAltName使用OpenSSL

由於多域證書可以保護只有一個證書的域數量更多。使用替代名稱是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的,包括在客戶服務代表的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。

我們可以在什麼企業社會責任包含以下命令來看一看:

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 
+0

雖然此鏈接可以回答這個問題,最好是在這裏有答案的主要部件,並提供鏈接以供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 –

+0

@LarryShatzer好的,我將添加必要的部分。謝謝你讓我知道 。 – Developer