Skip to content

Commit 3b4bd9f

Browse files
committed
fixup!
1 parent 9ccc94f commit 3b4bd9f

File tree

2 files changed

+21
-26
lines changed

2 files changed

+21
-26
lines changed

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/transport/CrossClusterApiKeySigner.java

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import java.security.cert.X509Certificate;
3131
import java.util.Arrays;
3232
import java.util.Collection;
33-
import java.util.List;
3433
import java.util.Map;
3534
import java.util.Objects;
3635
import java.util.Set;
@@ -57,7 +56,7 @@ public CrossClusterApiKeySigner(Environment environment) {
5756
public Map<Path, Set<String>> getDependentFilesToClusterAliases() {
5857
return signingConfigByClusterAlias.entrySet()
5958
.stream()
60-
.filter(entry -> entry.getValue() != SigningConfig.EMPTY && entry.getValue().dependentFiles != null)
59+
.filter(entry -> entry.getValue().dependentFiles != null)
6160
.flatMap(entry -> entry.getValue().dependentFiles.stream().map(path -> Map.entry(path, entry.getKey())))
6261
.collect(Collectors.groupingBy(Map.Entry::getKey, Collectors.mapping(Map.Entry::getValue, Collectors.toSet())));
6362
}
@@ -70,7 +69,7 @@ public void loadSigningConfig(String clusterAlias, @Nullable Settings settings,
7069
updateSecureSettings
7170
);
7271

73-
SigningConfig signingConfig = SigningConfig.EMPTY;
72+
SigningConfig signingConfig = new SigningConfig(null, null, effectiveSettings);
7473
if (effectiveSettings.getByPrefix(SETTINGS_PART_SIGNING).isEmpty() == false) {
7574
try {
7675
SslKeyConfig keyConfig = CertParsingUtils.createKeyConfig(
@@ -87,12 +86,9 @@ public void loadSigningConfig(String clusterAlias, @Nullable Settings settings,
8786
if (keyPair != null) {
8887
signingConfig = new SigningConfig(keyPair, keyConfig.getDependentFiles(), effectiveSettings);
8988
}
90-
} else {
91-
signingConfig = new SigningConfig(null, null, effectiveSettings);
9289
}
9390
} catch (Exception e) {
94-
logger.error(String.format("Failed to load signing config for cluster [%s]", clusterAlias), e);
95-
signingConfig = new SigningConfig(null, null, effectiveSettings);
91+
logger.error(Strings.format("Failed to load signing config for cluster [%s]", clusterAlias), e);
9692
}
9793
}
9894
return signingConfig;
@@ -101,7 +97,7 @@ public void loadSigningConfig(String clusterAlias, @Nullable Settings settings,
10197

10298
public X509CertificateSignature signHeadersForCluster(String clusterAlias, String... headers) {
10399
SigningConfig signingConfig = signingConfigByClusterAlias.get(clusterAlias);
104-
if (signingConfig == null || signingConfig == SigningConfig.EMPTY || signingConfig.keyPair() == null) {
100+
if (signingConfig == null || signingConfig.keyPair() == null) {
105101
return null;
106102
}
107103
var keyPair = signingConfig.keyPair();
@@ -119,7 +115,7 @@ public X509CertificateSignature signHeadersForCluster(String clusterAlias, Strin
119115
}
120116

121117
private void loadSigningConfigs() {
122-
this.environment.settings().getGroups(RemoteClusterSettings.REMOTE_CLUSTER_SETTINGS_PREFIX).forEach((alias, settings) -> {
118+
this.environment.settings().getGroups(RemoteClusterSettings.REMOTE_CLUSTER_SETTINGS_PREFIX, true).forEach((alias, settings) -> {
123119
loadSigningConfig(alias, settings, false);
124120
});
125121
}
@@ -201,6 +197,14 @@ private static byte[] getSignableBytes(final String... headers) {
201197
return String.join("\n", headers).getBytes(StandardCharsets.UTF_8);
202198
}
203199

200+
private static String calculateFingerprint(X509Certificate certificate) {
201+
try {
202+
return SslUtil.calculateFingerprint(certificate, "SHA-1");
203+
} catch (CertificateEncodingException e) {
204+
return "<?>";
205+
}
206+
}
207+
204208
private record X509KeyPair(X509Certificate certificate, PrivateKey privateKey, String signatureAlgorithm, String fingerprint) {
205209
X509KeyPair(X509Certificate certificate, PrivateKey privateKey) {
206210
this(certificate, privateKey, switch (privateKey.getAlgorithm()) {
@@ -213,16 +217,6 @@ private record X509KeyPair(X509Certificate certificate, PrivateKey privateKey, S
213217
}
214218
}
215219

216-
private record SigningConfig(@Nullable X509KeyPair keyPair, Collection<Path> dependentFiles, @Nullable Settings settings) {
217-
static SigningConfig EMPTY = new SigningConfig(null, List.of(), null);
218-
}
219-
220-
private static String calculateFingerprint(X509Certificate certificate) {
221-
try {
222-
return SslUtil.calculateFingerprint(certificate, "SHA-1");
223-
} catch (CertificateEncodingException e) {
224-
return "<?>";
225-
}
226-
}
220+
private record SigningConfig(@Nullable X509KeyPair keyPair, Collection<Path> dependentFiles, @Nullable Settings settings) {}
227221

228222
}

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/transport/CrossClusterApiKeySignerReloader.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,13 @@ public void reload(Settings settings) {
116116
// closed. Since the secure settings will potentially be used later when the signing config is used to sign headers, the
117117
// settings need to be retrieved from the keystore and cached
118118
Settings cachedSettings = Settings.builder().setSecureSettings(extractSecureSettings(settings, getSecureSettings())).build();
119-
cachedSettings.getGroups(RemoteClusterSettings.REMOTE_CLUSTER_SETTINGS_PREFIX).forEach((clusterAlias, settingsForCluster) -> {
120-
// Only update signing config if settings were found, since empty config means config deletion
121-
if (settingsForCluster.isEmpty() == false) {
122-
apiKeySigner.loadSigningConfig(clusterAlias, settingsForCluster, true);
123-
}
124-
});
119+
cachedSettings.getGroups(RemoteClusterSettings.REMOTE_CLUSTER_SETTINGS_PREFIX, true)
120+
.forEach((clusterAlias, settingsForCluster) -> {
121+
// Only update signing config if settings were found, since empty config means config deletion
122+
if (settingsForCluster.isEmpty() == false) {
123+
apiKeySigner.loadSigningConfig(clusterAlias, settingsForCluster, true);
124+
}
125+
});
125126
} catch (GeneralSecurityException e) {
126127
logger.error("Keystore exception while reloading CrossClusterApiKeySigner", e);
127128
}

0 commit comments

Comments
 (0)