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).
Składnia
Dział zatytułowany „Składnia”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] templatenamecertreq -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).
Parametry
Dział zatytułowany „Parametry”Przełącznik | Opis |
---|---|
-submit | Wysyła żądanie certyfikatu do wydawcy CA. Jeśli nie podano, jest traktowany jako domyślny. |
-retrieve | Pobiera certyfikat odpowiadający identyfikatorowi żądania (requestid ), tworząc plik .cer lub pełną odpowiedź. |
-new | Generuje nowe żądanie na podstawie pliku .inf , zapisując wynikowy plik .req . |
-accept | Akceptuje i instaluje odpowiedź certyfikatu (pliki .cer lub PKCS #7). |
-policy | Buduje żądanie cross-certification lub qualified subordination według pliku .inf . |
-sign | Podpisuje żądanie cross-certification lub qualified subordination. |
-enroll | Automatycznie 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
, uruchomcertreq -v -?
(Microsoft Learn).
Przykłady użycia
Dział zatytułowany „Przykłady użycia”1. Wysyłanie żądania certyfikatu
Dział zatytułowany „1. Wysyłanie żądania certyfikatu”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).
2. Pobieranie odpowiedzi od CA
Dział zatytułowany „2. Pobieranie odpowiedzi od CA”certreq -retrieve 42 response.cer
- Pobiera certyfikat o identyfikatorze żądania
42
- Zapisuje wynik w pliku
response.cer
(Microsoft Learn).
3. Tworzenie nowego żądania z INF
Dział zatytułowany „3. Tworzenie nowego żądania z INF”certreq -new request.inf newrequest.req
request.inf
zawiera sekcję[NewRequest]
z parametrami takimi jakSubject
,KeyLength
,HashAlgorithm
itd.- Wynikowy plik
newrequest.req
jest gotowy do wysłania do CA (Microsoft Learn).
4. Akceptacja i instalacja certyfikatu
Dział zatytułowany „4. Akceptacja i instalacja certyfikatu”certreq -accept newcert.p7b
- Akceptuje i instaluje odpowiedź z pełnym łańcuchem certyfikatów (
.p7b
lub.cer
). (Microsoft Learn).
5. Automatyczna rejestracja (Enrollment)
Dział zatytułowany „5. Automatyczna rejestracja (Enrollment)”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
lubHashAlgorithm
) 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).
Najczęściej spotykane błędy i jak je naprawić
Dział zatytułowany „Najczęściej spotykane błędy i jak je naprawić”Błąd / Komunikat | Przyczyna | Rozwiązanie |
---|---|---|
’certreq’ is not recognized as an internal or external command | Brak 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 information | Pominię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 -retrieve | Brak 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.