Allow the reconciliation client to trust multiple CA certificates to facilitate certificate rotation
This commit is contained in:
		
							parent
							
								
									0120a85c39
								
							
						
					
					
						commit
						e7048aa9cf
					
				| 
						 | 
					@ -115,28 +115,29 @@ directory:
 | 
				
			||||||
    - replicationName: example           # CDS replication name
 | 
					    - replicationName: example           # CDS replication name
 | 
				
			||||||
      replicationUrl: cds.example.com    # CDS replication endpoint base url
 | 
					      replicationUrl: cds.example.com    # CDS replication endpoint base url
 | 
				
			||||||
      replicationPassword: example       # CDS replication endpoint password
 | 
					      replicationPassword: example       # CDS replication endpoint password
 | 
				
			||||||
      replicationCaCertificate: |        # CDS replication endpoint TLS certificate trust root
 | 
					      replicationCaCertificates:         # CDS replication endpoint TLS certificate trust root
 | 
				
			||||||
        -----BEGIN CERTIFICATE-----
 | 
					        - |
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          -----BEGIN CERTIFICATE-----
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        AAAAAAAAAAAAAAAAAAAA
 | 
					          ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789+abcdefghijklmnopqrstuvwxyz
 | 
				
			||||||
        -----END CERTIFICATE-----
 | 
					          AAAAAAAAAAAAAAAAAAAA
 | 
				
			||||||
 | 
					          -----END CERTIFICATE-----
 | 
				
			||||||
 | 
					
 | 
				
			||||||
directoryV2:
 | 
					directoryV2:
 | 
				
			||||||
  client: # Configuration for interfacing with Contact Discovery Service v2 cluster
 | 
					  client: # Configuration for interfacing with Contact Discovery Service v2 cluster
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,9 @@
 | 
				
			||||||
package org.whispersystems.textsecuregcm.configuration;
 | 
					package org.whispersystems.textsecuregcm.configuration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.fasterxml.jackson.annotation.JsonProperty;
 | 
					import com.fasterxml.jackson.annotation.JsonProperty;
 | 
				
			||||||
 | 
					import javax.validation.constraints.NotBlank;
 | 
				
			||||||
import javax.validation.constraints.NotEmpty;
 | 
					import javax.validation.constraints.NotEmpty;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class DirectoryServerConfiguration {
 | 
					public class DirectoryServerConfiguration {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +25,7 @@ public class DirectoryServerConfiguration {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @NotEmpty
 | 
					  @NotEmpty
 | 
				
			||||||
  @JsonProperty
 | 
					  @JsonProperty
 | 
				
			||||||
  private String replicationCaCertificate;
 | 
					  private List<@NotBlank String> replicationCaCertificates;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public String getReplicationName() {
 | 
					  public String getReplicationName() {
 | 
				
			||||||
    return replicationName;
 | 
					    return replicationName;
 | 
				
			||||||
| 
						 | 
					@ -37,8 +39,8 @@ public class DirectoryServerConfiguration {
 | 
				
			||||||
    return replicationPassword;
 | 
					    return replicationPassword;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public String getReplicationCaCertificate() {
 | 
					  public List<String> getReplicationCaCertificates() {
 | 
				
			||||||
    return replicationCaCertificate;
 | 
					    return replicationCaCertificates;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,7 +54,7 @@ public class DirectoryReconciliationClient {
 | 
				
			||||||
  private static Client initializeClient(DirectoryServerConfiguration directoryServerConfiguration)
 | 
					  private static Client initializeClient(DirectoryServerConfiguration directoryServerConfiguration)
 | 
				
			||||||
      throws CertificateException {
 | 
					      throws CertificateException {
 | 
				
			||||||
    KeyStore trustStore = CertificateUtil.buildKeyStoreForPem(
 | 
					    KeyStore trustStore = CertificateUtil.buildKeyStoreForPem(
 | 
				
			||||||
        directoryServerConfiguration.getReplicationCaCertificate());
 | 
					        directoryServerConfiguration.getReplicationCaCertificates().toArray(new String[0]));
 | 
				
			||||||
    SSLContext sslContext = SslConfigurator.newInstance()
 | 
					    SSLContext sslContext = SslConfigurator.newInstance()
 | 
				
			||||||
        .securityProtocol("TLSv1.2")
 | 
					        .securityProtocol("TLSv1.2")
 | 
				
			||||||
        .trustStore(trustStore)
 | 
					        .trustStore(trustStore)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue