acme: add certificate profile

Add a default certificate profile to be used with the ACME service.

The profile requires the (Dogtag) user interacting with the CA to be
a member of the (Dogtag) "ACME Agents" group.  For each CA server we
create a dedicated ACME agent account, make it a member of this
group, and configure the ACME issuer component to use that account.

Part of: https://pagure.io/freeipa/issue/4751

Reviewed-By: Rob Crittenden <rcritten@redhat.com>
This commit is contained in:
Fraser Tweedale authored and Rob Crittenden committed 2020-07-10 08:33:22 -04:00
1 parent c309d4a4d0
commit 3c8352f9a7
4 files changed
+112

No files matched your search

+1
View File
@@ -7,6 +7,7 @@ app_DATA = \
caIPAserviceCert.UPGRADE.cfg \
IECUserRoles.cfg \
KDCs_PKINIT_Certs.cfg \
acmeServerCert.cfg \
$(NULL)
EXTRA_DIST = \
+107
View File
@@ -0,0 +1,107 @@
profileId=acmeServerCert
classId=caEnrollImpl
desc=ACME profile for use in IPA deployments
visible=true
enable=true
enableBy=admin
auth.instance_id=SessionAuthentication
authz.acl=group="$ACME_AGENT_GROUP"
name=IPA ACME Service Certificate Enrollment
input.list=i1,i2
input.i1.class_id=certReqInputImpl
input.i2.class_id=submitterInfoInputImpl
output.list=o1
output.o1.class_id=certOutputImpl
policyset.list=serverCertSet
policyset.serverCertSet.list=1,2,3,4,5,6,7,8,9,10,11
policyset.serverCertSet.1.constraint.class_id=keyUsageExtConstraintImpl
policyset.serverCertSet.1.constraint.name=Key Usage Extension Constraint
policyset.serverCertSet.1.constraint.params.keyUsageCritical=true
policyset.serverCertSet.1.constraint.params.keyUsageDigitalSignature=true
policyset.serverCertSet.1.constraint.params.keyUsageNonRepudiation=false
policyset.serverCertSet.1.constraint.params.keyUsageDataEncipherment=false
policyset.serverCertSet.1.constraint.params.keyUsageKeyEncipherment=true
policyset.serverCertSet.1.constraint.params.keyUsageKeyAgreement=false
policyset.serverCertSet.1.constraint.params.keyUsageKeyCertSign=false
policyset.serverCertSet.1.constraint.params.keyUsageCrlSign=false
policyset.serverCertSet.1.constraint.params.keyUsageEncipherOnly=false
policyset.serverCertSet.1.constraint.params.keyUsageDecipherOnly=false
policyset.serverCertSet.1.default.class_id=keyUsageExtDefaultImpl
policyset.serverCertSet.1.default.name=Key Usage Default
policyset.serverCertSet.1.default.params.keyUsageCritical=true
policyset.serverCertSet.1.default.params.keyUsageDigitalSignature=true
policyset.serverCertSet.1.default.params.keyUsageNonRepudiation=false
policyset.serverCertSet.1.default.params.keyUsageDataEncipherment=false
policyset.serverCertSet.1.default.params.keyUsageKeyEncipherment=true
policyset.serverCertSet.1.default.params.keyUsageKeyAgreement=false
policyset.serverCertSet.1.default.params.keyUsageKeyCertSign=false
policyset.serverCertSet.1.default.params.keyUsageCrlSign=false
policyset.serverCertSet.1.default.params.keyUsageEncipherOnly=false
policyset.serverCertSet.1.default.params.keyUsageDecipherOnly=false
policyset.serverCertSet.2.constraint.class_id=noConstraintImpl
policyset.serverCertSet.2.constraint.name=No Constraint
policyset.serverCertSet.2.default.class_id=extendedKeyUsageExtDefaultImpl
policyset.serverCertSet.2.default.name=Extended Key Usage Extension Default
policyset.serverCertSet.2.default.params.exKeyUsageCritical=false
policyset.serverCertSet.2.default.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2
policyset.serverCertSet.3.constraint.class_id=noConstraintImpl
policyset.serverCertSet.3.constraint.name=No Constraint
policyset.serverCertSet.3.default.class_id=subjectKeyIdentifierExtDefaultImpl
policyset.serverCertSet.3.default.name=Subject Key Identifier Extension Default
policyset.serverCertSet.3.default.params.critical=false
policyset.serverCertSet.4.constraint.class_id=noConstraintImpl
policyset.serverCertSet.4.constraint.name=No Constraint
policyset.serverCertSet.4.default.class_id=authorityKeyIdentifierExtDefaultImpl
policyset.serverCertSet.4.default.name=Authority Key Identifier Default
policyset.serverCertSet.5.constraint.class_id=noConstraintImpl
policyset.serverCertSet.5.constraint.name=No Constraint
policyset.serverCertSet.5.default.class_id=authInfoAccessExtDefaultImpl
policyset.serverCertSet.5.default.name=AIA Extension Default
policyset.serverCertSet.5.default.params.authInfoAccessADEnable_0=true
policyset.serverCertSet.5.default.params.authInfoAccessADLocationType_0=URIName
policyset.serverCertSet.5.default.params.authInfoAccessADLocation_0=http://$IPA_CA_RECORD.$DOMAIN/ca/ocsp
policyset.serverCertSet.5.default.params.authInfoAccessADMethod_0=1.3.6.1.5.5.7.48.1
policyset.serverCertSet.5.default.params.authInfoAccessCritical=false
policyset.serverCertSet.5.default.params.authInfoAccessNumADs=1
policyset.serverCertSet.6.constraint.class_id=noConstraintImpl
policyset.serverCertSet.6.constraint.name=No Constraint
policyset.serverCertSet.6.default.class_id=userExtensionDefaultImpl
policyset.serverCertSet.6.default.name=User supplied extension in CSR
policyset.serverCertSet.6.default.params.userExtOID=2.5.29.17
policyset.serverCertSet.7.constraint.class_id=validityConstraintImpl
policyset.serverCertSet.7.constraint.name=Validity Constraint
policyset.serverCertSet.7.constraint.params.range=90
policyset.serverCertSet.7.constraint.params.notBeforeCheck=false
policyset.serverCertSet.7.constraint.params.notAfterCheck=false
policyset.serverCertSet.7.default.class_id=validityDefaultImpl
policyset.serverCertSet.7.default.name=Validity Default
policyset.serverCertSet.7.default.params.range=90
policyset.serverCertSet.7.default.params.startTime=0
policyset.serverCertSet.8.constraint.class_id=signingAlgConstraintImpl
policyset.serverCertSet.8.constraint.name=No Constraint
policyset.serverCertSet.8.constraint.params.signingAlgsAllowed=SHA256withRSA,SHA512withRSA,SHA256withEC,SHA384withRSA,SHA384withEC,SHA512withEC
policyset.serverCertSet.8.default.class_id=signingAlgDefaultImpl
policyset.serverCertSet.8.default.name=Signing Alg
policyset.serverCertSet.8.default.params.signingAlg=-
policyset.serverCertSet.9.constraint.class_id=noConstraintImpl
policyset.serverCertSet.9.constraint.name=No Constraint
policyset.serverCertSet.9.default.class_id=sanToCNDefaultImpl
policyset.serverCertSet.9.default.name=SAN to CN Default
policyset.serverCertSet.10.constraint.class_id=keyConstraintImpl
policyset.serverCertSet.10.constraint.name=Key Constraint
policyset.serverCertSet.10.constraint.params.keyType=RSA
policyset.serverCertSet.10.constraint.params.keyParameters=2048,3072,4096,8192
policyset.serverCertSet.10.default.class_id=userKeyDefaultImpl
policyset.serverCertSet.10.default.name=Key Default
policyset.serverCertSet.11.constraint.class_id=noConstraintImpl
policyset.serverCertSet.11.constraint.name=No Constraint
policyset.serverCertSet.11.default.class_id=crlDistributionPointsExtDefaultImpl
policyset.serverCertSet.11.default.name=CRL Distribution Points Extension Default
policyset.serverCertSet.11.default.params.crlDistPointsCritical=false
policyset.serverCertSet.11.default.params.crlDistPointsNum=1
policyset.serverCertSet.11.default.params.crlDistPointsEnable_0=true
policyset.serverCertSet.11.default.params.crlDistPointsIssuerName_0=$CRL_ISSUER
policyset.serverCertSet.11.default.params.crlDistPointsIssuerType_0=DirectoryName
policyset.serverCertSet.11.default.params.crlDistPointsPointName_0=http://$IPA_CA_RECORD.$DOMAIN/ipa/crl/MasterCRL.bin
policyset.serverCertSet.11.default.params.crlDistPointsPointType_0=URIName
policyset.serverCertSet.11.default.params.crlDistPointsReasons_0=
+3
View File
@@ -56,6 +56,9 @@ INCLUDED_PROFILES = {
Profile(u'KDCs_PKINIT_Certs',
u'Profile for PKINIT support by KDCs',
False),
Profile(u'acmeServerCert',
u'ACME service certificate profile',
False),
}
DEFAULT_PROFILE = u'caIPAserviceCert'
+1
View File
@@ -1905,6 +1905,7 @@ def __get_profile_config(profile_id):
IPA_CA_RECORD=ipalib.constants.IPA_CA_RECORD,
CRL_ISSUER='CN=Certificate Authority,o=ipaca',
SUBJECT_DN_O=dsinstance.DsInstance().find_subject_base(),
ACME_AGENT_GROUP=ACME_AGENT_GROUP,
)
# To work around lack of proper profile upgrade system, we ship