none
LDAPS / KDC Certificate with Certreq private key not exportable RRS feed

  • Frage

  • Hi, 

    I try to automate cert requests for LDAPS certificate. When i request the my cert template the certificates private key is exportable. But never, when I try with certreq. 

    This is my Inf:

    [Version]
    Signature="$Windows NT$
    
    [NewRequest] 
    ; At least one value must be set in this section 
    Subject="CN=dc01"
    KeySpec=1
    KeyLength=4096
    Exportable=TRUE
    ProviderType=12
    RequestType=PKCS10
    KeyUsage=0xa0
    
    [RequestAttributes]
    CertificateTemplate="KDC_TEMPLATE"
    
    
    [Extensions]
    _continue_ = "dns=dc01&"
    _continue_ = "dns=dc01.mydomain.dom&"
    _continue_ = "dns=mydomain.dom&"
    _continue_ = "dns=MYDOMAIN&"
    _continue_ = "dns=ldap.mydomain.dom&"

    Then I try
    certreq -new c:\_scripts\request2.inf c:\_scripts\result.txt
    certreq -config pki.mydomain.dom\myCERT-CA -submit c:\_scripts\result.txt c:\_scripts\certificate.cer 
    certreq -accept c:\_scripts\certificate.cer 

    I got a powershell script to put the cert to NTDS Store.

    But the private key ist never exportable when I script this, only when I use MMC an request manual.

    Does anyone has an idea, what I do wrong??

    Mittwoch, 19. Februar 2020 10:52

Alle Antworten

  • No one an Idea?
    Donnerstag, 20. Februar 2020 10:12
  • Hi Jeffrey,

    please be aware this is a Forum where professionals spent their free time to help each other - so you can not always expect a answer in 24h... :-)

    as far as i can see you requested an CER File. cer Files normaly contains Public Key and not the Private Key. For Private Key you should use the PKS format.

    Martin

    Donnerstag, 20. Februar 2020 10:46
  • Thank you Martin,

    Wen I import I see it has the private key.. it is just not exportable, I can see by the symbol at Certstore..

    When I export this certificate from there, it became a pfx. It is the same, as when i do this manual over MMC, my request generates an cer-file, I import.

    in between I try this, but with this, I even don't get a private key.. :-D

    [System.Void](& certutil -addstore -f 'MY' "c:\_scripts\certificate.cer")
    [System.Void](& certutil -repairstore 'MY' "dc01.mydomain.dom")

    Donnerstag, 20. Februar 2020 11:20
  • When I do exactly the same things, but use the mmc... i got the same certificate, but with exportable private Key, i can export form certstore an put to ntds with Powershell... no problem.

    But if I use certreq, private key is never exportable..

    Donnerstag, 20. Februar 2020 11:28
  • I tried this .inf

    I build it like this here:

    https://support.microsoft.com/de-de/help/321051/how-to-enable-ldap-over-ssl-with-a-third-party-certification-authority

    [Version]
    Signature="$Windows NT$
    
    [NewRequest] 
    ; At least one value must be set in this section 
    Subject="CN=dc01,OU=Domain Controllers,DC=mydomain,DC=dom"
    Friendlyname = "dc01.mydomain.dom"
    KeyLength = 4096
    Exportable =TRUE
    MachineKeySet = TRUE
    SMIME = False
    PrivateKeyArchive = FALSE
    UserProtected = FALSE
    UseExistingKeySet = FALSE
    ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
    ProviderType = 12
    RequestType = PKCS10
    KeyUsage = 0xa0
    
    [EnhancedKeyUsageExtension]
    OID=1.3.6.1.5.2.3.5
    OID=1.3.6.1.4.1.311.20.2.2
    OID=1.3.6.1.5.5.7.3.1
    OID=1.3.6.1.5.5.7.3.1
    
    [RequestAttributes]
    CertificateTemplate="KDC_TEMPLATE"
    
    
    [Extensions]
    2.5.29.17 = "{text}"
    _continue_ = "dns=dc01&"
    _continue_ = "dns=dc01.mydomain.dom&"
    _continue_ = "dns=mydomain.dom&"
    _continue_ = "dns=MYDOMAIN&"
    _continue_ = "dns=ldap.mydomain.dom&"

    I see it generates an: certificate.cer and a certificate.rsp... Why .rsp?

    Donnerstag, 20. Februar 2020 12:37
  • Bei Get-certificate dasselbe Problem.. :-((
    Donnerstag, 20. Februar 2020 13:20
  • ich hab da was gefunden...

    Privater Schlüssel nicht exportierbar

    Wenn man das neue Zertifikat über das MMC-Snap-in oder das Cmdlet Export-PfxCertificate exportieren möchte, dann wird man feststellen, dass die Option für den Export des privaten Schlüssels ausgegraut ist bzw. dass man einen Fehler erhält. Get-Certificate bietet nämlich keine Möglichkeit, diesen als exportierbar zu konfigurieren.

    Der private Schlüssel von Zertifikaten, die mit Get-Certificate angefordert werden, lässt sich nicht exportieren.

    Der private Schlüssel von Zertifikaten, die mit Get-Certificate angefordert werden, lässt sich nicht exportieren.

    Da der Web-Server den Private Key jedoch benötigt, muss man das Zertifikat immer von jenem Rechner aus anfordern, auf dem es dann auch genutzt wird.

    Quelle: https://www.windowspro.de/wolfgang-sommergut/get-certificate-zertifikat-fuer-web-server-powershell-anfordern

    Donnerstag, 20. Februar 2020 14:08
  • Ja, ich gehe per Powershell Remoting auf den Rechner, der das Zertfikat braucht und fordere es von da an..und führe dort auch alles aus... Wobei es mit der MMC auch von einem anderen Rechner aus klappt.. :-D

    Der Zielrechner ist Server 2019 Core.. 

    Pardon schrieb in Englisch, weil das eigentlich im englischen Forum landen sollte.. (da gibt es halt mehr Leute..)..

    Also ich schalte mich von der CA per Powershell Remoting auf den 2019 Core, erstelle den Request, fordere das LDAPS Zertifikat an, alles per Powershell/Certreq, und importiere es... private key nicht exportierbar. 

    Ab hier würde man, per powershell exporitieren (das klappt mäßig über Remoting) und dann mit einem Powershell script in den NTDS Speicher importieren, das klappt super.

    Faktisch komme ich jetzt über die MMC der CA, verbinde die Zertifikats MMC mit dem Zielrechner, erstelle von ihm aus eine "Benutzerdefinierte Anforderung", reiche die in der CA ein, und importiere wieder über die Remote MMC. Hier alles wunderbar, private Key exportable..  :-P

    Wenn man das per Script hinbekommt und erweitert, kann man sehr viele Domains, sehr schnell mit LDAPs ausstatten.. aber irgendwie mag er mich nicht.. :-(
    Mein Verdacht ist, dass es an der .Inf liegt, ich komme aber nicht drauf...

    get-certificate scheint grundsätzlich nicht dazu in der Lage.. aber Certreq sollte das eigentlich können..

    Der hier hatte dasselbe Problem, hat es aber gelöst...
    https://social.technet.microsoft.com/Forums/de-DE/16eb7d00-7a74-459c-9938-2010bad2a739/certificate-request-by-certreqexe-make-private-key-exportable?forum=winserversecurity

    Nur seine Erweiterungen der Inf passen bei mir teilweise nicht und wenn ich, wie er sagt:

    [Extensions]
    
    2.5.29.17={text}
    Critical=2.5.29.17

    setze, dann geht gar nichts mehr..  


    Donnerstag, 20. Februar 2020 14:30
  • Local über die Konsole des Servers ist es im Grunde dasselbe Bild... 
    Donnerstag, 20. Februar 2020 14:46
  • Hm.. Ja, schade, dass da niemand eine Idee hat...
    Donnerstag, 27. Februar 2020 15:03
  • Hm.. Ja, schade, dass da niemand eine Idee hat...

    Hast Du dir meinen Link denn mal angesehen?

    LG

    Martin

    Dienstag, 3. März 2020 07:45
  • Jup, hatte auch schon ausführlich geantwortet... :-D

    Egal, ob per Powershell-Remoting, Lokal auf dem Rechner oder von einem anderen Rechner, es ist immer dasselbe Ergebnis, gehe ich über MMC ist der Key exportierbar, certreq ist er es nicht..

    Ich fürchte hier kann mir niemand weiterhelfen, aber trotzdem vielen Dank dir Martin, für die Mühe!

    Dienstag, 3. März 2020 12:20
  • Aber genau das steht doch in dem Link:

    Privater Schlüssel nicht exportierbar
    Wenn man das neue Zertifikat über das MMC-Snap-in oder das Cmdlet Export-PfxCertificate exportieren möchte, dann wird man feststellen, dass die Option für den Export des privaten Schlüssels ausgegraut ist bzw. dass man einen Fehler erhält. Get-Certificate bietet nämlich keine Möglichkeit, diesen als exportierbar zu konfigurieren.

    Sprich: das Cmdlet "Get-Certificate" bietet keine Funktion für den Privaten Schlüssel Export... du MUSST das also über einen Webrequest machen... 

    Leider .-(

    Liebe Grüße

    Martin

    Dienstag, 3. März 2020 14:09
  • Nee irgendwie geht das am Problem vorbei.. Über das MMC Funktioniert es! Ich glaube das habe ich inzwischen auch schon öfter geschrieben. Das es bei get-Certificate nicht funktioniert ist mir ebenfalls bekannt, schrieb ich ebenfalls und deinen Link kenne ich auch; also schon vor der Frage hier. Mit Certreq soll es (Theoretisch) aber gehen, tut es aber nicht. Die Frage ist, warum nicht?
    Dienstag, 3. März 2020 19:14