OPENSSL-REQ(1ossl)
๐ NAME ๐
openssl-req is the main character of the OPENSSL-REQ(1ossl) manual โ it primarily creates and processes certificate requests (CSRs) in PKCS#10 format, and it can also create self-signed certificates for stuff like root CAs, no cap. โจ
๐ธ SYNOPSIS ๐ธ
openssl req [-help] [-cipher] [-inform DER|PEM] [-outform DER|PEM] [-in
filename] [-passin arg] [-out filename] [-passout arg] [-text] [-pubkey]
[-noout] [-verify] [-modulus] [-new] [-newkey arg] [-pkeyopt opt:value]
[-noenc] [-nodes] [-key filename|uri] [-keyform DER|PEM|P12|ENGINE]
[-keyout filename] [-keygen_engine id] [-digest] [-config filename]
[-section name] [-x509] [-x509v1] [-CA filename|uri] [-CAkey
filename|uri] [-not_before date] [-not_after date] [-days n]
[-set_serial n] [-newhdr] [-copy_extensions arg] [-extensions section]
[-reqexts section] [-addext ext] [-precert] [-utf8] [-reqopt] [-subject]
[-subj arg] [-multivalue-rdn] [-sigopt nm:v] [-vfyopt nm:v] [-batch]
[-verbose] [-quiet] [-nameopt option] [-rand files] [-writerand file]
[-engine id] [-provider name] [-provider-path path] [-provparam
[name:]key=value] [-propquery propq]
๐ฆ DESCRIPTION ๐ฆ
Okay so this command is mostly here to create and process certificate requests (CSRs) in PKCS#10 format. It can also create self-signed certificates for use as root CAs, for example. Iconic behavior, honestly. ๐
โจ OPTIONS โจ
-helpโ prints out a usage message. Simple. Clean. We love a helpful queen. ๐-inform DER|PEMโ the CSR input file format to use; by defaultPEMis tried first. Seeopenssl-format-options(1)for details. Format tea incoming. โ-outform DER|PEMโ the output format; unspecified by default. Seeopenssl-format-options(1)for details. The data is a PKCS#10 object. That last bit matters, bestie. ๐-cipher nameโ specify the cipher to be used for encrypting the private key. If no cipher is specified,AES-256-CBCwill be used by default. You can override this by providing any valid OpenSSL cipher name. Default cipher, but make it customizable. ๐ฅ-in filenameโ this specifies the input filename to read a request from. It defaults to standard input unless-x509or-CAis specified. A request is only read if the creation options (-newor-newkeyor-precert) are not specified. Read the room: creation mode means no input request. ๐ซถ-sigopt nm:vโ pass options to the signature algorithm during sign operations. Names and values of these options are algorithm-specific. Signature algorithm says: details vary. โจ-vfyopt nm:vโ pass options to the signature algorithm during verify operations. Names and values of these options are algorithm-specific. Same deal, but for verifying. ๐ฆ-passin argโ the password source for private key and certificate input. For more information about the format ofargseeopenssl-passphrase-options(1). Password lore is in another manual. ๐-passout argโ the password source for the output file. For more information about the format ofargseeopenssl-passphrase-options(1). Again: password lore, other manual. ๐-out filenameโ this specifies the output filename to write to, or standard output by default. Write it where you want it, or just let it vibe to stdout. ๐-textโ prints out the certificate request in text form. Human-readable moment. ๐-subjectโ prints out the certificate request subject (or certificate subject if-x509is in use). Subject reveal. ๐-pubkeyโ prints out the public key. Public key, but make it printed. ๐-nooutโ this option prevents output of the encoded version of the certificate request. No encoded output for you. ๐-modulusโ prints out the value of the modulus of the public key contained in the request. Modulus math, but visible. ๐งฎ-verifyโ verifies the self-signature on the request. If the verification fails, the program will immediately exit, i.e. further option processing (e.g.-text) is skipped. Itโs giving strict bouncer energy: fail the check and youโre out immediately. ๐-newโ this option generates a new certificate request. It will prompt the user for the relevant field values. The actual fields prompted for and their maximum and minimum sizes are specified in the configuration file and any requested extensions. Fresh request, fresh prompts, fresh start. ๐
If the -key option is not given it will generate a new private key using information specified in the configuration file or given with the -newkey and -pkeyopt options, else by default an RSA key with 2048 bits length. Default key behavior, right there. ๐
-newkey argโ this option is used to generate a new private key unless-keyis given. It is subsequently used as if it was given using the-keyoption. This option implies the-newflag to create a new certificate request or a new certificate in case-x509is used. Key generation with main character energy. ๐
The argument takes one of several forms. Pick your fighter: ๐ซ
[rsa:]nbitsโ generates an RSA keynbitsin size. Ifnbitsis omitted, i.e.,-newkey rsais specified, the default key size specified in the configuration file with thedefault_bitsoption is used if present, else2048.- All other algorithms support the
-newkey algname:fileform โ wherefileis an algorithm parameter file, created withopenssl genpkey -genparam, or an X.509 certificate for a key with appropriate algorithm. Parameter file or cert, depending on the vibe. param:fileโ generates a key using the parameter file or certificate file; the algorithm is determined by the parameters. Let the parameters decide.algname[:file]โ generates a key using the given algorithmalgname. If a parameter filefileis given then the parameters specified there are used, where the algorithm parameters must matchalgname. If algorithm parameters are not given, any necessary parameters should be specified via the-pkeyoptoption. Algorithm name and params need to match โ no mismatched chaos.dsa:filenameโ generates a DSA key using the parameters in the filefilename.ec:filenamegenerates EC key (usable both with ECDSA or ECDH algorithms),gost2001:filenamegenerates GOST R 34.10-2001 key (requires gost engine configured in the configuration file). If justgost2001is specified a parameter set should be specified by-pkeyopt paramset:X. Specific algorithm lore, preserved exactly. ๐ง
-pkeyopt opt:valueโ set the public key algorithm optionopttovalue. The precise set of options supported depends on the public key algorithm used and its implementation. See"KEY GENERATION OPTIONS"inopenssl-genpkey(1)for more details. Options go in, algorithm-specific behavior comes out. โ๏ธ-key filename|uriโ this option provides the private key for signing a new certificate or certificate request. Unless-inis given, the corresponding public key is placed in the new certificate or certificate request, resulting in a self-signature. For certificate signing this option is overridden by the-CAoption. This option also accepts PKCS#8 format private keys for PEM format files. Key material, but with format range. ๐-keyform DER|PEM|P12|ENGINEโ the format of the private key; unspecified by default. Seeopenssl-format-options(1)for details. Key format check, bestie. ๐ฆ-keyout filenameโ this gives the filename to write any private key to that has been newly created or read from-key. If neither the-keyoutoption nor the-keyoption are given then the filename specified in the configuration file with thedefault_keyfileoption is used, if present. Thus, if you want to write the private key and the-keyoption is provided, you should provide the-keyoutoption explicitly. If a new key is generated and no filename is specified the key is written to standard output. Do not skip-keyoutif you actually want the key saved somewhere specific โ thatโs the whole point. ๐-noencโ if this option is specified then if a private key is created it will not be encrypted. No encryption on the new key. Slay, but know what youโre doing. ๐-nodesโ this option is deprecated since OpenSSL 3.0; use-noencinstead. Deprecated. The group chat has moved on to-noenc. ๐-digestโ this specifies the message digest to sign the request. Any digest supported by the OpenSSLdgstcommand can be used. This overrides the digest algorithm specified in the configuration file. Some public key algorithms may override this choice. For instance, DSA signatures always useSHA1, GOST R 34.10 signatures always use GOST R 34.11-94 (-md_gost94), Ed25519 and Ed448 never use any digest. Digest picks are real, but some algorithms have their own rules. ๐-config filenameโ this allows an alternative configuration file to be specified. Optional; for a description of the default value, see"COMMAND SUMMARY"inopenssl(1). Config file, but make it alternative. ๐-section nameโ specifies the name of the section to use; the default isreq. Section named, default noted. ๐-subj argโ sets subject name for new request or supersedes the subject name when processing a certificate request. Subject name, set or override. ๐ช
The arg must be formatted as "/type0=value0/type1=value1/type2=...". Special characters may be escaped by "\" (backslash), whitespace is retained. Empty values are permitted, but the corresponding type will not be included in the request. Giving a single "/" will lead to an empty sequence of RDNs (a NULL-DN). Multi-valued RDNs can be formed by placing a "+" character instead of a "/" between the AttributeValueAssertions (AVAs) that specify the members of the set. Example: Format rules are non-negotiable, but theyโre right here. ๐ซ
"/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe"
-multivalue-rdnโ this option has been deprecated and has no effect. Deprecated and literally does nothing. No cap. ๐-x509โ this option outputs a certificate instead of a certificate request. This is typically used to generate test certificates. It is implied by the-CAoption. Certificate mode, activated. ๐
This option implies the -new flag if -in is not given. If an existing request is specified with the -in option, it is converted to a certificate; otherwise a request is created from scratch. Unless specified using the -set_serial option, a large random number will be used for the serial number. Unless the -copy_extensions option is used, X.509 extensions are not copied from any provided request input file. Extensions do not sneak in unless you ask. ๐ซ
X.509 extensions to be added can be specified in the configuration file, possibly using the -config and -extensions options, and/or using the -addext option. Unless -x509v1 is given, generated certificates bear X.509 version 3. Unless specified otherwise, key identifier extensions are included as described in x509v3_config(5). Version 3 by default, with key identifier extensions unless told otherwise. ๐
-x509v1โ request generation of certificates with X.509 version 1. This implies-x509. If X.509 extensions are given, anyway X.509 version 3 is set. Version 1 request, but extensions drag it back to version 3. ๐-CA filename|uriโ specifies the"CA"certificate to be used for signing a new certificate and implies use of-x509. When present, this behaves like a"micro CA"as follows: The subject name of the"CA"certificate is placed as issuer name in the new certificate, which is then signed using the"CA"key given as specified below. Micro CA mode: tiny but fully in charge. ๐-CAkey filename|uriโ sets the"CA"private key to sign a certificate with. The private key must match the public key of the certificate given with-CA. If this option is not provided then the key must be present in the-CAinput. Matching key required โ no mismatched key chaos allowed. ๐-not_before dateโ when-x509is in use this allows the start date to be explicitly set, otherwise it is ignored. The format of date isYYMMDDHHMMSSZ(the same as an ASN1 UTCTime structure), orYYYYMMDDHHMMSSZ(the same as an ASN1 GeneralizedTime structure). In both formats, secondsSSand timezoneZmust be present. Alternatively, you can also use"today". Start date control, with very specific format rules and one iconic shortcut. ๐ฐ๏ธ-not_after dateโ okay so when you've got-x509in play, this lets you straight-up pick the expiry date yourself. No-x509? Then it's ignored, periodt. ๐
The format of date is YYMMDDHHMMSSZ (same energy as an ASN1 UTCTime structure) or YYYYMMDDHHMMSSZ (same as an ASN1 GeneralizedTime structure). In both formats, the seconds SS and the timezone Z have to be there โ no skipping them, bestie, it's not optional.
Alternatively you can just throw in "today" and call it a day.
Heads up: this overrides the -days option.
-days nโ with-x509active, this says how many days from today the cert should be valid for. No-x509? Ignored, sorry. n should be a positive integer, and the default is30days.
Not to be dramatic but: regardless of the -not_before option, the days are always counted from today. And when you use it together with -not_after, the explicit expiry date takes precedence. ๐
-set_serial nโ the serial number to use when you're outputting a self-signed cert. You can write it as a decimal value, or as hex if you slap"0x"in front. Don't give one? It'll use a big random number instead. ๐ฒ-copy_extensions argโ controls how X.509 extensions inside certificate requests get handled when-x509is in use. If arg isnone, or you just don't pass this option at all, the extensions get ignored. If arg iscopyorcopyall, then all the extensions in the request get copied over to the certificate.
The main use of this option is letting a certificate request supply values for certain extensions, like subjectAltName. ๐ฆ
-extensions section,-reqexts sectionโ lets you override the name of the config file section that X.509 extensions get pulled from โ either for the certificate (when-x509is in use) or for the certificate request. This means you can have a bunch of different sections in the same config file, specifying requests for all sorts of different purposes. One config file, many vibes. โจ-addext extโ adds one specific extension to the certificate (if-x509is in use) or to the certificate request. The argument has to look like a"key=value"pair, exactly how it'd appear in a config file.
If you add an extension here that has the same OID as one defined in the extension section of the config file, this one overrides that one. Your add, your rules. ๐
You can pass this option multiple times โ but when you do, the same key must not be given more than once.
-precertโ adds a poison extension to the certificate, which makes it a "pre-certificate" (seeRFC6962). You can submit that to Certificate Transparency logs to get signed certificate timestamps (SCTs), and then embed those SCTs into the pre-certificate as an extension โ before removing the poison and signing the certificate. Whole little glow-up journey. ๐ง
This implies the -new flag.
-utf8โ makes field values get interpreted as UTF8 strings; by default they're interpreted as ASCII. That means the field values โ whether they're prompted from a terminal or pulled out of a config file โ must be valid UTF8 strings. No fake UTF8 out here, it'll be caught. ๐-reqopt optionโ customises the printing format used with-text. The argument can be a single option or multiple options separated by commas.
See the discussion of the -certopt parameter in the openssl-x509(1) command for the deets.
-newhdrโ adds the wordNEWto the PEM file header and footer lines of the outputted request. Some software (Netscape certificate server) and some CAs need this. Old school but iconic. ๐-batchโ non-interactive mode. No prompts, no chatting, just business. ๐ซถ-verboseโ prints extra details about the operations being performed. For when you simply must know everything.-quietโ prints fewer details about the operations being performed, which is handy during batch scripts or pipelines. Specifically: the "progress dots" during key generation are suppressed. Silence is golden. โญ-keygen_engine idโ specifies an engine (by its unique id string) to be used for key generation operations.-nameopt optionโ specifies how the subject or issuer names are displayed. Seeopenssl-namedisplay-options(1)for the full rundown.-rand files,-writerand fileโ see "Random State Options" inopenssl(1)for details.-engine idโ see "Engine Options" inopenssl(1). Also, quick vibe check: this option is deprecated. ๐ซ-provider name,-provider-path path,-provparam [name:]key=value,-propquery propqโ see "Provider Options" inopenssl(1),provider(7), andproperty(7).
๐ CONFIGURATION FILE FORMAT ๐
The config options live in the req section of the configuration file. You can pick an alternate name by using the -section option. And, same as with literally all configuration files: if no value is specified in the specific section, then the initial unnamed or default section gets searched too. Fingers crossed it's in there. ๐
The options available are described in detail below.
input_password,output_passwordโ the passwords for the input private key file (if there is one) and the output private key file (if one's gonna be created). The command line optionspassinandpassoutoverride whatever the config file says.default_bitsโ specifies the default key size in bits.
This one gets used together with the -new option to generate a new key. You can override it by specifying an explicit key size in the -newkey option. The smallest accepted key size is 512 bits. And if no key size is specified at all, 2048 bits is used.
default_keyfileโ the default filename to write a private key to. Not specified? Then the key gets written to standard output. The-keyoutoption can override this.oid_fileโ specifies a file containing additional OBJECT IDENTIFIERS. Each line of the file should be: the numerical form of the object identifier, then whitespace, then the short name, then whitespace, and finally the long name. Order matters, bestie. โจoid_sectionโ specifies a section in the configuration file containing extra object identifiers. Each line should be the short name of the object identifier, then=, then the numerical form. When this option is used, the short and long names are the same.RANDFILEโ at startup the specified file is loaded into the random number generator, and at exit256bytes will be written to it. It's used for private key generation. ๐ฒencrypt_keyโ if this is set tonothen, if a private key is generated, it is not encrypted. Equivalent to the-noenccommand line option. For compatibility,encrypt_rsa_keyis an equivalent option. iykyk.default_mdโ specifies the digest algorithm to use. Any digest supported by the OpenSSLdgstcommand works here. Can be overridden on the command line. Heads up though: certain signing algorithms (i.e.Ed25519andEd448) will ignore any digest that's been set. They do what they want. ๐string_maskโ masks out the use of certain string types in certain fields. Most users will not need to change this option. It can be set to several values:utf8onlyโ onlyUTF8Stringsare used (this is the default value)pkixโ any string type exceptT61Stringsnombstrโ any string type exceptBMPStringsandUTF8Stringsdefaultโ any kind of string type
Note that utf8only is the PKIX recommendation in RFC2459 after 2003, and it's the default string_mask; default is not the default option (yes, we know, naming is chaos ๐ญ). The nombstr value is a workaround for some software that has problems with variable-sized BMPStrings and UTF8Strings.
req_extensionsโ specifies the configuration file section containing a list of extensions to add to the certificate request. Can be overridden by the-reqexts(or-extensions) command line switch. See thex509v3_config(5)manual page for details of the extension section format.x509_extensionsโ specifies the configuration file section containing a list of extensions to add to the certificate generated when-x509is in use. Can be overridden by the-extensionscommand line switch.promptโ if set to the valueno, this disables prompting of certificate fields and just takes values from the config file directly. It also changes the expected format of thedistinguished_nameandattributessections. Less talking, more doing. ๐ซถutf8โ if set to the valueyesthen field values get interpreted as UTF8 strings; by default they're interpreted as ASCII. Which means the field values โ whether prompted from a terminal or obtained from a config file โ must be valid UTF8 strings.attributesโ specifies the section containing any request attributes; its format is the same asdistinguished_name. Typically these may contain thechallengePasswordorunstructuredNametypes. They're currently ignored by OpenSSL's request signing utilities, but some CAs might want them.distinguished_nameโ specifies the section containing the distinguished name fields to prompt for when generating a certificate or certificate request. The format is described in the next section. ๐
๐ธ DISTINGUISHED NAME AND ATTRIBUTE SECTION FORMAT ๐ธ
Okay bestie, so there are literally two separate formats for the distinguished name and attribute sections, and which one you get depends on one little setting. Here we go:
If the prompt option is set to no, then these sections just consist of field names and values. Like, that's it. For example:
CN=My Name
OU=My Organization
emailAddress=someone@somewhere.org
The way this slaps is that it lets external programs (think GUI-based ones, iykyk) generate a template file with all the field names and values and then just hand it over to this command. There's an example of this kind of configuration file down in the EXAMPLES section, so keep scrolling ๐
Alternatively โ if the prompt option is absent or not set to no โ then the file contains field prompting information instead. That one is made of lines like this:
fieldName="prompt"
fieldName_default="default field value"
fieldName_min= 2
fieldName_max= 4
So fieldName is the field name being used, for example commonName (or CN). The "prompt" string is what's used to ask the user to enter the relevant details.
Here's the vibe check on what happens when they type: if the user enters nothing, then the default value is used. If there's no default value present, then the field is omitted. And get this โ a field can still be omitted even if a default value is present, if the user just enters the '.' character. Iconic escape hatch, honestly ๐ฆ
The number of characters entered must be between the fieldName_min and fieldName_max limits. And heads up โ there may be additional restrictions based on the field being used (for example, countryName can only ever be two characters long and must fit in a PrintableString).
Now, some fields (such as organizationName) can be used more than once in a DN. That presents a problem, because configuration files will not recognize the same name occurring twice. To avoid this problem, if the fieldName contains some characters followed by a full stop, they will be ignored. So for example a second organizationName can be input by calling it "1.organizationName". Sneaky but valid โจ
The actual permitted field names are any object identifier short or long names. These are compiled into OpenSSL and include the usual values such as commonName, countryName, localityName, organizationName, organizationalUnitName, stateOrProvinceName. Additionally emailAddress is included as well as name, surname, givenName, initials, and dnQualifier.
Additional object identifiers can be defined with the oid_file or oid_section options in the configuration file. Any additional fields will be treated as though they were a DirectoryString.
๐ EXAMPLES ๐
Examine and verify a certificate request:
openssl req -in req.pem -text -verify -noout
Specify the cipher to be used for encrypting the private key:
openssl req -newkey rsa:2048 -keyout privatekey.pem -out request.csr -cipher aes-256-cbc
Create a private key and then generate a certificate request from it:
openssl genrsa -out key.pem 2048
openssl req -new -key key.pem -out req.pem
The same but just using req:
openssl req -newkey rsa:2048 -keyout key.pem -out req.pem
Generate a self-signed root certificate:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out req.pem
Create an SM2 private key and then generate a certificate request from it:
openssl ecparam -genkey -name SM2 -out sm2.key
openssl req -new -key sm2.key -out sm2.csr -sm3 -sigopt "distid:1234567812345678"
Examine and verify an SM2 certificate request:
openssl req -verify -in sm2.csr -sm3 -vfyopt "distid:1234567812345678"
Example of a file pointed to by the oid_file option:
1.2.3.4 shortName A longer Name
1.2.3.6 otherName Other longer Name
Example of a section pointed to by oid_section making use of variable expansion:
testoid1=1.2.3.5
testoid2=${testoid1}.6
Sample configuration file prompting for field values:
[ req ]
default_bits = 2048
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
req_extensions = v3_ca
dirstring_type = nombstr
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = AU
countryName_min = 2
countryName_max = 2
localityName = Locality Name (eg, city)
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (eg, YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 40
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = critical, CA:true
Sample configuration containing all field values:
[ req ]
default_bits = 2048
default_keyfile = keyfile.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
prompt = no
output_password = mypass
[ req_distinguished_name ]
C = GB
ST = Test State or Province
L = Test Locality
O = Organization Name
OU = Organizational Unit Name
CN = Common Name
emailAddress = test@email.address
[ req_attributes ]
challengePassword = A challenge password
Example of giving the most common attributes (subject and extensions) on the command line:
openssl req -new -subj "/C=GB/CN=foo" \
-addext "subjectAltName = DNS:foo.co.uk" \
-addext "certificatePolicies = 1.2.3.4" \
-newkey rsa:2048 -keyout key.pem -out req.pem
๐ง NOTES ๐ง
Real talk: the certificate requests generated by Xenroll with MSIE have extensions added. It includes the keyUsage extension, which determines the type of key (signature only or general purpose) and any additional OIDs entered by the script in an extendedKeyUsage extension. That's just how it is, bestie ๐คท
๐ฉบ DIAGNOSTICS ๐ฉบ
The following messages are frequently asked about:
Using configuration from /some/path/openssl.cnf
Unable to load config info
And this is followed some time later by:
unable to find 'distinguished_name' in config
problems making Certificate Request
Okay so the first error message is the actual clue: it can't find the configuration file! Certain operations (like examining a certificate request) don't need a configuration file, so its use isn't enforced. But generation of certificates or requests does need a configuration file. Lowkey this could be regarded as a bug ๐
Another puzzling message is this one:
Attributes:
a0:00
This is displayed when no attributes are present and the request includes the correct empty SET OF structure (the DER encoding of which is 0xa0 0x00). But if you just see:
Attributes:
then the SET OF is missing and the encoding is technically invalid (but it is tolerated, so, like, no panic). See the description of the command line option -asn1-kludge for more information.
๐ BUGS ๐
OpenSSL's handling of T61Strings (aka TeletexStrings) is broken: it effectively treats them as ISO-8859-1 (Latin 1), and Netscape and MSIE have similar behaviour. This can cause problems if you need characters that aren't available in PrintableStrings and you don't want to โ or can't โ use BMPStrings. Not me finding out the hard way ๐ญ
As a consequence of the T61String handling, the only correct way to represent accented characters in OpenSSL is to use a BMPString: unfortunately Netscape currently chokes on these. So if you have to use accented characters with Netscape and MSIE then you currently need to use the invalid T61String form. Yes, that's cursed. It's what the page says, though ๐ซ
The current prompting is not very friendly. It doesn't allow you to confirm what you've just entered. And other things like extensions in certificate requests are statically defined in the configuration file โ but some of these, like an email address in subjectAltName, should be input by the user. So, yeah. Known limitation, periodt.
๐ฅ SEE ALSO ๐ฅ
openssl(1), openssl-x509(1), openssl-ca(1), openssl-genrsa(1), openssl-gendsa(1), config(5), x509v3_config(5)
๐ HISTORY ๐
- The default encryption cipher was changed from
3DEStoAES-256in OpenSSL 3.5. - The
-sectionoption was added in OpenSSL 3.0.0. - The
-multivalue-rdnoption has become obsolete in OpenSSL 3.0.0 and has no effect. - The
-engineoption was deprecated in OpenSSL 3.0. The-nodesoption was deprecated in OpenSSL 3.0, too; use-noencinstead. - The
-reqextsoption has been made an alias of-extensionsin OpenSSL 3.2. - Since OpenSSL 3.2, generated certificates bear X.509 version 3 unless
-x509v1is given, and key identifier extensions are included by default. - Since OpenSSL 3.3, the
-verifyoption will exit with 1 on failure.
๐ COPYRIGHT ๐
Copyright 2000-2025 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.
That's the whole page, bestie โ you made it to the end, I'm so proud ๐ฅน๐ This one's from 3.5.6, dated 2026-04-07, and honestly you understood all of it. Slay ๐ โจ
๐ฆ where this page comes from
- freebsd 15.1: base 15.1
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms