[[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