xf.li | 6c8fc1e | 2023-08-12 00:11:09 -0700 | [diff] [blame^] | 1 | c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al. |
| 2 | SPDX-License-Identifier: curl |
| 3 | Short: E |
| 4 | Long: cert |
| 5 | Arg: <certificate[:password]> |
| 6 | Help: Client certificate file and password |
| 7 | Protocols: TLS |
| 8 | See-also: cert-type key key-type |
| 9 | Category: tls |
| 10 | Example: --cert certfile --key keyfile $URL |
| 11 | Added: 5.0 |
| 12 | Multi: single |
| 13 | --- |
| 14 | Tells curl to use the specified client certificate file when getting a file |
| 15 | with HTTPS, FTPS or another SSL-based protocol. The certificate must be in |
| 16 | PKCS#12 format if using Secure Transport, or PEM format if using any other |
| 17 | engine. If the optional password is not specified, it will be queried for on |
| 18 | the terminal. Note that this option assumes a certificate file that is the |
| 19 | private key and the client certificate concatenated. See --cert and --key to |
| 20 | specify them independently. |
| 21 | |
| 22 | In the <certificate> portion of the argument, you must escape the character ":" |
| 23 | as "\\:" so that it is not recognized as the password delimiter. Similarly, you |
| 24 | must escape the character "\\" as "\\\\" so that it is not recognized as an |
| 25 | escape character. |
| 26 | |
| 27 | If curl is built against the NSS SSL library then this option can tell |
| 28 | curl the nickname of the certificate to use within the NSS database defined |
| 29 | by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the |
| 30 | NSS PEM PKCS#11 module (libnsspem.so) is available then PEM files may be |
| 31 | loaded. |
| 32 | |
| 33 | If you provide a path relative to the current directory, you must prefix the |
| 34 | path with "./" in order to avoid confusion with an NSS database nickname. |
| 35 | |
| 36 | If curl is built against OpenSSL library, and the engine pkcs11 is available, |
| 37 | then a PKCS#11 URI (RFC 7512) can be used to specify a certificate located in |
| 38 | a PKCS#11 device. A string beginning with "pkcs11:" will be interpreted as a |
| 39 | PKCS#11 URI. If a PKCS#11 URI is provided, then the --engine option will be set |
| 40 | as "pkcs11" if none was provided and the --cert-type option will be set as |
| 41 | "ENG" if none was provided. |
| 42 | |
| 43 | (iOS and macOS only) If curl is built against Secure Transport, then the |
| 44 | certificate string can either be the name of a certificate/private key in the |
| 45 | system or user keychain, or the path to a PKCS#12-encoded certificate and |
| 46 | private key. If you want to use a file from the current directory, please |
| 47 | precede it with "./" prefix, in order to avoid confusion with a nickname. |
| 48 | |
| 49 | (Schannel only) Client certificates must be specified by a path |
| 50 | expression to a certificate store. (Loading PFX is not supported; you can |
| 51 | import it to a store first). You can use |
| 52 | "<store location>\\<store name>\\<thumbprint>" to refer to a certificate |
| 53 | in the system certificates store, for example, |
| 54 | "CurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is |
| 55 | usually a SHA-1 hex string which you can see in certificate details. Following |
| 56 | store locations are supported: CurrentUser, LocalMachine, CurrentService, |
| 57 | Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy, |
| 58 | LocalMachineEnterprise. |