[[Active Directory]] Certificate Services (ADCS) ist eine Serverrolle von Microsoft Windows Server, die es ermöglicht, eine [[pki|Public Key Infrastructure]] (PKI) innerhalb einer [[Active Directory|Windows-Domäne]] bereitzustellen. Sie wird verwendet, um digitale Zertifikate auszustellen, zu verwalten, zu erneuern und zu widerrufen. Diese Zertifikate können zur Authentifizierung, Verschlüsselung und Signierung in verschiedenen Szenarien verwendet werden (z. B. für HTTPS, [[Email]]-[[kryptographie|Verschlüsselung]], Smartcards oder [[VPN]]).
Siehe auch [[x509]]
ADCS Tools/SnapIns
|certsrv.msc|Verwaltung der Zertifizierungsstelle|
|certtmpl.msc|Verwaltung der Zertifikatvorlagen|
|certreq.exe|Zertifikatsanforderung per CLI|
|certutil.exe|Diagnose und Management per CLI|
|MMC → Zertifikate|Anzeige und Export von Zertifikaten|
ADCS veröffentlicht Zertifikate und Sperrlisten (CRL: Certifficate revokation list) unter folgenden Pfaden:
|CDP (CRL Distribution Point)|Speicherort der Sperrliste|http://pki.domain.local/CRL/ca.crl|
|AIA (Authority Information Access)|Speicherort des CA-Zertifikats|http://pki.domain.local/CA.crt|
=====Komponenten=====
|Zertifizierungsstelle (CA)|Der zentrale Dienst, der Zertifikate ausstellt und verwaltet.|
|Web Enrollment|Weboberfläche zur Zertifikatsanforderung und -verwaltung.|
|Online Responder (OCSP)|Dient der Überprüfung von Zertifikatsstatus in Echtzeit.|
|Network Device Enrollment Service (NDES)|Ermöglicht die Anmeldung von Netzwerkgeräten (z. B. Router, Switches).|
|Zertifikatvorlagen (Templates)|Vordefinierte Einstellungen für automatische und manuelle Zertifikatserstellung.|
|Zertifikatverteilungspunkte (CDP/AIA)|Speicherorte für Sperrlisten (CRL) und CA-Zertifikate.|
=====CSR (Certificate signing request)=====
Erstelle eine Datei, z.B webserver.inf (Mit certtmpl.msc kannst du alle Vorlagen anzeigen)
[Version]
Signature="$Windows NT$"
[NewRequest]
Subject = "CN=www.domain.com" ; Ändere auf deinen echten FQDN
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=www.domain.com&" ; SAN-Eintrag
_continue_ = "dns=domain.com"
[RequestAttributes]
CertificateTemplate = WebServer
Erzeuge einen CSR auf dem betreffenden Server.
certreq -new webserver.inf webserver.req
Die req Datei jetzt auf die CA kopieren und das Zertifikat erzeugen.
certreq -submit webserver.req webserver.cer
Das erzeugte Zertifikat wieder auf den Webserver kopieren und bestätigen.
certreq -accept webserver.cer
Zertifikat als PFX (inkl private key) exportieren.
# Öffne PowerShell als Administrator
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*domain.com*" }
$pwd = ConvertTo-SecureString -String "MeinSicheresPasswort123" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath "C:\webserver.pfx" -Password $pwd
Zertifikat als PFX (inkl private key) installieren.
Import-PfxCertificate -FilePath "C:\webserver.pfx" -CertStoreLocation Cert:\LocalMachine\My
=====CRL (Certificate revokation list)=====
PS C:\> $cert = Get-ChildItem -Path Cert:\LocalMachine\My | Select-Object -First 1
PS C:\> $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Cert) | Set-Content -Path "C:\Temp\ExportedCert.cer" -Encoding Byte
PS C:\> certutil -urlfetch -verify "C:\Temp\ExportedCert.cer"
Aussteller:
CN=EnterpriseIssuingCA
DC=d2000
DC=local
Namenshash (sha1): 20177fd169ec3c09be924512e96b8109379fbaa0
Namenshash (md5): 20eaa93acd9358a358a56ae652663417
Antragsteller:
CN=audit.akm.at
Namenshash (sha1): 49ea13ae2a8a41a8b96f9a42e2663f821e693a36
Namenshash (md5): 2d67cd2da7891e75a22a19423e885094
Zertifikatseriennummer: 4b00004747b1656e05970d297b000100004747
dwFlags = CA_VERIFY_FLAGS_CONSOLE_TRACE (0x20000000)
dwFlags = CA_VERIFY_FLAGS_DUMP_CHAIN (0x40000000)
ChainFlags = CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT (0x40000000)
HCCE_LOCAL_MACHINE
CERT_CHAIN_POLICY_BASE
-------- CERT_CHAIN_CONTEXT --------
ChainContext.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
ChainContext.dwRevocationFreshnessTime: 206 Days, 7 Hours, 16 Minutes, 25 Seconds
SimpleChain.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
SimpleChain.dwRevocationFreshnessTime: 206 Days, 7 Hours, 16 Minutes, 25 Seconds
CertContext[0][0]: dwInfoStatus=102 dwErrorStatus=0
Issuer: CN=EnterpriseIssuingCA, DC=d2000, DC=local
NotBefore: 10.04.2025 07:56
NotAfter: 10.04.2027 07:56
Subject: CN=audit.akm.at
Serial: 4b00004747b1656e05970d297b000100004747
SubjectAltName: DNS-Name=audit.akm.at, DNS-Name=vie-t-srv-audit.d2000.local
Template: WebServer
Cert: e47af028e60d14590d95ad69ca8b76e8da17e408
Element.dwInfoStatus = CERT_TRUST_HAS_KEY_MATCH_ISSUER (0x2)
Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
---------------- Zertifikat abrufen ----------------
Überprüft "Zertifikat (0)" Zeit: 0 c11c4a123232d5756221fa5b6a7e81fbd7d0a03d
[0.0] ldap:///CN=EnterpriseIssuingCA,CN=AIA,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=d2000,DC=local?cACertificate?base?objectClass=certificationAuthority
Überprüft "Zertifikat (1)" Zeit: 0 b61438f8d5b0ba453066f20db4a290d0032c2d3c
[0.1] ldap:///CN=EnterpriseIssuingCA,CN=AIA,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=d2000,DC=local?cACertificate?base?objectClass=certificationAuthority
Überprüft "Zertifikat (1)" Zeit: 0 b61438f8d5b0ba453066f20db4a290d0032c2d3c
[1.0] http://pki.akm.at/pki/vie-srv-ca01.d2000.local_EnterpriseIssuingCA(1).crt
---------------- Zertifikat abrufen ----------------
Überprüft "Basissperrliste (0151)" Zeit: 0 7d8932bc1119d3f18f083cbef8c778d5e37e81a7
[0.0] ldap:///CN=EnterpriseIssuingCA,CN=vie-srv-ca01,CN=CDP,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=d2000,DC=local?certificateRevocationList?base?objectClass=cRLDistributionPoint
Überprüft "Deltasperrliste (0151)" Zeit: 0 87bb070928de8de2a98f70c9c0f61e35be189cd7
[0.0.0] ldap:///CN=EnterpriseIssuingCA,CN=vie-srv-ca01,CN=CDP,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=d2000,DC=local?deltaRevocationList?base?objectClass=cRLDistributionPoint
Überprüft "Deltasperrliste (0151)" Zeit: 0 87bb070928de8de2a98f70c9c0f61e35be189cd7
[0.0.1] http://pki.akm.at/pki/EnterpriseIssuingCA+.crl
Überprüft "Basissperrliste (0151)" Zeit: 0 7d8932bc1119d3f18f083cbef8c778d5e37e81a7
[1.0] http://pki.akm.at/pki/EnterpriseIssuingCA.crl
Überprüft "Deltasperrliste (0151)" Zeit: 0 87bb070928de8de2a98f70c9c0f61e35be189cd7
[1.0.0] ldap:///CN=EnterpriseIssuingCA,CN=vie-srv-ca01,CN=CDP,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=d2000,DC=local?deltaRevocationList?base?objectClass=cRLDistributionPoint
Überprüft "Deltasperrliste (0151)" Zeit: 0 87bb070928de8de2a98f70c9c0f61e35be189cd7
[1.0.1] http://pki.akm.at/pki/EnterpriseIssuingCA+.crl
---------------- Basissperrliste veraltet ----------------
Keine URLs "Keine" Zeit: 0 (null)
---------------- Zertifikat-OCSP ----------------
Keine URLs "Keine" Zeit: 0 (null)
--------------------------------
CRL 0150:
Issuer: CN=EnterpriseIssuingCA, DC=d2000, DC=local
ThisUpdate: 09.04.2025 12:10
NextUpdate: 24.04.2025 00:30
CRL: 11e66ec51ef72d189c669893c0b4aa0635f1f5f9
Application[0] = 1.3.6.1.5.5.7.3.1 Serverauthentifizierung
CertContext[0][1]: dwInfoStatus=102 dwErrorStatus=0
Issuer: CN=ROOTCA
NotBefore: 06.04.2020 14:25
NotAfter: 06.04.2034 14:35
Subject: CN=EnterpriseIssuingCA, DC=d2000, DC=local
Serial: 730000000402f3944965a14fd6000100000004
Template: SubCA
Cert: b61438f8d5b0ba453066f20db4a290d0032c2d3c
Element.dwInfoStatus = CERT_TRUST_HAS_KEY_MATCH_ISSUER (0x2)
Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
---------------- Zertifikat abrufen ----------------
Überprüft "Zertifikat (0)" Zeit: 0 003a30d9ef730a81e36684c1cfc3aa0fb3b1f979
[0.0] http://pki.akm.at/pki/RootCA_ROOTCA(1).crt
Überprüft "Zertifikat (1)" Zeit: 0 81b85e9c5ca43c4be4fb8f343edbfb5a3d8df18f
[1.0] ldap:///CN=ROOTCA,CN=AIA,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=d2000,DC=local?cACertificate?base?objectClass=certificationAuthority
Überprüft "Zertifikat (0)" Zeit: 0 003a30d9ef730a81e36684c1cfc3aa0fb3b1f979
[1.1] ldap:///CN=ROOTCA,CN=AIA,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=d2000,DC=local?cACertificate?base?objectClass=certificationAuthority
---------------- Zertifikat abrufen ----------------
Abgelaufen "Basissperrliste (12)" Zeit: 0 4c44fba92c822a6bf632b2c531ad75443eab2711
[0.0] http://pki.akm.at/pki/ROOTCA.crl
Überprüft "Basissperrliste (14)" Zeit: 0 de9f7a941d1db2df69780bb385901f3047b00ffc
[1.0] ldap:///CN=ROOTCA,CN=RootCA,CN=CDP,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=d2000,DC=local?certificateRevocationList?base?objectClass=cRLDistributionPoint
---------------- Basissperrliste veraltet ----------------
Keine URLs "Keine" Zeit: 0 (null)
---------------- Zertifikat-OCSP ----------------
Keine URLs "Keine" Zeit: 0 (null)
--------------------------------
CRL 14:
Issuer: CN=ROOTCA
ThisUpdate: 16.09.2024 08:47
NextUpdate: 16.09.2025 21:07
CRL: de9f7a941d1db2df69780bb385901f3047b00ffc
CertContext[0][2]: dwInfoStatus=10c dwErrorStatus=0
Issuer: CN=ROOTCA
NotBefore: 27.09.2012 08:24
NotAfter: 06.04.2048 13:12
Subject: CN=ROOTCA
Serial: 323eab5b4a53dda34ebcdde98394ea6a
Cert: 003a30d9ef730a81e36684c1cfc3aa0fb3b1f979
Element.dwInfoStatus = CERT_TRUST_HAS_NAME_MATCH_ISSUER (0x4)
Element.dwInfoStatus = CERT_TRUST_IS_SELF_SIGNED (0x8)
Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
---------------- Zertifikat abrufen ----------------
Keine URLs "Keine" Zeit: 0 (null)
---------------- Zertifikat abrufen ----------------
Keine URLs "Keine" Zeit: 0 (null)
---------------- Zertifikat-OCSP ----------------
Keine URLs "Keine" Zeit: 0 (null)
--------------------------------
Exclude leaf cert:
Chain: fd786397872f5f43ee14c7592bf62f0f0d950d70
Full chain:
Chain: 12cc956f02358ef15baa12297568acc4259d370e
------------------------------------
Verfizierte Ausstellungsrichtlinien: Kein
Verfizierte Anwendungsrichtlinien:
1.3.6.1.5.5.7.3.1 Serverauthentifizierung
Sperrstatussüberprüfung des untergeordneten Zertifikats erfolgreich abgeschlossen.
CertUtil: -verify-Befehl wurde erfolgreich ausgeführt.
=====CLI=====
# Zeige alle Templates
certtmpl.msc