Экспорт цепочки сертификатов доверия сервера в Truststore под одним псевдонимом

Мы получили цепочку сертификатов сервера в формате .p7b от нашего клиента, и нам нужно экспортировать в наше хранилище доверенных сертификатов клиента с помощью Java / Scala API.

Их файл сертификата содержит три сертификата: корневой, промежуточный, фактический сервер ...

Как мы можем экспортировать три из них в наше хранилище доверенных сертификатов под одним и тем же псевдонимом?

Действительно ли требуется экспортировать их под одним псевдонимом?

Это то, что мы сделали до сих пор ...

//load default cacerts first in order to export the server cert
val keystore = KeyStore.getInstance(KeyStore.getDefaultType)
keystore.load(new FileInputStream(cacertsPath), decryptedPass.toCharArray)

val cf = CertificateFactory.getInstance("X.509")
//this is the server cert we are trying to export 
val bais = fullStream(customTrustFile)  
val certs = cf.generateCertificates(bais) -->  this returns a chain of 3 certs

certs.toArray[Certificate](new Array[Certificate](certs.size())).zipWithIndex.foreach {
    case (cert, i) => keystore.setCertificateEntry("api.*.*.site-" + i, cert)

// Save the new keystore contents
keystore.store(new FileOutputStream(cacertsPath),decryptedPass.toCharArray)

Если вы видите, как мы вставляем сертификаты, он использует три псевдонима с суффиксом -1, -2, -3, поэтому мы в конечном итоге вставляем три записи в хранилище доверенных сертификатов, не уверенные, что это право вставки цепочки сертификатов.

  1. Есть ли способ вставить цепочку сертификатов под одним псевдонимом?

  2. Как клиент находит соответствующее доверие сервера? он использует псевдоним? Также клиенту требуется только корневой сертификат сервера? или для этого нужны все три?

Спасибо


person SurMan    schedule 24.07.2017    source источник


Ответы (1)


1.Есть ли способ вставить цепочку сертификатов под одним псевдонимом?

Нет, у каждого доверенного сертификата есть один псевдоним

Псевдоним идентифицирует уникальную запись доверенного сертификата, запись секретного ключа или запись секретного ключа. Запись частного ключа также может сопровождаться цепочкой сертификатов соответствующего открытого ключа.

2 Как клиент находит соответствующее доверие сервера? он использует псевдоним? Также клиенту требуется только корневой сертификат сервера? или для этого нужны все три?

Вам нужно только импортировать корневой сертификат в хранилище доверенных сертификатов. Псевдоним не нужен

Клиент во время соединения получит сертификат сервера и цепочку сертификации (без корня). Он попытается сопоставить последний сертификат цепочки от листа до верхнего с некоторыми сертификатами доверенного хранилища. Это делается для проверки того, что подпись сертификата соответствует открытому ключу корневого сертификата.

person pedrofb    schedule 24.07.2017