2017-07-24 5 views
0

Wir haben eine Server-Zertifikatkette bekamen in .p7b Format von unseren Kunden, und wir müssen unsere Kunden Vertrauensspeicher exportieren drei mit Java/Scala APIExport Server Vertrauen Zertifikatskette unter einer Alias ​​trusts

Ihrer cert-Datei enthält Zertifikate: root, intermediate, actual server ...

Wie können wir drei von ihnen in unseren Trust-Store unter demselben Alias ​​exportieren?

Ist es tatsächlich erforderlich, sie unter einem Alias ​​zu exportieren?

Dies ist, was wir bisher ... tat

//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) 

Wenn Sie sehen, wie wir Zert einfügen, verwendet es drei Aliasnamen mit Suffix -1, -2, -3, so dass wir am Ende bis einfügen drei Einträge in die Trusts, nicht sicher, ob dies ist das Recht der cert Kette einfügen ..

  1. gibt es eine Möglichkeit, die cert Kette unter einem Alias ​​einfügen?

  2. Wie findet der Client die übereinstimmende Serververtrauensstellung? benutzt es Alias? Benötigt der Client auch nur das Server-Root-Zertifikat? oder es braucht alle drei?

Dank

Antwort

1

es 1.Is eine Möglichkeit, die cert Kette unter einem Alias ​​einfügen?

Nein, jedes vertrauenswürdiges Zertifikat hat eine Alias ​​

Ein Alias ​​identifiziert einen eindeutigen vertrauenswürdigen Zertifikat-Eintrag, einen privaten Schlüssel Eintrag oder einen geheimen Schlüssel-Eintrag. Ein privater Schlüsseleintrag kann auch von einer Zertifikatskette des entsprechenden öffentlichen Schlüssels begleitet werden.

2 Wie findet der Client die entsprechende Serververtrauensstellung? benutzt es Alias? Benötigt der Client auch nur das Server-Root-Zertifikat? oder es braucht alle drei?

Sie müssen nur das Stammzertifikat in den Truststore importieren. Der Alias ​​wird nicht benötigt

Der Client erhält während einer Verbindung das Serverzertifikat und die Zertifizierungskette (ohne Root). Es wird versuchen, das letzte Zertifikat der Kette von Blatt zu Upper mit einigen Zertifikaten des Truststore zu vergleichen. Dies erfolgt, indem überprüft wird, ob die Signatur des Zertifikats dem öffentlichen Schlüssel des Wurzelzertifikats

entspricht
Verwandte Themen