aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorMorten Tokle <mortent@yahooinc.com>2023-10-09 14:36:58 +0200
committerMorten Tokle <mortent@yahooinc.com>2023-10-09 14:36:58 +0200
commitd3a33e337414a204ec3dccbb5e4348209d9bd653 (patch)
treef6d16e9e204388a5bbccea5f55e13a1d302759d8 /node-admin
parentb09acf5a94ff3fe7b70381478fedcc242d965c32 (diff)
Stop rotating key on every refresh
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java
index 830b7f4ed33..d11adbe696a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java
@@ -297,12 +297,15 @@ public class AthenzCredentialsMaintainer implements CredentialsMaintainer {
private void refreshIdentity(NodeAgentContext context, ContainerPath privateKeyFile, ContainerPath certificateFile,
ContainerPath identityDocumentFile, IdentityDocument doc, IdentityType identityType, AthenzIdentity identity) {
- KeyPair keyPair = KeyUtils.generateKeypair(KeyAlgorithm.RSA);
- CsrGenerator csrGenerator = new CsrGenerator(certificateDnsSuffix, doc.providerService().getFullName());
- Pkcs10Csr csr = csrGenerator.generateInstanceCsr(
- identity, doc.providerUniqueId(), doc.ipAddresses(), doc.clusterType(), keyPair);
-
try {
+ // Do not rotate private key on every refresh.
+ // TODO: rotate key pair only on Vespa upgrade or similar
+ PrivateKey privateKey = readPrivateKeyFromFile(privateKeyFile);
+ KeyPair keyPair = KeyUtils.toKeyPair(privateKey);
+ CsrGenerator csrGenerator = new CsrGenerator(certificateDnsSuffix, doc.providerService().getFullName());
+ Pkcs10Csr csr = csrGenerator.generateInstanceCsr(
+ identity, doc.providerUniqueId(), doc.ipAddresses(), doc.clusterType(), keyPair);
+
// Allow all zts hosts while removing SIS
HostnameVerifier ztsHostNameVerifier = (hostname, sslSession) -> true;
try (ZtsClient ztsClient = ztsClient(doc.ztsUrl(), privateKeyFile, certificateFile, ztsHostNameVerifier)) {
@@ -347,6 +350,11 @@ public class AthenzCredentialsMaintainer implements CredentialsMaintainer {
return X509CertificateUtils.fromPem(pemEncodedCertificate);
}
+ private static PrivateKey readPrivateKeyFromFile(ContainerPath privateKeyFile) throws IOException {
+ String pemEncodedKey = new String(Files.readAllBytes(privateKeyFile));
+ return KeyUtils.fromPemEncodedPrivateKey(pemEncodedKey);
+ }
+
private static boolean isCertificateExpired(Instant expiry, Instant now) {
return now.isAfter(expiry.minus(EXPIRY_MARGIN));
}