]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man1/openssl-ocsp.pod.in
Update copyright year
[thirdparty/openssl.git] / doc / man1 / openssl-ocsp.pod.in
CommitLineData
b4b1bdd5 1=pod
625c781d 2{- OpenSSL::safe::output_do_not_edit_headers(); -}
9fcb9702 3
b4b1bdd5
DSH
4=head1 NAME
5
4b537191 6openssl-ocsp - Online Certificate Status Protocol command
b4b1bdd5
DSH
7
8=head1 SYNOPSIS
9
49119647
DMSP
10=head2 OCSP Client
11
b4b1bdd5 12B<openssl> B<ocsp>
169394d4 13[B<-help>]
e8769719
RS
14[B<-out> I<file>]
15[B<-issuer> I<file>]
16[B<-cert> I<file>]
17[B<-serial> I<n>]
18[B<-signer> I<file>]
19[B<-signkey> I<file>]
20[B<-sign_other> I<file>]
49119647
DMSP
21[B<-nonce>]
22[B<-no_nonce>]
b4b1bdd5
DSH
23[B<-req_text>]
24[B<-resp_text>]
25[B<-text>]
49119647 26[B<-no_certs>]
e8769719
RS
27[B<-reqout> I<file>]
28[B<-respout> I<file>]
29[B<-reqin> I<file>]
30[B<-respin> I<file>]
e8769719 31[B<-url> I<URL>]
2f0ea936 32[B<-host> I<host>:I<port>]
46aa6078 33[B<-header>]
65718c51 34[B<-timeout> I<seconds>]
b4b1bdd5 35[B<-path>]
e8769719
RS
36[B<-VAfile> I<file>]
37[B<-validity_period> I<n>]
38[B<-status_age> I<n>]
bfcec27d 39[B<-noverify>]
e8769719 40[B<-verify_other> I<file>]
cc5ba6a7
DSH
41[B<-trust_other>]
42[B<-no_intern>]
e5b0508a 43[B<-no_signature_verify>]
cc5ba6a7
DSH
44[B<-no_cert_verify>]
45[B<-no_chain>]
46[B<-no_cert_checks>]
384dee51 47[B<-no_explicit>]
e8769719 48[B<-port> I<num>]
bbe9c3d5 49[B<-ignore_err>]
49119647
DMSP
50
51=head2 OCSP Server
52
53B<openssl> B<ocsp>
e8769719
RS
54[B<-index> I<file>]
55[B<-CA> I<file>]
56[B<-rsigner> I<file>]
57[B<-rkey> I<file>]
1cf20ca3 58[B<-passin> I<arg>]
e8769719
RS
59[B<-rother> I<file>]
60[B<-rsigopt> I<nm>:I<v>]
65718c51
RS
61[B<-rmd> I<digest>]
62[B<-badsig>]
e5b0508a 63[B<-resp_no_certs>]
e8769719
RS
64[B<-nmin> I<n>]
65[B<-ndays> I<n>]
e5b0508a 66[B<-resp_key_id>]
e8769719 67[B<-nrequest> I<n>]
49119647 68[B<-multi> I<process-count>]
e8769719 69[B<-rcid> I<digest>]
8dc57d76 70[B<-I<digest>>]
9fcb9702 71{- $OpenSSL::safe::opt_trust_synopsis -}
21d08b9e 72{- $OpenSSL::safe::opt_v_synopsis -}
6bd4e3f2 73{- $OpenSSL::safe::opt_provider_synopsis -}
b4b1bdd5 74
9f3c076b 75=for openssl ifdef multi
1738c0ce 76
b4b1bdd5
DSH
77=head1 DESCRIPTION
78
a068630a
UM
79The Online Certificate Status Protocol (OCSP) enables applications to
80determine the (revocation) state of an identified certificate (RFC 2560).
81
35a810bb 82This command performs many common OCSP tasks. It can be used
b4b1bdd5 83to print out requests and responses, create requests and send queries
534a1ed0 84to an OCSP responder and behave like a mini OCSP server itself.
b4b1bdd5 85
3dfda1a6 86=head1 OPTIONS
0634424f
RS
87
88This command operates as either a client or a server.
89The options are described below, divided into those two modes.
90
91=head2 OCSP Client Options
b4b1bdd5
DSH
92
93=over 4
94
169394d4
MR
95=item B<-help>
96
97Print out a usage message.
98
e8769719 99=item B<-out> I<filename>
b4b1bdd5
DSH
100
101specify output filename, default is standard output.
102
e8769719 103=item B<-issuer> I<filename>
b4b1bdd5
DSH
104
105This specifies the current issuer certificate. This option can be used
2f0ea936 106multiple times. The certificate specified in I<filename> must be in
0d7f6fc7 107PEM format. This option B<MUST> come before any B<-cert> options.
b4b1bdd5 108
e8769719 109=item B<-cert> I<filename>
b4b1bdd5 110
2f0ea936
RL
111Add the certificate I<filename> to the request. The issuer certificate
112is taken from the previous B<-issuer> option, or an error occurs if no
b4b1bdd5
DSH
113issuer certificate is specified.
114
e8769719 115=item B<-serial> I<num>
b4b1bdd5 116
2f0ea936 117Same as the B<-cert> option except the certificate with serial number
bfcec27d 118B<num> is added to the request. The serial number is interpreted as a
a43384fd
RL
119decimal integer unless preceded by C<0x>. Negative integers can also
120be specified by preceding the value by a C<-> sign.
b4b1bdd5 121
e8769719 122=item B<-signer> I<filename>, B<-signkey> I<filename>
b4b1bdd5 123
2f0ea936
RL
124Sign the OCSP request using the certificate specified in the B<-signer>
125option and the private key specified by the B<-signkey> option. If
126the B<-signkey> option is not present then the private key is read
b4b1bdd5
DSH
127from the same file as the certificate. If neither option is specified then
128the OCSP request is not signed.
129
e8769719 130=item B<-sign_other> I<filename>
e5b0508a
DSH
131
132Additional certificates to include in the signed request.
133
b4b1bdd5
DSH
134=item B<-nonce>, B<-no_nonce>
135
136Add an OCSP nonce extension to a request or disable OCSP nonce addition.
2f0ea936
RL
137Normally if an OCSP request is input using the B<-reqin> option no
138nonce is added: using the B<-nonce> option will force addition of a nonce.
139If an OCSP request is being created (using B<-cert> and B<-serial> options)
140a nonce is automatically added specifying B<-no_nonce> overrides this.
b4b1bdd5
DSH
141
142=item B<-req_text>, B<-resp_text>, B<-text>
143
c4de074e 144Print out the text form of the OCSP request, response or both respectively.
b4b1bdd5 145
e8769719 146=item B<-reqout> I<file>, B<-respout> I<file>
b4b1bdd5 147
2f0ea936 148Write out the DER encoded certificate request or response to I<file>.
b4b1bdd5 149
e8769719 150=item B<-reqin> I<file>, B<-respin> I<file>
b4b1bdd5 151
2f0ea936 152Read OCSP request or response file from I<file>. These option are ignored
b4b1bdd5 153if OCSP request or response creation is implied by other options (for example
2f0ea936 154with B<-serial>, B<-cert> and B<-host> options).
b4b1bdd5 155
e8769719 156=item B<-url> I<responder_url>
cc5ba6a7 157
c4de074e 158Specify the responder URL. Both HTTP and HTTPS (SSL/TLS) URLs can be specified.
cc5ba6a7 159
2f0ea936 160=item B<-host> I<hostname>:I<port>, B<-path> I<pathname>
b4b1bdd5 161
2f0ea936
RL
162If the B<-host> option is present then the OCSP request is sent to the host
163I<hostname> on port I<port>. The B<-path> option specifies the HTTP pathname
164to use or "/" by default. This is equivalent to specifying B<-url> with scheme
21c6c50f 165http:// and the given hostname, port, and pathname.
b4b1bdd5 166
2f0ea936 167=item B<-header> I<name>=I<value>
46aa6078 168
2f0ea936 169Adds the header I<name> with the specified I<value> to the OCSP request
46aa6078
RS
170that is sent to the responder.
171This may be repeated.
172
e8769719 173=item B<-timeout> I<seconds>
de87dd46 174
3e3c7c36
VD
175Connection timeout to the OCSP responder in seconds.
176On POSIX systems, when running as an OCSP responder, this option also limits
177the time that the responder is willing to wait for the client request.
178This time is measured from the time the responder accepts the connection until
179the complete request is received.
180
e8769719 181=item B<-verify_other> I<file>
cc5ba6a7 182
c4de074e 183File containing additional certificates to search when attempting to locate
cc5ba6a7 184the OCSP response signing certificate. Some responders omit the actual signer's
3b80e3aa 185certificate from the response: this option can be used to supply the necessary
cc5ba6a7
DSH
186certificate in such cases.
187
188=item B<-trust_other>
189
c4de074e 190The certificates specified by the B<-verify_other> option should be explicitly
cc5ba6a7 191trusted and no additional checks will be performed on them. This is useful
3b80e3aa 192when the complete responder certificate chain is not available or trusting a
cc5ba6a7
DSH
193root CA is not appropriate.
194
e8769719 195=item B<-VAfile> I<file>
cc5ba6a7 196
c4de074e 197File containing explicitly trusted responder certificates. Equivalent to the
0d7f6fc7 198B<-verify_other> and B<-trust_other> options.
cc5ba6a7 199
bfcec27d
DSH
200=item B<-noverify>
201
c4de074e
P
202Don't attempt to verify the OCSP response signature or the nonce
203values. This option will normally only be used for debugging since it
204disables all verification of the responders certificate.
cc5ba6a7
DSH
205
206=item B<-no_intern>
207
c4de074e 208Ignore certificates contained in the OCSP response when searching for the
cc5ba6a7 209signers certificate. With this option the signers certificate must be specified
0d7f6fc7 210with either the B<-verify_other> or B<-VAfile> options.
cc5ba6a7 211
e5b0508a 212=item B<-no_signature_verify>
cc5ba6a7 213
c4de074e
P
214Don't check the signature on the OCSP response. Since this option
215tolerates invalid signatures on OCSP responses it will normally only be
216used for testing purposes.
cc5ba6a7
DSH
217
218=item B<-no_cert_verify>
219
c4de074e
P
220Don't verify the OCSP response signers certificate at all. Since this
221option allows the OCSP response to be signed by any certificate it should
222only be used for testing purposes.
cc5ba6a7
DSH
223
224=item B<-no_chain>
225
c4de074e 226Do not use certificates in the response as additional untrusted CA
cc5ba6a7
DSH
227certificates.
228
384dee51
DSH
229=item B<-no_explicit>
230
c4de074e 231Do not explicitly trust the root CA if it is set to be trusted for OCSP signing.
384dee51 232
cc5ba6a7
DSH
233=item B<-no_cert_checks>
234
c4de074e 235Don't perform any additional checks on the OCSP response signers certificate.
cc5ba6a7 236That is do not make any checks to see if the signers certificate is authorised
3b80e3aa 237to provide the necessary status information: as a result this option should
cc5ba6a7
DSH
238only be used for testing purposes.
239
e8769719 240=item B<-validity_period> I<nsec>, B<-status_age> I<age>
cc5ba6a7 241
c4de074e 242These options specify the range of times, in seconds, which will be tolerated
6302bbd2
DSH
243in an OCSP response. Each certificate status response includes a B<notBefore>
244time and an optional B<notAfter> time. The current time should fall between
245these two values, but the interval between the two times may be only a few
246seconds. In practice the OCSP responder and clients clocks may not be precisely
247synchronised and so such a check may fail. To avoid this the
248B<-validity_period> option can be used to specify an acceptable error range in
249seconds, the default value is 5 minutes.
250
251If the B<notAfter> time is omitted from a response then this means that new
252status information is immediately available. In this case the age of the
2f0ea936 253B<notBefore> field is checked to see it is not older than I<age> seconds old.
6302bbd2 254By default this additional check is not performed.
bfcec27d 255
e8769719 256=item B<-rcid> I<digest>
0770c882
TS
257
258This option sets the digest algorithm to use for certificate identification
35a810bb 259in the OCSP response. Any digest supported by the L<openssl-dgst(1)> command can
0770c882
TS
260be used. The default is the same digest algorithm used in the request.
261
8dc57d76 262=item B<-I<digest>>
cec2538c 263
c4de074e 264This option sets digest algorithm to use for certificate identification in the
6302bbd2
DSH
265OCSP request. Any digest supported by the OpenSSL B<dgst> command can be used.
266The default is SHA-1. This option may be used multiple times to specify the
267digest used by subsequent certificate identifiers.
cec2538c 268
9fcb9702
RS
269{- $OpenSSL::safe::opt_trust_item -}
270
21d08b9e
RS
271{- $OpenSSL::safe::opt_v_item -}
272
6bd4e3f2
P
273{- $OpenSSL::safe::opt_provider_item -}
274
b4b1bdd5
DSH
275=back
276
0634424f 277=head2 OCSP Server Options
534a1ed0
DSH
278
279=over 4
280
e8769719 281=item B<-index> I<indexfile>
534a1ed0 282
2f0ea936 283The I<indexfile> parameter is the name of a text index file in B<ca>
c4de074e 284format containing certificate revocation information.
534a1ed0 285
35a810bb
RL
286If the B<-index> option is specified then this command switches to
287responder mode, otherwise it is in client mode. The request(s) the responder
2f0ea936
RL
288processes can be either specified on the command line (using B<-issuer>
289and B<-serial> options), supplied in a file (using the B<-reqin> option)
290or via external OCSP clients (if B<-port> or B<-url> is specified).
534a1ed0 291
2f0ea936 292If the B<-index> option is present then the B<-CA> and B<-rsigner> options
c4de074e 293must also be present.
534a1ed0 294
e8769719 295=item B<-CA> I<file>
534a1ed0 296
2f0ea936
RL
297CA certificate corresponding to the revocation information in the index
298file given with B<-index>.
534a1ed0 299
e8769719 300=item B<-rsigner> I<file>
534a1ed0
DSH
301
302The certificate to sign OCSP responses with.
303
e8769719 304=item B<-rkey> I<file>
534a1ed0 305
c4de074e 306The private key to sign OCSP responses with: if not present the file
2f0ea936 307specified in the B<-rsigner> option is used.
534a1ed0 308
1cf20ca3 309=item B<-passin> I<arg>
310
311The private key password source. For more information about the format of I<arg>
312see L<openssl(1)/Pass Phrase Options>.
313
49119647
DMSP
314=item B<-rother> I<file>
315
316Additional certificates to include in the OCSP response.
317
e8769719 318=item B<-rsigopt> I<nm>:I<v>
89623f84
DC
319
320Pass options to the signature algorithm when signing OCSP responses.
321Names and values of these options are algorithm-specific.
322
65718c51
RS
323=item B<-rmd> I<digest>
324
325The digest to use when signing the response.
326
327=item B<-badsig>
328
329Corrupt the response signature before writing it; this can be useful
330for testing.
331
49119647
DMSP
332=item B<-resp_no_certs>
333
334Don't include any certificates in the OCSP response.
335
336=item B<-resp_key_id>
337
338Identify the signer certificate using the key ID, default is to use the
339subject name.
340
e8769719 341=item B<-port> I<portnum>
534a1ed0 342
c4de074e
P
343Port to listen for OCSP requests on. The port may also be specified
344using the B<url> option.
534a1ed0 345
bbe9c3d5
JB
346=item B<-ignore_err>
347
348Ignore malformed requests or responses: When acting as an OCSP client, retry if
349a malformed response is received. When acting as an OCSP responder, continue
350running instead of terminating upon receiving a malformed request.
351
e8769719 352=item B<-nrequest> I<number>
534a1ed0 353
2f0ea936 354The OCSP server will exit after receiving I<number> requests, default unlimited.
534a1ed0 355
49119647
DMSP
356=item B<-multi> I<process-count>
357
358Run the specified number of OCSP responder child processes, with the parent
359process respawning child processes as needed.
360Child processes will detect changes in the CA index file and automatically
361reload it.
362When running as a responder B<-timeout> option is recommended to limit the time
363each child is willing to wait for the client's OCSP response.
364This option is available on POSIX systems (that support the fork() and other
365required unix system-calls).
366
367
e8769719 368=item B<-nmin> I<minutes>, B<-ndays> I<days>
534a1ed0 369
c4de074e
P
370Number of minutes or days when fresh revocation information is available:
371used in the B<nextUpdate> field. If neither option is present then the
372B<nextUpdate> field is omitted meaning fresh revocation information is
373immediately available.
534a1ed0
DSH
374
375=back
376
485d3361 377=head1 OCSP RESPONSE VERIFICATION
bfcec27d
DSH
378
379OCSP Response follows the rules specified in RFC2560.
380
381Initially the OCSP responder certificate is located and the signature on
3b80e3aa 382the OCSP request checked using the responder certificate's public key.
bfcec27d
DSH
383
384Then a normal certificate verify is performed on the OCSP responder certificate
385building up a certificate chain in the process. The locations of the trusted
fd3397fc
RL
386certificates used to build the chain can be specified by the B<-CAfile>,
387B<-CApath> or B<-CAstore> options or they will be looked for in the
388standard OpenSSL certificates directory.
bfcec27d
DSH
389
390If the initial verify fails then the OCSP verify process halts with an
391error.
392
393Otherwise the issuing CA certificate in the request is compared to the OCSP
394responder certificate: if there is a match then the OCSP verify succeeds.
395
396Otherwise the OCSP responder certificate's CA is checked against the issuing
397CA certificate in the request. If there is a match and the OCSPSigning
398extended key usage is present in the OCSP responder certificate then the
399OCSP verify succeeds.
400
384dee51
DSH
401Otherwise, if B<-no_explicit> is B<not> set the root CA of the OCSP responders
402CA is checked to see if it is trusted for OCSP signing. If it is the OCSP
403verify succeeds.
bfcec27d
DSH
404
405If none of these checks is successful then the OCSP verify fails.
406
407What this effectively means if that if the OCSP responder certificate is
408authorised directly by the CA it is issuing revocation information about
409(and it is correctly configured) then verification will succeed.
410
411If the OCSP responder is a "global responder" which can give details about
412multiple CAs and has its own separate certificate chain then its root
cc5ba6a7 413CA can be trusted for OCSP signing. For example:
bfcec27d
DSH
414
415 openssl x509 -in ocspCA.pem -addtrust OCSPSigning -out trustedCA.pem
416
cc5ba6a7
DSH
417Alternatively the responder certificate itself can be explicitly trusted
418with the B<-VAfile> option.
b4b1bdd5 419
cc5ba6a7 420=head1 NOTES
b4b1bdd5 421
cc5ba6a7 422As noted, most of the verify options are for testing or debugging purposes.
fd3397fc
RL
423Normally only the B<-CApath>, B<-CAfile>, B<-CAstore> and (if the responder
424is a 'global VA') B<-VAfile> options need to be used.
b4b1bdd5 425
534a1ed0
DSH
426The OCSP server is only useful for test and demonstration purposes: it is
427not really usable as a full OCSP responder. It contains only a very
428simple HTTP request handling and can only handle the POST form of OCSP
429queries. It also handles requests serially meaning it cannot respond to
430new requests until it has processed the current one. The text index file
431format of revocation is also inefficient for large quantities of revocation
432data.
433
35a810bb 434It is possible to run this command in responder mode via a CGI
2f0ea936 435script using the B<-reqin> and B<-respout> options.
534a1ed0 436
b4b1bdd5
DSH
437=head1 EXAMPLES
438
439Create an OCSP request and write it to a file:
440
441 openssl ocsp -issuer issuer.pem -cert c1.pem -cert c2.pem -reqout req.der
442
1bc74519 443Send a query to an OCSP responder with URL http://ocsp.myhost.com/ save the
21c6c50f 444response to a file, print it out in text form, and verify the response:
b4b1bdd5
DSH
445
446 openssl ocsp -issuer issuer.pem -cert c1.pem -cert c2.pem \
cc5ba6a7 447 -url http://ocsp.myhost.com/ -resp_text -respout resp.der
b4b1bdd5
DSH
448
449Read in an OCSP response and print out text form:
450
21c6c50f 451 openssl ocsp -respin resp.der -text -noverify
b4b1bdd5 452
534a1ed0
DSH
453OCSP server on port 8888 using a standard B<ca> configuration, and a separate
454responder certificate. All requests and responses are printed to a file.
455
456 openssl ocsp -index demoCA/index.txt -port 8888 -rsigner rcert.pem -CA demoCA/cacert.pem
1bc74519 457 -text -out log.txt
534a1ed0
DSH
458
459As above but exit after processing one request:
460
461 openssl ocsp -index demoCA/index.txt -port 8888 -rsigner rcert.pem -CA demoCA/cacert.pem
462 -nrequest 1
463
21c6c50f 464Query status information using an internally generated request:
534a1ed0
DSH
465
466 openssl ocsp -index demoCA/index.txt -rsigner rcert.pem -CA demoCA/cacert.pem
467 -issuer demoCA/cacert.pem -serial 1
468
21c6c50f
BK
469Query status information using request read from a file, and write the response
470to a second file.
534a1ed0
DSH
471
472 openssl ocsp -index demoCA/index.txt -rsigner rcert.pem -CA demoCA/cacert.pem
473 -reqin req.der -respout resp.der
fa7b0111
MC
474
475=head1 HISTORY
476
fc5ecadd 477The -no_alt_chains option was added in OpenSSL 1.1.0.
fa7b0111 478
e2f92610
RS
479=head1 COPYRIGHT
480
33388b44 481Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.
e2f92610 482
449040b4 483Licensed under the Apache License 2.0 (the "License"). You may not use
e2f92610
RS
484this file except in compliance with the License. You can obtain a copy
485in the file LICENSE in the source distribution or at
486L<https://www.openssl.org/source/license.html>.
487
488=cut