2012-03-06 5 views
1

Я добавил два сертификата в хранилище ключей (jboss) моего сервера с именем домена как в качестве «localhost». Итак, теперь, если локальный клиент обращается к серверу, какой из сертификатов будет отправлен клиенту.
В jboss нет ошибки, и она работает нормально. Я просто хочу знать, как jboss выбирает, какой сертификат отправить?

Список содержимого доверительного хранилища, используемого программой java.два сертификата с одинаковым доменным именем

Your keystore contains 2 entries 

tomcat, 5 Mar, 2012, trustedCertEntry, 
Certificate fingerprint (SHA1): B0:F0:98:5F:E5:D0:D6:24:58:B6:38:07:97:38:95:D5: 
AB:28:E1:1E 
tomcat1, 6 Mar, 2012, trustedCertEntry, 
Certificate fingerprint (SHA1): C4:2B:E8:14:F9:85:5A:05:F2:1F:58:AE:65:FB:0E:8F: 
DD:23:97:87 


как и кот tomcat1 обратитесь в cn=localhost
Листинг содержимого keysttore, используемого JBoss.
типа Keystore: JKS поставщик Keystore: Вс

Ваше хранилище ключей содержит 2 записей

tomcat, 5 Mar, 2012, PrivateKeyEntry, 
Certificate fingerprint (SHA1): B0:F0:98:5F:E5:D0:D6:24:58:B6:38:07:97:38:95:D5: 
AB:28:E1:1E 
tomcat1, 6 Mar, 2012, PrivateKeyEntry, 
Certificate fingerprint (SHA1): C4:2B:E8:14:F9:85:5A:05:F2:1F:58:AE:65:FB:0E:8F: 
DD:23:97:87<br> 


Показано запись хранилищу, используя й список Keytool в "-v" вариант ASPER запрос Кевина.

Keystore type: JKS 
Keystore provider: SUN 

Your keystore contains 2 entries 

Alias name: tomcat 
Creation date: 5 Mar, 2012 
Entry type: PrivateKeyEntry 
Certificate chain length: 1 
Certificate[1]: 
Owner: CN=localhost 
Issuer: CN=localhost 
Serial number: 5aaac34c 
Valid from: Mon Mar 05 15:04:46 IST 2012 until: Sun Jun 03 15:04:46 IST 2012 
Certificate fingerprints: 
     MD5: 6A:9D:10:37:4F:98:7F:85:D5:93:95:CC:C3:84:07:D8 
     SHA1: B0:F0:98:5F:E5:D0:D6:24:58:B6:38:07:97:38:95:D5:AB:28:E1:1E 
     SHA256: FB:F5:BC:9F:17:E9:28:8C:77:1B:40:17:8B:D3:12:71:05:0D:CF:9C 
99:00:C4:25:76:46:CE:E0:0C:E6:6B 
     Signature algorithm name: SHA256withRSA 
     Version: 3 

Extensions: 

#1: ObjectId: 2.5.29.14 Criticality=false 
SubjectKeyIdentifier [ 
KeyIdentifier [ 
0000: F6 B3 2E B5 A0 76 78 7E 9D B6 2A D6 4A 6A 8D 96 .....vx...*.Jj.. 
0010: FA 7D 47 9B          ..G. 
] 
] 



******************************************* 
******************************************* 


Alias name: tomcat1 
Creation date: 6 Mar, 2012 
Entry type: PrivateKeyEntry 
Certificate chain length: 1 
Certificate[1]: 
Owner: CN=localhost 
Issuer: CN=localhost 
Serial number: 4891416 
Valid from: Tue Mar 06 06:41:21 IST 2012 until: Mon Jun 04 06:41:21 IST 2012 
Certificate fingerprints: 
     MD5: B9:31:FE:75:E9:28:E6:BC:F2:94:60:93:7B:0C:00:63 
     SHA1: C4:2B:E8:14:F9:85:5A:05:F2:1F:58:AE:65:FB:0E:8F:DD:23:97:87 
     SHA256: 58:7B:D3:A1:2C:8E:C1:C9:26:0A:9F:A1:86:D1:79:76:34:D2:83:6A 
88:0C:E1:36:F5:88:3F:DC:F7:D7:89 
     Signature algorithm name: SHA256withRSA 
     Version: 3 

Extensions: 

#1: ObjectId: 2.5.29.14 Criticality=false 
SubjectKeyIdentifier [ 
KeyIdentifier [ 
0000: F1 BF 69 B4 CA D6 9E 72 AC C3 26 9F CD 57 58 7A ..i....r..&..WXz 
0010: 62 19 8B B8          b... 
] 
] 



******************************************* 
******************************************* 

ответ

1

По умолчанию, JBoss (или Apache Tomcat) будет использовать по умолчанию задает значение по умолчанию X509KeyManager, чтобы выбрать, какой сертификат использовать: он выберет первый найденный в хранилище ключей, который действителен для типа ключа (например, RSA для набора шифров на основе RSA) и во время соединения.

В противном случае, если псевдоним явно указан в keyAlias, он выберет сертификат в этом псевдониме (и он не будет работать, если тип ключа неверен).

Если, вместо этого, имя пользовательского класса, реализующего SSLImplementation задается в атрибуте SSLImplementation, он будет использоваться, чтобы обеспечить SSLSocketFactory (так что выбор псевдонима будет сделано, однако его SSLContext/KeyManager настроен).

Поддержка указателя имени сервера (SNI), что позволит администратору ключей использовать запрошенное имя хоста, чтобы сделать выбор, was only introduced in Java 7, and only on the client side, поэтому JSSE не может использовать его на стороне сервера в настоящее время.

1

Что именно вы пытаетесь достичь? Сертификаты хранятся в хранилище ключей и представляются пользователю на основе совпадения имени хоста. Это неверно, см. Ниже.

Логически говоря, на нем будет загружен только один из них, который, в свою очередь, будет обслуживаться пользователем.

--Edit--
Пытаясь упростить, указывая на другой link

  1. Say вы указываете "keyAlias" в вашей конфигурации JBoss в "мартовский кот"; то псевдоним Tomcat будет подобран
  2. Если не указать псевдоним, то «будет использоваться первый ключ чтения в хранилище»
+0

Я знаю, что и это то, что происходит. Как я уже упомянул в своем вопросе, что он работает отлично.Я ожидал, что он покажет ошибку. – Ashwin

+0

Дал еще несколько соображений и мне любопытно узнать, действительно ли в магазине отображаются два сертификата. Когда вы импортируете второй сертификат (с тем же именем), он будет отменять первый. Можете ли вы отобразить содержимое хранилища ключей? – bubbly

+0

: Я проверю это и дам вам знать. – Ashwin