Manchmal findet sich ein Zertifikat im Windows-Zertifikatsspeicher (Cryptostore), welches man einschliesslich des zugehörigen privaten Schlüssel benötigt.
Beispielsweise kommt das vor bei einer Migration (IIS, Webserver), einem VPN-Service (RRAS) oder Software, die selber eine Schlüsselprüfung durchführen möchte. Windows verbietet allerdings den Export direkt aus dem Cryptostore, unabhängig von den Berechtigungen auf dem Schlüssel.
Die zugehörige Option im Zertifikatsmanager-Assistenten ist daher auch ausgegraut:
Lösung
- Windows Defender ausschalten
- mimikatz herunterladen (https://github.com/gentilkiwi/mimikatz/releases), am besten den aktuellen trunk
- mimikatz „Als Administrator“ ausführen
In mimikatz Ausführen:
privilege::debug
crypto::cng
crypto::capi
crypto::certificates /systemstore:local_machine /store:my /export
Die Ausgabe sollte in etwa wie folgt aussehen:
mimikatz # privilege::debug
Privilege '20' OK
mimikatz # crypto::cng
ERROR kull_m_patch_genericProcessOrServiceFromBuild ; kull_m_patch (0x00000000)
mimikatz # crypto::capi
Local CryptoAPI RSA CSP patched
Local CryptoAPI DSS CSP patched
mimikatz # crypto::certificates /systemstore:local_machine /store:my /export
* System Store : 'local_machine' (0x00020000)
* Store : 'my'
0. [IIS] <CERTNAME>
Subject : CN=<CERT-CN>
Issuer : C=<CERT-DATA>
Serial : <CERT-SERIAL>
Algorithm: 1.2.840.113549.1.1.1 (RSA)
Validity : <CERT-VALID>
Hash SHA1: <CERT-HASH>
Key Container : {<CNG-ID>}
Provider : Microsoft RSA SChannel Cryptographic Provider
Provider type : RSA_SCHANNEL (12)
Type : AT_KEYEXCHANGE (0x00000001)
|Provider name : Microsoft RSA SChannel Cryptographic Provider
|Key Container : {<MACHINE CNG ID>}
|Unique name : <CERT-NAME>
|Implementation: CRYPT_IMPL_SOFTWARE ;
Algorithm : CALG_RSA_KEYX
Key size : 3072 (0x00000c00)
Key permissions: 0000003b ( CRYPT_ENCRYPT ; CRYPT_DECRYPT ; CRYPT_READ ; CRYPT_WRITE ; CRYPT_MAC ; )
Exportable key : NO
Public export : OK - '<PATH TO DER>'
Private export : OK - '<PATH TO PFX>'
Und schon findet man die (alle) Zertifikate aus dem lokalen Speicher im Ausführungsverzeichnis.