Przejdź do głównej zawartości

certreq

Komenda certreq to wierszowe narzędzie interpretera cmd.exe, służące do zarządzania żądaniami certyfikatów w systemie Windows (Microsoft Learn). Pozwala na:

  • wysyłanie żądań certyfikatów do usługi Certification Authority (CA) (-submit),
  • pobieranie odpowiedzi na wcześniej złożone żądania (-retrieve),
  • generowanie nowych żądań na podstawie plików .inf (-new),
  • akceptowanie i instalację odpowiedzi certyfikatu (-accept),
  • tworzenie i podpisywanie żądań cross-certification lub subordination (-policy i -sign),
  • automatyczną rejestrację oraz odnawianie certyfikatów (-enroll) (Microsoft Learn).

Polecenie jest częścią systemu od Windows 2000, a najnowsza dokumentacja obejmuje Windows Server 2025, 2022, 2019, Windows 11 i 10 oraz Azure Local 2311.2+ (Microsoft Learn).


Okno terminala
certreq [-submit] [options] [requestfilein [certfileout [certchainfileout [fullresponsefileout]]]]
certreq -retrieve [options] requestid [certfileout [certchainfileout [fullresponsefileout]]]
certreq -new [options] [policyfilein [requestfileout]]
certreq -accept [options] [certchainfilein | fullresponsefilein | certfilein]
certreq -sign [options] [requestfilein [requestfileout]]
certreq -enroll [options] templatename
certreq -enroll -cert certId [options] renew [reusekeys]
certreq -?
certreq <parameter> -?
certreq -v -?
  • Wpisanie certreq bez parametrów powoduje wywołanie domyślnego -submit.
  • Przełącznik -? wyświetla krótką pomoc; -v -? – wersję szczegółową z opisem wszystkich opcji (Microsoft Learn).

PrzełącznikOpis
-submitWysyła żądanie certyfikatu do wydawcy CA. Jeśli nie podano, jest traktowany jako domyślny.
-retrievePobiera certyfikat odpowiadający identyfikatorowi żądania (requestid), tworząc plik .cer lub pełną odpowiedź.
-newGeneruje nowe żądanie na podstawie pliku .inf, zapisując wynikowy plik .req.
-acceptAkceptuje i instaluje odpowiedź certyfikatu (pliki .cer lub PKCS #7).
-policyBuduje żądanie cross-certification lub qualified subordination według pliku .inf.
-signPodpisuje żądanie cross-certification lub qualified subordination.
-enrollAutomatycznie przeprowadza proces rejestracji lub odnowienia certyfikatu wg nazwy szablonu; z opcją -cert odnawia istniejący certyfikat.
-?Wyświetla listę parametrów i ich opis.
<parameter> -?Szczegółowa pomoc wybranego przełącznika.
-v -?Pomoc z pełnym, szczegółowym opisem wszystkich opcji.

Uwaga: Aby zobaczyć dostępność opcji w konkretnej wersji certreq, uruchom certreq -v -? (Microsoft Learn).


Okno terminala
certreq -submit policy.inf request.req newcert.cer newcert.pfx
  • policy.inf – plik konfiguracyjny INF zawierający ustawienia żądania,
  • request.req – wygenerowany wcześniej plik żądania,
  • newcert.cer – wynikowy certyfikat,
  • newcert.pfx – opcjonalny plik PKCS #12 ze ścieżką certyfikat→klucz (Microsoft Learn).
Okno terminala
certreq -retrieve 42 response.cer
  • Pobiera certyfikat o identyfikatorze żądania 42
  • Zapisuje wynik w pliku response.cer (Microsoft Learn).
Okno terminala
certreq -new request.inf newrequest.req
  • request.inf zawiera sekcję [NewRequest] z parametrami takimi jak Subject, KeyLength, HashAlgorithm itd.
  • Wynikowy plik newrequest.req jest gotowy do wysłania do CA (Microsoft Learn).
Okno terminala
certreq -accept newcert.p7b
  • Akceptuje i instaluje odpowiedź z pełnym łańcuchem certyfikatów (.p7b lub .cer). (Microsoft Learn).
Okno terminala
certreq -enroll WebServerTemplate
  • Wysyła żądanie wg szablonu WebServerTemplate i automatycznie instaluje otrzymany certyfikat. (Microsoft Learn).

  • Plik .inf powinien być poprawnie sformatowany; w sekcji [NewRequest] co najmniej jedna opcja (Subject, KeyLength lub HashAlgorithm) musi być ustawiona (Microsoft Learn).
  • Jeśli CA wymaga uwierzytelnienia przy żądaniu do CES/CES (Certificate Enrollment Services), użyj argumentów -username i -p w środowisku web enrollment (gradenegger.eu).
  • W przypadku skryptów automatyzacji warto korzystać z opcji -config "CAserver\CAname" do określenia docelowego wydawcy certyfikatów (Microsoft Learn).
  • Narzędzie obsługuje także ukryte przełączniki, np. -EOBO (Enroll-On-Behalf-Of), -EnrollX, -AutoEnroll – pełna lista w dokumentacji PKI Solutions (PKI Solutions).
  • Alternatywnie do ręcznych skryptów można użyć PowerShellowego cmdletu Get-Certificate, który upraszcza proces rejestracji i instalacji certyfikatów (SS64).

Błąd / KomunikatPrzyczynaRozwiązanie
’certreq’ is not recognized as an internal or external commandBrak wpisu do %SystemRoot%\System32 w zmiennej PATH lub uszkodzona instalacja Windows.Upewnij się, że katalog C:\Windows\System32 jest w PATH, a plik certreq.exe istnieje; ewentualnie uruchom sfc /scannow.
The system cannot find the file specified.Niepoprawna ścieżka do pliku .inf lub pliku żądania.Sprawdź pełną ścieżkę i nazwę pliku; jeśli zawiera spacje, ujęcie w cudzysłowy, np. certreq -new "C:\Certs\request.inf".
Access is denied.Brak uprawnień do lokalizacji docelowej lub wymagane prawa administratora.Uruchom CMD jako administrator; jeśli żądasz na koncie użytkownika, dodaj -machine lub -user odpowiednio w pliku INF.
The request contains no certificate template informationPominięcie informacji o szablonie w żądaniu (brak RequestType lub Template).Dodaj do INF sekcję [Template] lub użyj przełącznika -config z nazwą szablonu, np. certreq -new -config "CA\CA" policy.inf req.req. (Microsoft Learn)
0x80070005 (E_ACCESSDENIED) podczas -retrieveBrak uprawnień do odczytu zasobu CA lub zły requestid.Użyj poprawnego identyfikatora, sprawdź uprawnienia w roli wydawcy certyfikatów, ewentualnie uruchom jako użytkownik z uprawnieniami.
No certificate found for request …Żądanie mogło zostać usunięte lub oczekuje w stanie pending.Zweryfikuj w konsoli CA status żądania, użyj certreq -retrieveHex 0x… lub sprawdź, czy administrator nie odrzucił żądania.

Porada: Przed masową automatyzacją zawsze testuj wszystkie etapy procesu ręcznie, by upewnić się, że pliki .inf, szablony i uprawnienia są poprawnie skonfigurowane.