Skip to content

Commit 5d8e797

Browse files
committed
Address comments
1 parent b7d50a5 commit 5d8e797

4 files changed

Lines changed: 19 additions & 14 deletions

File tree

api/src/main/java/org/apache/cloudstack/ca/CAManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public interface CAManager extends CAService, Configurable, PluggableService {
4444
"The CA provider plugin used for CloudStack internal certificate management (MS-agent encryption and authentication). " +
4545
"The default 'root' provider auto-generates a CA on first startup, but also supports user-provided custom CA material " +
4646
"via the ca.plugin.root.private.key, ca.plugin.root.public.key, and ca.plugin.root.ca.certificate settings. " +
47-
"Restart management server(s) when changed.", true);
47+
"Restart management server(s) when changed.", false);
4848

4949
ConfigKey<Integer> CertKeySize = new ConfigKey<>("Advanced", Integer.class,
5050
"ca.framework.cert.keysize",
@@ -94,7 +94,7 @@ public interface CAManager extends CAService, Configurable, PluggableService {
9494
"ca.framework.inject.default.truststore", "true",
9595
"When true, injects the CA provider's certificate into the JVM default truststore on management server startup. " +
9696
"This allows outgoing HTTPS connections from the management server to trust servers with certificates signed by the configured CA. " +
97-
"Restart management server(s) when changed.", true);
97+
"Restart management server(s) when changed.", false);
9898

9999
/**
100100
* Returns a list of available CA provider plugins

plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,20 +108,20 @@ public final class RootCAProvider extends AdapterBase implements CAProvider, Con
108108
null,
109109
"The ROOT CA private key in PEM format. " +
110110
"When set along with the public key and certificate, CloudStack uses this custom CA instead of auto-generating one. " +
111-
"All three ca.plugin.root.* keys must be set together. Restart management server(s) when changed.", true);
111+
"All three ca.plugin.root.* keys must be set together. Restart management server(s) when changed.", false);
112112

113113
private static ConfigKey<String> rootCAPublicKey = new ConfigKey<>("Hidden", String.class,
114114
"ca.plugin.root.public.key",
115115
null,
116116
"The ROOT CA public key in PEM format (X.509/SPKI: must start with '-----BEGIN PUBLIC KEY-----'). " +
117-
"Required when providing a custom CA. Restart management server(s) when changed.", true);
117+
"Required when providing a custom CA. Restart management server(s) when changed.", false);
118118

119119
private static ConfigKey<String> rootCACertificate = new ConfigKey<>("Hidden", String.class,
120120
"ca.plugin.root.ca.certificate",
121121
null,
122122
"The CA certificate(s) in PEM format (must start with '-----BEGIN CERTIFICATE-----'). " +
123123
"For intermediate CAs, concatenate the signing cert first, followed by intermediate(s) and root. " +
124-
"Required when providing a custom CA. Restart management server(s) when changed.", true);
124+
"Required when providing a custom CA. Restart management server(s) when changed.", false);
125125

126126
private static ConfigKey<String> rootCAIssuerDN = new ConfigKey<>("Advanced", String.class,
127127
"ca.plugin.root.issuer.dn",

server/src/main/java/org/apache/cloudstack/ca/CAManagerImpl.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import javax.naming.ConfigurationException;
4242
import javax.net.ssl.SSLContext;
4343
import javax.net.ssl.SSLEngine;
44+
import javax.net.ssl.TrustManager;
4445
import javax.net.ssl.TrustManagerFactory;
4546
import javax.net.ssl.X509TrustManager;
4647

@@ -578,10 +579,13 @@ private void injectCaCertIntoDefaultTruststore() {
578579
// Copy existing default trusted certs
579580
final TrustManagerFactory defaultTmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
580581
defaultTmf.init((KeyStore) null);
581-
final X509TrustManager defaultTm = (X509TrustManager) defaultTmf.getTrustManagers()[0];
582582
int aliasIndex = 0;
583-
for (final X509Certificate cert : defaultTm.getAcceptedIssuers()) {
584-
trustStore.setCertificateEntry("default-ca-" + aliasIndex++, cert);
583+
for (final TrustManager tm : defaultTmf.getTrustManagers()) {
584+
if (tm instanceof X509TrustManager) {
585+
for (final X509Certificate cert : ((X509TrustManager) tm).getAcceptedIssuers()) {
586+
trustStore.setCertificateEntry("default-ca-" + aliasIndex++, cert);
587+
}
588+
}
585589
}
586590

587591
// Add CA provider's certificates

utils/src/main/java/org/apache/cloudstack/utils/security/CertUtils.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,13 @@ public static KeyFactory getKeyFactory() {
100100

101101
public static List<X509Certificate> pemToX509Certificates(final String pem) throws CertificateException, IOException {
102102
final List<X509Certificate> certs = new ArrayList<>();
103-
final PEMParser pemParser = new PEMParser(new StringReader(pem));
104-
final JcaX509CertificateConverter certConverter = new JcaX509CertificateConverter().setProvider("BC");
105-
Object parsedObj;
106-
while ((parsedObj = pemParser.readObject()) != null) {
107-
if (parsedObj instanceof X509CertificateHolder) {
108-
certs.add(certConverter.getCertificate((X509CertificateHolder) parsedObj));
103+
try (final PEMParser pemParser = new PEMParser(new StringReader(pem))) {
104+
final JcaX509CertificateConverter certConverter = new JcaX509CertificateConverter().setProvider("BC");
105+
Object parsedObj;
106+
while ((parsedObj = pemParser.readObject()) != null) {
107+
if (parsedObj instanceof X509CertificateHolder) {
108+
certs.add(certConverter.getCertificate((X509CertificateHolder) parsedObj));
109+
}
109110
}
110111
}
111112
return certs;

0 commit comments

Comments
 (0)