This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new ba6e796a2d HDDS-11028. Replace PKCS10CertificationRequest usage in
CertificateClient (#6842)
ba6e796a2d is described below
commit ba6e796a2d847cecb2de6f09f4440c471fd9ac21
Author: Istvan Fajth <[email protected]>
AuthorDate: Fri Aug 9 19:39:31 2024 +0200
HDDS-11028. Replace PKCS10CertificationRequest usage in CertificateClient
(#6842)
---
.../x509/certificate/client/CertificateClient.java | 11 ++--
.../certificate/utils/CertificateSignRequest.java | 59 ++++++++++++----------
.../certificate/client/DNCertificateClient.java | 15 +++---
.../client/DefaultCertificateClient.java | 42 +++++----------
.../certificate/client/SCMCertificateClient.java | 33 ++++++------
.../certificate/authority/TestDefaultCAServer.java | 20 ++++++--
.../certificate/authority/TestDefaultProfile.java | 44 ++++++----------
.../client/CertificateClientTestImpl.java | 19 ++++---
.../client/TestDefaultCertificateClient.java | 15 ++----
.../utils/TestCertificateSignRequest.java | 31 +++++-------
.../hdds/scm/security/RootCARotationManager.java | 2 +-
.../hadoop/ozone/TestSecureOzoneCluster.java | 3 +-
.../hadoop/ozone/security/OMCertificateClient.java | 15 +++---
.../recon/security/ReconCertificateClient.java | 15 +++---
14 files changed, 144 insertions(+), 180 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/CertificateClient.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/CertificateClient.java
index 0c23a84656..79db6985e7 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/CertificateClient.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/CertificateClient.java
@@ -22,6 +22,7 @@ package
org.apache.hadoop.hdds.security.x509.certificate.client;
import org.apache.hadoop.hdds.security.exception.OzoneSecurityException;
import org.apache.hadoop.hdds.security.ssl.ReloadingX509KeyManager;
import org.apache.hadoop.hdds.security.ssl.ReloadingX509TrustManager;
+import org.apache.hadoop.hdds.security.exception.SCMSecurityException;
import
org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateSignRequest;
import org.apache.hadoop.hdds.security.x509.exception.CertificateException;
@@ -156,13 +157,13 @@ public interface CertificateClient extends Closeable {
X509Certificate cert) throws CertificateException;
/**
- * Returns a CSR builder that can be used to create a Certificate sigining
- * request.
+ * Returns a CertificateSignRequest Builder object, that can be used to
configure the sign request
+ * which we use to get a signed certificate from our CA server
implementation.
*
- * @return CertificateSignRequest.Builder
+ * @return CertificateSignRequest.Builder a {@link CertificateSignRequest}
+ * based on which the certificate may be issued to this client.
*/
- CertificateSignRequest.Builder getCSRBuilder()
- throws CertificateException;
+ CertificateSignRequest.Builder configureCSRBuilder() throws
SCMSecurityException;
default void assertValidKeysAndCertificate() throws OzoneSecurityException {
try {
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/utils/CertificateSignRequest.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/utils/CertificateSignRequest.java
index c1cc671215..1f04e868a8 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/utils/CertificateSignRequest.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/utils/CertificateSignRequest.java
@@ -157,34 +157,43 @@ public final class CertificateSignRequest {
throw new CertificateException("No PKCS#9 extension found in CSR");
}
- private PKCS10CertificationRequest generateCSR() throws
- OperatorCreationException {
- X500Name dnName = getDistinguishedName(subject, scmID, clusterID);
- PKCS10CertificationRequestBuilder p10Builder =
- new JcaPKCS10CertificationRequestBuilder(dnName, keyPair.getPublic());
-
- ContentSigner contentSigner =
- new JcaContentSignerBuilder(config.getSignatureAlgo())
- .setProvider(config.getProvider())
- .build(keyPair.getPrivate());
-
- if (extensions != null) {
- p10Builder.addAttribute(
- PKCSObjectIdentifiers.pkcs_9_at_extensionRequest, extensions);
- }
- return p10Builder.build(contentSigner);
- }
- public static String getEncodedString(PKCS10CertificationRequest request)
- throws IOException {
- PemObject pemObject =
- new PemObject("CERTIFICATE REQUEST", request.getEncoded());
+ /**
+ * Encodes this CertificateSignRequest to a String representation, that can
be transferred over the wire to
+ * the CA server for signing.
+ *
+ * @return the Certificate Sign Request encoded to a String
+ * @throws IOException if an error occurs during encoding.
+ */
+ public String toEncodedFormat() throws IOException {
StringWriter str = new StringWriter();
try (JcaPEMWriter pemWriter = new JcaPEMWriter(str)) {
+ PemObject pemObject = new PemObject("CERTIFICATE REQUEST",
generateCSR().getEncoded());
pemWriter.writeObject(pemObject);
}
return str.toString();
}
+ //TODO: this should be private once the server side of removing
PKCS10CertReq class is done.
+ public PKCS10CertificationRequest generateCSR() throws IOException {
+ X500Name dnName = getDistinguishedName(subject, scmID, clusterID);
+ PKCS10CertificationRequestBuilder p10Builder =
+ new JcaPKCS10CertificationRequestBuilder(dnName, keyPair.getPublic());
+
+ try {
+ ContentSigner contentSigner =
+ new JcaContentSignerBuilder(config.getSignatureAlgo())
+ .setProvider(config.getProvider())
+ .build(keyPair.getPrivate());
+
+ if (extensions != null) {
+ p10Builder.addAttribute(
+ PKCSObjectIdentifiers.pkcs_9_at_extensionRequest, extensions);
+ }
+ return p10Builder.build(contentSigner);
+ } catch (OperatorCreationException e) {
+ throw new IOException(e);
+ }
+ }
/**
* Gets a CertificateRequest Object from PEM encoded CSR.
@@ -413,7 +422,7 @@ public final class CertificateSignRequest {
extensions.toArray(new Extension[extensions.size()]));
}
- public PKCS10CertificationRequest build() throws SCMSecurityException {
+ public CertificateSignRequest build() throws SCMSecurityException {
Preconditions.checkNotNull(key, "KeyPair cannot be null");
Preconditions.checkArgument(StringUtils.isNotBlank(subject), "Subject " +
"cannot be blank");
@@ -421,15 +430,11 @@ public final class CertificateSignRequest {
try {
CertificateSignRequest csr = new CertificateSignRequest(subject, scmID,
clusterID, key, config, createExtensions());
- return csr.generateCSR();
+ return csr;
} catch (IOException ioe) {
throw new CertificateException(String.format("Unable to create " +
"extension for certificate sign request for %s.",
getDistinguishedName(subject, scmID, clusterID)), ioe.getCause());
- } catch (OperatorCreationException ex) {
- throw new CertificateException(String.format("Unable to create " +
- "certificate sign request for %s.",
- getDistinguishedName(subject, scmID, clusterID)), ex.getCause());
}
}
}
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/DNCertificateClient.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/DNCertificateClient.java
index e9f7c4465d..7ce895760a 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/DNCertificateClient.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/DNCertificateClient.java
@@ -23,10 +23,10 @@ import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMGetCertResponseProto;
import
org.apache.hadoop.hdds.protocolPB.SCMSecurityProtocolClientSideTranslatorPB;
import org.apache.hadoop.hdds.security.SecurityConfig;
+import org.apache.hadoop.hdds.security.exception.SCMSecurityException;
import
org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateSignRequest;
import org.apache.hadoop.hdds.security.x509.exception.CertificateException;
import org.apache.hadoop.security.UserGroupInformation;
-import org.bouncycastle.pkcs.PKCS10CertificationRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,7 +35,6 @@ import java.net.InetAddress;
import java.security.KeyPair;
import java.util.function.Consumer;
-import static
org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateSignRequest.getEncodedString;
import static
org.apache.hadoop.hdds.security.x509.exception.CertificateException.ErrorCode.CSR_ERROR;
/**
@@ -70,9 +69,9 @@ public class DNCertificateClient extends
DefaultCertificateClient {
* @return CertificateSignRequest.Builder
*/
@Override
- public CertificateSignRequest.Builder getCSRBuilder()
- throws CertificateException {
- CertificateSignRequest.Builder builder = super.getCSRBuilder();
+ public CertificateSignRequest.Builder configureCSRBuilder()
+ throws SCMSecurityException {
+ CertificateSignRequest.Builder builder = super.configureCSRBuilder();
try {
String hostname = InetAddress.getLocalHost().getCanonicalHostName();
@@ -93,10 +92,8 @@ public class DNCertificateClient extends
DefaultCertificateClient {
}
@Override
- public SCMGetCertResponseProto getCertificateSignResponse(
- PKCS10CertificationRequest csr) throws IOException {
- return getScmSecureClient().getDataNodeCertificateChain(
- dn.getProtoBufMessage(), getEncodedString(csr));
+ public SCMGetCertResponseProto sign(CertificateSignRequest csr) throws
IOException {
+ return
getScmSecureClient().getDataNodeCertificateChain(dn.getProtoBufMessage(),
csr.toEncodedFormat());
}
@Override
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/DefaultCertificateClient.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/DefaultCertificateClient.java
index 2fb258e1a2..70a475982b 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/DefaultCertificateClient.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/DefaultCertificateClient.java
@@ -76,6 +76,7 @@ import
org.apache.hadoop.hdds.protocolPB.SCMSecurityProtocolClientSideTranslator
import org.apache.hadoop.hdds.security.SecurityConfig;
import org.apache.hadoop.hdds.security.ssl.ReloadingX509KeyManager;
import org.apache.hadoop.hdds.security.ssl.ReloadingX509TrustManager;
+import org.apache.hadoop.hdds.security.exception.SCMSecurityException;
import org.apache.hadoop.hdds.security.x509.certificate.authority.CAType;
import org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateCodec;
import
org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateSignRequest;
@@ -99,7 +100,6 @@ import static
org.apache.hadoop.hdds.security.x509.exception.CertificateExceptio
import static
org.apache.hadoop.hdds.security.x509.exception.CertificateException.ErrorCode.RENEW_ERROR;
import static
org.apache.hadoop.hdds.security.x509.exception.CertificateException.ErrorCode.ROLLBACK_ERROR;
-import org.bouncycastle.pkcs.PKCS10CertificationRequest;
import org.slf4j.Logger;
/**
@@ -567,15 +567,12 @@ public abstract class DefaultCertificateClient implements
CertificateClient {
* @return CertificateSignRequest.Builder
*/
@Override
- public CertificateSignRequest.Builder getCSRBuilder()
- throws CertificateException {
- CertificateSignRequest.Builder builder =
- new CertificateSignRequest.Builder()
- .setConfiguration(securityConfig)
- .addInetAddresses()
- .setDigitalEncryption(true)
- .setDigitalSignature(true);
- return builder;
+ public CertificateSignRequest.Builder configureCSRBuilder() throws
SCMSecurityException {
+ return new CertificateSignRequest.Builder()
+ .setConfiguration(securityConfig)
+ .addInetAddresses()
+ .setDigitalEncryption(true)
+ .setDigitalSignature(true);
}
/**
@@ -805,7 +802,8 @@ public abstract class DefaultCertificateClient implements
CertificateClient {
getLogger().info("Initialization successful, case:{}.", state);
break;
case GETCERT:
- String certId = signAndStoreCertificate(getCSRBuilder().build());
+ Path certLocation =
securityConfig.getCertificateLocation(getComponentName());
+ String certId = signAndStoreCertificate(configureCSRBuilder().build(),
certLocation, false);
if (certIdSaveCallback != null) {
certIdSaveCallback.accept(certId);
} else {
@@ -1152,7 +1150,7 @@ public abstract class DefaultCertificateClient implements
CertificateClient {
// Get certificate signed
String newCertSerialId;
try {
- CertificateSignRequest.Builder csrBuilder = getCSRBuilder();
+ CertificateSignRequest.Builder csrBuilder = configureCSRBuilder();
csrBuilder.setKey(newKeyPair);
newCertSerialId = signAndStoreCertificate(csrBuilder.build(),
Paths.get(newCertPath), true);
@@ -1320,20 +1318,12 @@ public abstract class DefaultCertificateClient
implements CertificateClient {
return certSerialId;
}
- protected String signAndStoreCertificate(
- PKCS10CertificationRequest request, Path certificatePath)
- throws CertificateException {
- return signAndStoreCertificate(request, certificatePath, false);
- }
-
- protected abstract SCMGetCertResponseProto getCertificateSignResponse(
- PKCS10CertificationRequest request) throws IOException;
+ protected abstract SCMGetCertResponseProto sign(CertificateSignRequest
request) throws IOException;
- protected String signAndStoreCertificate(
- PKCS10CertificationRequest request, Path certificatePath, boolean renew)
+ protected String signAndStoreCertificate(CertificateSignRequest csr, Path
certificatePath, boolean renew)
throws CertificateException {
try {
- SCMGetCertResponseProto response = getCertificateSignResponse(request);
+ SCMGetCertResponseProto response = sign(csr);
// Persist certificates.
if (response.hasX509CACertificate()) {
@@ -1371,12 +1361,6 @@ public abstract class DefaultCertificateClient
implements CertificateClient {
}
}
- public String signAndStoreCertificate(
- PKCS10CertificationRequest request) throws CertificateException {
- return updateCertSerialId(signAndStoreCertificate(request,
- securityConfig.getCertificateLocation(getComponentName())));
- }
-
public SCMSecurityProtocolClientSideTranslatorPB getScmSecureClient() {
return scmSecurityClient;
}
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/SCMCertificateClient.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/SCMCertificateClient.java
index 8bad4f18ad..ae0c0f0db8 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/SCMCertificateClient.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/security/x509/certificate/client/SCMCertificateClient.java
@@ -24,6 +24,7 @@ import
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMGetCer
import
org.apache.hadoop.hdds.protocolPB.SCMSecurityProtocolClientSideTranslatorPB;
import org.apache.hadoop.hdds.security.SecurityConfig;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
+import org.apache.hadoop.hdds.security.exception.SCMSecurityException;
import org.apache.hadoop.hdds.security.x509.certificate.authority.CAType;
import
org.apache.hadoop.hdds.security.x509.certificate.authority.CertificateServer;
import
org.apache.hadoop.hdds.security.x509.certificate.authority.CertificateStore;
@@ -32,10 +33,8 @@ import
org.apache.hadoop.hdds.security.x509.certificate.authority.profile.Defaul
import
org.apache.hadoop.hdds.security.x509.certificate.authority.profile.PKIProfile;
import org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateCodec;
import
org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateSignRequest;
-import org.apache.hadoop.hdds.security.x509.exception.CertificateException;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.OzoneSecurityUtil;
-import org.bouncycastle.pkcs.PKCS10CertificationRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,7 +55,6 @@ import java.util.function.Consumer;
import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeType.SCM;
import static
org.apache.hadoop.hdds.security.x509.certificate.authority.CertificateApprover.ApprovalType.KERBEROS_TRUSTED;
-import static
org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateSignRequest.getEncodedString;
import static org.apache.hadoop.ozone.OzoneConsts.SCM_ROOT_CA_COMPONENT_NAME;
import static org.apache.hadoop.ozone.OzoneConsts.SCM_ROOT_CA_PREFIX;
import static org.apache.hadoop.ozone.OzoneConsts.SCM_SUB_CA_PREFIX;
@@ -137,14 +135,14 @@ public class SCMCertificateClient extends
DefaultCertificateClient {
*
* @return CertificateSignRequest.Builder
*/
- public CertificateSignRequest.Builder getCSRBuilder()
- throws CertificateException {
+ public CertificateSignRequest.Builder configureCSRBuilder()
+ throws SCMSecurityException {
String subject = SCM_SUB_CA_PREFIX + scmHostname;
LOG.info("Creating csr for SCM->hostName:{},scmId:{},clusterId:{}," +
"subject:{}", scmHostname, scmId, cId, subject);
- return super.getCSRBuilder()
+ return super.configureCSRBuilder()
.setSubject(subject)
.setScmID(scmId)
.setClusterID(cId)
@@ -164,15 +162,13 @@ public class SCMCertificateClient extends
DefaultCertificateClient {
}
@Override
- protected SCMGetCertResponseProto getCertificateSignResponse(
- PKCS10CertificationRequest request) {
- throw new UnsupportedOperationException("getCertSignResponse of " +
- " SCMCertificateClient is not supported currently");
+ protected SCMGetCertResponseProto sign(CertificateSignRequest request) {
+ throw new UnsupportedOperationException("Invalid call to
SCMCertificateClient#sign(CertificateSignRequest. " +
+ "SCM certificate client uses a different mechanism to sign the SCMs'
certificate.");
}
@Override
- public String signAndStoreCertificate(PKCS10CertificationRequest request,
- Path certPath, boolean renew) throws CertificateException {
+ public String signAndStoreCertificate(CertificateSignRequest csr, Path
certPath, boolean renew) {
try {
HddsProtos.ScmNodeDetailsProto scmNodeDetailsProto =
HddsProtos.ScmNodeDetailsProto.newBuilder()
@@ -182,8 +178,7 @@ public class SCMCertificateClient extends
DefaultCertificateClient {
// Get SCM sub CA cert.
SCMGetCertResponseProto response =
- getScmSecureClient().getSCMCertChain(scmNodeDetailsProto,
- getEncodedString(request), true);
+ getScmSecureClient().getSCMCertChain(scmNodeDetailsProto,
csr.toEncodedFormat(), true);
CertificateCodec certCodec = new CertificateCodec(
getSecurityConfig(), certPath);
@@ -310,7 +305,7 @@ public class SCMCertificateClient extends
DefaultCertificateClient {
private void getRootCASignedSCMCert() {
try {
// Generate CSR.
- PKCS10CertificationRequest csr = getCSRBuilder().build();
+ CertificateSignRequest csr = configureCSRBuilder().build();
HddsProtos.ScmNodeDetailsProto scmNodeDetailsProto =
HddsProtos.ScmNodeDetailsProto.newBuilder()
.setClusterId(cId)
@@ -319,7 +314,7 @@ public class SCMCertificateClient extends
DefaultCertificateClient {
// Get SCM sub CA cert.
SCMGetCertResponseProto response = getScmSecureClient().
- getSCMCertChain(scmNodeDetailsProto, getEncodedString(csr), false);
+ getSCMCertChain(scmNodeDetailsProto, csr.toEncodedFormat(), false);
String pemEncodedCert = response.getX509Certificate();
// Store SCM sub CA and root CA certificate.
@@ -357,9 +352,11 @@ public class SCMCertificateClient extends
DefaultCertificateClient {
String pemEncodedRootCert =
CertificateCodec.getPEMEncodedString(rootCACertificatePath);
- PKCS10CertificationRequest csr = getCSRBuilder().build();
+ CertificateSignRequest csr = configureCSRBuilder().build();
String subCaSerialId = BigInteger.ONE.add(BigInteger.ONE).toString();
- CertPath scmSubCACertPath = rootCAServer.requestCertificate(csr,
KERBEROS_TRUSTED, SCM, subCaSerialId).get();
+ //TODO: do not use generateCSR() here once the server side change is
also done.
+ CertPath scmSubCACertPath =
+ rootCAServer.requestCertificate(csr.generateCSR(), KERBEROS_TRUSTED,
SCM, subCaSerialId).get();
String pemEncodedCert =
CertificateCodec.getPEMEncodedString(scmSubCACertPath);
storeCertificate(pemEncodedRootCert, CAType.SUBORDINATE);
diff --git
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/authority/TestDefaultCAServer.java
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/authority/TestDefaultCAServer.java
index 56f84b9e3b..e029006a6a 100644
---
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/authority/TestDefaultCAServer.java
+++
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/authority/TestDefaultCAServer.java
@@ -153,6 +153,7 @@ public class TestDefaultCAServer {
String clusterId = RandomStringUtils.randomAlphabetic(4);
KeyPair keyPair =
new HDDSKeyGenerator(securityConfig).generateKey();
+ //TODO: generateCSR!
PKCS10CertificationRequest csr = new CertificateSignRequest.Builder()
.addDnsName("hadoop.apache.org")
.addIpAddress("8.8.8.8")
@@ -163,7 +164,8 @@ public class TestDefaultCAServer {
.setSubject("Ozone Cluster")
.setConfiguration(securityConfig)
.setKey(keyPair)
- .build();
+ .build()
+ .generateCSR();
CertificateServer testCA = new DefaultCAServer("testCA",
clusterId, scmId, caStore,
@@ -204,6 +206,7 @@ public class TestDefaultCAServer {
public void testRequestCertificateWithInvalidSubject() throws Exception {
KeyPair keyPair =
new HDDSKeyGenerator(securityConfig).generateKey();
+ //TODO: generateCSR!
PKCS10CertificationRequest csr = new CertificateSignRequest.Builder()
.addDnsName("hadoop.apache.org")
.addIpAddress("8.8.8.8")
@@ -211,7 +214,8 @@ public class TestDefaultCAServer {
.setSubject("Ozone Cluster")
.setConfiguration(securityConfig)
.setKey(keyPair)
- .build();
+ .build()
+ .generateCSR();
CertificateServer testCA = new DefaultCAServer("testCA",
RandomStringUtils.randomAlphabetic(4),
@@ -232,6 +236,7 @@ public class TestDefaultCAServer {
public void testRequestCertificateWithInvalidSubjectFailure() throws
Exception {
KeyPair keyPair =
new HDDSKeyGenerator(securityConfig).generateKey();
+ //TODO: generateCSR!
PKCS10CertificationRequest csr = new CertificateSignRequest.Builder()
.addDnsName("hadoop.apache.org")
.addIpAddress("8.8.8.8")
@@ -241,7 +246,8 @@ public class TestDefaultCAServer {
.setSubject("Ozone Cluster")
.setConfiguration(securityConfig)
.setKey(keyPair)
- .build();
+ .build()
+ .generateCSR();
CertificateServer testCA = new DefaultCAServer("testCA",
RandomStringUtils.randomAlphabetic(4),
@@ -344,6 +350,7 @@ public class TestDefaultCAServer {
LocalDate beginDate = LocalDate.now().atStartOfDay().toLocalDate();
LocalDate endDate =
LocalDate.from(LocalDate.now().atStartOfDay().plusDays(10));
+ //TODO: generateCSR!
PKCS10CertificationRequest csr = new CertificateSignRequest.Builder()
.addDnsName("hadoop.apache.org")
.addIpAddress("8.8.8.8")
@@ -354,7 +361,8 @@ public class TestDefaultCAServer {
.setSubject("Ozone Cluster")
.setConfiguration(securityConfig)
.setKey(keyPair)
- .build();
+ .build()
+ .generateCSR();
X509Certificate externalCert = generateExternalCert(keyPair);
X509Certificate signedCert = approver.sign(securityConfig,
keyPair.getPrivate(), externalCert,
@@ -405,6 +413,7 @@ public class TestDefaultCAServer {
// Generate cert
KeyPair keyPair =
new HDDSKeyGenerator(securityConfig).generateKey();
+ //TODO: generateCSR!
PKCS10CertificationRequest csr = new CertificateSignRequest.Builder()
.addDnsName("hadoop.apache.org")
.addIpAddress("8.8.8.8")
@@ -412,7 +421,8 @@ public class TestDefaultCAServer {
.setSubject("testCA")
.setConfiguration(securityConfig)
.setKey(keyPair)
- .build();
+ .build()
+ .generateCSR();
Future<CertPath> holder = rootCA.requestCertificate(csr,
CertificateApprover.ApprovalType.TESTING_AUTOMATIC, SCM,
diff --git
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/authority/TestDefaultProfile.java
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/authority/TestDefaultProfile.java
index 1204f90521..2f4dd681ea 100644
---
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/authority/TestDefaultProfile.java
+++
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/authority/TestDefaultProfile.java
@@ -41,7 +41,6 @@ import org.bouncycastle.operator.OperatorCreationException;
import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
import org.bouncycastle.pkcs.PKCS10CertificationRequest;
import org.bouncycastle.pkcs.PKCS10CertificationRequestBuilder;
-import org.bouncycastle.pkcs.PKCSException;
import org.bouncycastle.pkcs.jcajce.JcaPKCS10CertificationRequestBuilder;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -50,8 +49,6 @@ import org.junit.jupiter.api.io.TempDir;
import java.io.IOException;
import java.nio.file.Path;
import java.security.KeyPair;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
import static org.apache.hadoop.hdds.HddsConfigKeys.OZONE_METADATA_DIRS;
import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -94,14 +91,10 @@ public class TestDefaultProfile {
/**
* Test valid keys are validated correctly.
- *
- * @throws SCMSecurityException - on Error.
- * @throws PKCSException - on Error.
- * @throws OperatorCreationException - on Error.
*/
@Test
- public void testVerifyCertificate() throws SCMSecurityException,
- PKCSException, OperatorCreationException {
+ public void testVerifyCertificate() throws Exception {
+ //TODO: generateCSR!
PKCS10CertificationRequest csr = new CertificateSignRequest.Builder()
.addDnsName("hadoop.apache.org")
.addIpAddress("8.8.8.8")
@@ -112,7 +105,8 @@ public class TestDefaultProfile {
.setSubject("Ozone Cluster")
.setConfiguration(securityConfig)
.setKey(keyPair)
- .build();
+ .build()
+ .generateCSR();
assertTrue(approver.verifyPkcs10Request(csr));
}
@@ -121,20 +115,13 @@ public class TestDefaultProfile {
/**
* Test invalid keys fail in the validation.
- *
- * @throws SCMSecurityException - on Error.
- * @throws PKCSException - on Error.
- * @throws OperatorCreationException - on Error.
- * @throws NoSuchProviderException - on Error.
- * @throws NoSuchAlgorithmException - on Error.
*/
@Test
- public void testVerifyCertificateInvalidKeys() throws SCMSecurityException,
- PKCSException, OperatorCreationException,
- NoSuchProviderException, NoSuchAlgorithmException {
+ public void testVerifyCertificateInvalidKeys() throws Exception {
KeyPair newKeyPair = new HDDSKeyGenerator(securityConfig).generateKey();
KeyPair wrongKey = new KeyPair(keyPair.getPublic(),
newKeyPair.getPrivate());
+ //TODO: generateCSR!
PKCS10CertificationRequest csr = new CertificateSignRequest.Builder()
.addDnsName("hadoop.apache.org")
.addIpAddress("8.8.8.8")
@@ -144,7 +131,8 @@ public class TestDefaultProfile {
.setSubject("Ozone Cluster")
.setConfiguration(securityConfig)
.setKey(wrongKey)
- .build();
+ .build()
+ .generateCSR();
// Signature verification should fail here, since the public/private key
// does not match.
assertFalse(approver.verifyPkcs10Request(csr));
@@ -152,13 +140,10 @@ public class TestDefaultProfile {
/**
* Tests that normal valid extensions work with the default profile.
- *
- * @throws SCMSecurityException - on Error.
- * @throws PKCSException - on Error.
- * @throws OperatorCreationException - on Error.
*/
@Test
- public void testExtensions() throws SCMSecurityException {
+ public void testExtensions() throws Exception {
+ //TODO: generateCSR!
PKCS10CertificationRequest csr = new CertificateSignRequest.Builder()
.addDnsName("hadoop.apache.org")
.addIpAddress("192.10.234.6")
@@ -168,7 +153,8 @@ public class TestDefaultProfile {
.setSubject("Ozone Cluster")
.setConfiguration(securityConfig)
.setKey(keyPair)
- .build();
+ .build()
+ .generateCSR();
assertTrue(approver.verfiyExtensions(csr));
}
@@ -180,7 +166,8 @@ public class TestDefaultProfile {
*/
@Test
- public void testInvalidExtensionsWithCA() throws SCMSecurityException {
+ public void testInvalidExtensionsWithCA() throws Exception {
+ //TODO: generateCSR!
PKCS10CertificationRequest csr = new CertificateSignRequest.Builder()
.addDnsName("hadoop.apache.org")
.addIpAddress("192.10.234.6")
@@ -190,7 +177,8 @@ public class TestDefaultProfile {
.setSubject("Ozone Cluster")
.setConfiguration(securityConfig)
.setKey(keyPair)
- .build();
+ .build()
+ .generateCSR();
assertFalse(approver.verfiyExtensions(csr));
}
diff --git
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/client/CertificateClientTestImpl.java
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/client/CertificateClientTestImpl.java
index 00058500f5..fa784b7553 100644
---
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/client/CertificateClientTestImpl.java
+++
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/client/CertificateClientTestImpl.java
@@ -48,6 +48,7 @@ import java.util.function.Function;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
+import org.apache.hadoop.hdds.security.exception.SCMSecurityException;
import org.apache.hadoop.hdds.security.SecurityConfig;
import org.apache.hadoop.hdds.security.ssl.ReloadingX509KeyManager;
import org.apache.hadoop.hdds.security.ssl.ReloadingX509TrustManager;
@@ -135,13 +136,14 @@ public class CertificateClientTestImpl implements
CertificateClient {
start = LocalDateTime.now();
String certDuration = conf.get(HDDS_X509_DEFAULT_DURATION,
HDDS_X509_DEFAULT_DURATION_DEFAULT);
+ //TODO: generateCSR should not be called...
x509Certificate = approver.sign(securityConfig, rootKeyPair.getPrivate(),
- rootCert,
- Date.from(start.atZone(ZoneId.systemDefault()).toInstant()),
- Date.from(start.plus(Duration.parse(certDuration))
- .atZone(ZoneId.systemDefault()).toInstant()),
- csrBuilder.build(), "scm1", "cluster1",
- String.valueOf(System.nanoTime()));
+ rootCert,
+ Date.from(start.atZone(ZoneId.systemDefault()).toInstant()),
+ Date.from(start.plus(Duration.parse(certDuration))
+ .atZone(ZoneId.systemDefault()).toInstant()),
+ csrBuilder.build().generateCSR(), "scm1", "cluster1",
+ String.valueOf(System.nanoTime()));
certificateMap.put(x509Certificate.getSerialNumber().toString(),
x509Certificate);
@@ -227,7 +229,7 @@ public class CertificateClientTestImpl implements
CertificateClient {
}
@Override
- public CertificateSignRequest.Builder getCSRBuilder() {
+ public CertificateSignRequest.Builder configureCSRBuilder() throws
SCMSecurityException {
return new CertificateSignRequest.Builder();
}
@@ -298,9 +300,10 @@ public class CertificateClientTestImpl implements
CertificateClient {
Duration certDuration = securityConfig.getDefaultCertDuration();
Date start = new Date();
+ //TODO: get rid of generateCSR call here, once the server side changes
happened.
X509Certificate newX509Certificate =
approver.sign(securityConfig, rootKeyPair.getPrivate(), rootCert,
start,
- new Date(start.getTime() + certDuration.toMillis()),
csrBuilder.build(), "scm1", "cluster1",
+ new Date(start.getTime() + certDuration.toMillis()),
csrBuilder.build().generateCSR(), "scm1", "cluster1",
String.valueOf(System.nanoTime())
);
diff --git
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/client/TestDefaultCertificateClient.java
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/client/TestDefaultCertificateClient.java
index 59c623a53d..f6827352f0 100644
---
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/client/TestDefaultCertificateClient.java
+++
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/client/TestDefaultCertificateClient.java
@@ -25,9 +25,9 @@ import
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMGetCer
import
org.apache.hadoop.hdds.protocolPB.SCMSecurityProtocolClientSideTranslatorPB;
import org.apache.hadoop.hdds.security.x509.certificate.authority.CAType;
import org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateCodec;
+import
org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateSignRequest;
import org.apache.hadoop.hdds.security.x509.exception.CertificateException;
import org.apache.hadoop.hdds.security.x509.keys.KeyCodec;
-import org.bouncycastle.pkcs.PKCS10CertificationRequest;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -560,21 +560,12 @@ public class TestDefaultCertificateClient {
) {
@Override
- protected String signAndStoreCertificate(
- PKCS10CertificationRequest request, Path certificatePath) {
- return "";
- }
-
- @Override
- protected SCMGetCertResponseProto getCertificateSignResponse(
- PKCS10CertificationRequest request) {
+ protected SCMGetCertResponseProto sign(CertificateSignRequest request) {
return null;
}
@Override
- protected String signAndStoreCertificate(
- PKCS10CertificationRequest request, Path certificatePath,
- boolean renew) {
+ protected String signAndStoreCertificate(CertificateSignRequest request,
Path certificatePath, boolean renew) {
return null;
}
};
diff --git
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/utils/TestCertificateSignRequest.java
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/utils/TestCertificateSignRequest.java
index 1d32712fc2..598e74cb36 100644
---
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/utils/TestCertificateSignRequest.java
+++
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/security/x509/certificate/utils/TestCertificateSignRequest.java
@@ -19,7 +19,6 @@
package org.apache.hadoop.hdds.security.x509.certificate.utils;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.security.exception.SCMSecurityException;
import org.apache.hadoop.hdds.security.SecurityConfig;
import org.apache.hadoop.hdds.security.x509.keys.HDDSKeyGenerator;
import org.bouncycastle.asn1.ASN1Encodable;
@@ -33,10 +32,8 @@ import org.bouncycastle.asn1.x509.GeneralName;
import org.bouncycastle.asn1.x509.GeneralNames;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
import org.bouncycastle.operator.ContentVerifierProvider;
-import org.bouncycastle.operator.OperatorCreationException;
import org.bouncycastle.operator.jcajce.JcaContentVerifierProviderBuilder;
import org.bouncycastle.pkcs.PKCS10CertificationRequest;
-import org.bouncycastle.pkcs.PKCSException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -44,8 +41,6 @@ import org.junit.jupiter.api.io.TempDir;
import java.io.IOException;
import java.nio.file.Path;
import java.security.KeyPair;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
import java.util.Iterator;
import java.util.UUID;
@@ -73,9 +68,7 @@ public class TestCertificateSignRequest {
}
@Test
- public void testGenerateCSR() throws NoSuchProviderException,
- NoSuchAlgorithmException, SCMSecurityException,
- OperatorCreationException, PKCSException {
+ public void testGenerateCSR() throws Exception {
String clusterID = UUID.randomUUID().toString();
String scmID = UUID.randomUUID().toString();
String subject = "DN001";
@@ -90,7 +83,8 @@ public class TestCertificateSignRequest {
.setClusterID(clusterID)
.setKey(keyPair)
.setConfiguration(securityConfig);
- PKCS10CertificationRequest csr = builder.build();
+ //TODO: generateCSR!
+ PKCS10CertificationRequest csr = builder.build().generateCSR();
// Check the Subject Name is in the expected format.
String dnName = String.format(getDistinguishedNameFormat(),
@@ -124,9 +118,7 @@ public class TestCertificateSignRequest {
}
@Test
- public void testGenerateCSRwithSan() throws NoSuchProviderException,
- NoSuchAlgorithmException, SCMSecurityException,
- OperatorCreationException, PKCSException {
+ public void testGenerateCSRwithSan() throws Exception {
String clusterID = UUID.randomUUID().toString();
String scmID = UUID.randomUUID().toString();
String subject = "DN001";
@@ -149,7 +141,8 @@ public class TestCertificateSignRequest {
builder.addDnsName("dn1.abc.com");
- PKCS10CertificationRequest csr = builder.build();
+ //TODO: generateCSR!
+ PKCS10CertificationRequest csr = builder.build().generateCSR();
// Check the Subject Name is in the expected format.
String dnName = String.format(getDistinguishedNameFormat(),
@@ -181,8 +174,7 @@ public class TestCertificateSignRequest {
}
@Test
- public void testGenerateCSRWithInvalidParams() throws
NoSuchProviderException,
- NoSuchAlgorithmException, SCMSecurityException {
+ public void testGenerateCSRWithInvalidParams() throws Exception {
String clusterID = UUID.randomUUID().toString();
String scmID = UUID.randomUUID().toString();
String subject = "DN001";
@@ -225,7 +217,8 @@ public class TestCertificateSignRequest {
builder.build();
});
- PKCS10CertificationRequest csr = builder.build();
+ //TODO: generateCSR!
+ PKCS10CertificationRequest csr = builder.build().generateCSR();
// Check the Subject Name is in the expected format.
String dnName = String.format(getDistinguishedNameFormat(),
@@ -244,8 +237,7 @@ public class TestCertificateSignRequest {
}
@Test
- public void testCsrSerialization() throws NoSuchProviderException,
- NoSuchAlgorithmException, SCMSecurityException, IOException {
+ public void testCsrSerialization() throws Exception {
String clusterID = UUID.randomUUID().toString();
String scmID = UUID.randomUUID().toString();
String subject = "DN001";
@@ -261,7 +253,8 @@ public class TestCertificateSignRequest {
.setKey(keyPair)
.setConfiguration(securityConfig);
- PKCS10CertificationRequest csr = builder.build();
+ //TODO: generateCSR!
+ PKCS10CertificationRequest csr = builder.build().generateCSR();
byte[] csrBytes = csr.getEncoded();
// Verify de-serialized CSR matches with the original CSR
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/security/RootCARotationManager.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/security/RootCARotationManager.java
index c88abb5b8d..d38a904d09 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/security/RootCARotationManager.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/security/RootCARotationManager.java
@@ -584,7 +584,7 @@ public class RootCARotationManager extends StatefulService {
String newCertSerialId = "";
try {
CertificateSignRequest.Builder csrBuilder =
- scmCertClient.getCSRBuilder();
+ scmCertClient.configureCSRBuilder();
csrBuilder.setKey(newKeyPair);
newCertSerialId = scmCertClient.signAndStoreCertificate(
csrBuilder.build(),
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestSecureOzoneCluster.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestSecureOzoneCluster.java
index 2b29701cf7..4f41d51615 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestSecureOzoneCluster.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestSecureOzoneCluster.java
@@ -1449,11 +1449,12 @@ final class TestSecureOzoneCluster {
addIpAndDnsDataToBuilder(csrBuilder);
LocalDateTime start = LocalDateTime.now();
Duration certDuration = conf.getDefaultCertDuration();
+ //TODO: generateCSR!
return approver.sign(conf, rootKeyPair.getPrivate(), rootCert,
Date.from(start.atZone(ZoneId.systemDefault()).toInstant()),
Date.from(start.plus(certDuration)
.atZone(ZoneId.systemDefault()).toInstant()),
- csrBuilder.build(), "test", clusterId,
+ csrBuilder.build().generateCSR(), "test", clusterId,
String.valueOf(System.nanoTime()));
}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/security/OMCertificateClient.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/security/OMCertificateClient.java
index a6bfed699f..0a28fc37f3 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/security/OMCertificateClient.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/security/OMCertificateClient.java
@@ -25,12 +25,12 @@ import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMGetCertResponseProto;
import
org.apache.hadoop.hdds.protocolPB.SCMSecurityProtocolClientSideTranslatorPB;
import org.apache.hadoop.hdds.security.SecurityConfig;
+import org.apache.hadoop.hdds.security.exception.SCMSecurityException;
import
org.apache.hadoop.hdds.security.x509.certificate.client.DefaultCertificateClient;
import
org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateSignRequest;
import org.apache.hadoop.hdds.security.x509.exception.CertificateException;
import org.apache.hadoop.ozone.om.OMStorage;
import org.apache.hadoop.security.UserGroupInformation;
-import org.bouncycastle.pkcs.PKCS10CertificationRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,7 +38,6 @@ import java.io.IOException;
import java.security.KeyPair;
import java.util.function.Consumer;
-import static
org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateSignRequest.getEncodedString;
/**
* Certificate client for OzoneManager.
@@ -81,9 +80,9 @@ public class OMCertificateClient extends
DefaultCertificateClient {
* @return CertificateSignRequest.Builder
*/
@Override
- public CertificateSignRequest.Builder getCSRBuilder()
- throws CertificateException {
- CertificateSignRequest.Builder builder = super.getCSRBuilder();
+ public CertificateSignRequest.Builder configureCSRBuilder()
+ throws SCMSecurityException {
+ CertificateSignRequest.Builder builder = super.configureCSRBuilder();
String hostname = omInfo.getHostName();
String subject;
@@ -118,10 +117,8 @@ public class OMCertificateClient extends
DefaultCertificateClient {
}
@Override
- protected SCMGetCertResponseProto getCertificateSignResponse(
- PKCS10CertificationRequest request) throws IOException {
- return getScmSecureClient().getOMCertChain(
- omInfo, getEncodedString(request));
+ protected SCMGetCertResponseProto sign(CertificateSignRequest request)
throws IOException {
+ return getScmSecureClient().getOMCertChain(omInfo,
request.toEncodedFormat());
}
@Override
diff --git
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/security/ReconCertificateClient.java
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/security/ReconCertificateClient.java
index 92b540ecd1..95fdfabbb8 100644
---
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/security/ReconCertificateClient.java
+++
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/security/ReconCertificateClient.java
@@ -21,12 +21,12 @@ import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMGetCertResponseProto;
import
org.apache.hadoop.hdds.protocolPB.SCMSecurityProtocolClientSideTranslatorPB;
import org.apache.hadoop.hdds.security.SecurityConfig;
+import org.apache.hadoop.hdds.security.exception.SCMSecurityException;
import
org.apache.hadoop.hdds.security.x509.certificate.client.DefaultCertificateClient;
import
org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateSignRequest;
import org.apache.hadoop.hdds.security.x509.exception.CertificateException;
import org.apache.hadoop.ozone.recon.scm.ReconStorageConfig;
import org.apache.hadoop.security.UserGroupInformation;
-import org.bouncycastle.pkcs.PKCS10CertificationRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,7 +35,6 @@ import java.net.InetAddress;
import java.security.KeyPair;
import java.util.function.Consumer;
-import static
org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateSignRequest.getEncodedString;
import static
org.apache.hadoop.hdds.security.x509.exception.CertificateException.ErrorCode.CSR_ERROR;
/**
@@ -62,11 +61,11 @@ public class ReconCertificateClient extends
DefaultCertificateClient {
}
@Override
- public CertificateSignRequest.Builder getCSRBuilder()
- throws CertificateException {
+ public CertificateSignRequest.Builder configureCSRBuilder()
+ throws SCMSecurityException {
LOG.info("Creating CSR for Recon.");
try {
- CertificateSignRequest.Builder builder = super.getCSRBuilder();
+ CertificateSignRequest.Builder builder = super.configureCSRBuilder();
String hostname = InetAddress.getLocalHost().getCanonicalHostName();
String subject = UserGroupInformation.getCurrentUser()
.getShortUserName() + "@" + hostname;
@@ -85,8 +84,7 @@ public class ReconCertificateClient extends
DefaultCertificateClient {
}
@Override
- protected SCMGetCertResponseProto getCertificateSignResponse(
- PKCS10CertificationRequest request) throws IOException {
+ protected SCMGetCertResponseProto sign(CertificateSignRequest request)
throws IOException {
SCMGetCertResponseProto response;
HddsProtos.NodeDetailsProto.Builder reconDetailsProtoBuilder =
HddsProtos.NodeDetailsProto.newBuilder()
@@ -95,8 +93,7 @@ public class ReconCertificateClient extends
DefaultCertificateClient {
.setUuid(reconID)
.setNodeType(HddsProtos.NodeType.RECON);
// TODO: For SCM CA we should fetch certificate from multiple SCMs.
- response = getScmSecureClient().getCertificateChain(
- reconDetailsProtoBuilder.build(), getEncodedString(request));
+ response =
getScmSecureClient().getCertificateChain(reconDetailsProtoBuilder.build(),
request.toEncodedFormat());
return response;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]