
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.




