Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
OPENSSL-PKEY(1ossl)		     OpenSSL		     OPENSSL-PKEY(1ossl)

NAME
     openssl-pkey - public or private key processing command

SYNOPSIS
     openssl pkey [-help] [-provider name] [-provider-path path] [-provparam
     [name:]key=value] [-propquery propq] [-check] [-pubcheck] [-in file-
     name|uri] [-inform DER|PEM|P12] [-passin arg] [-pubin] [-out filename]
     [-outform DER|PEM] [-encopt opt:value] [-cipher] [-passout arg] [-tradi-
     tional] [-pubout] [-noout] [-text] [-text_pub] [-ec_conv_form arg]
     [-ec_param_enc arg]

DESCRIPTION
     This command processes public or private keys. They can be converted be-
     tween various forms and their components printed.

OPTIONS
   General options
     -help
	 Print out a usage message.

     -provider name
     -provider-path path
     -provparam [name:]key=value
     -propquery propq
	 See "Provider Options" in openssl(1), provider(7), and property(7).

     -check
	 This option checks the consistency of a key pair for both public and
	 private components.

     -pubcheck
	 This option checks the correctness of either a public key or the public
	 component of a key pair.

   Input options
     -in filename|uri
	 This specifies the input file to read a key from or standard input if
	 this option is not specified.

	 If the key input is encrypted and -passin is not given a pass phrase
	 will be prompted for.

     -inform DER|PEM|P12
	 The key input format; unspecified by default.	See openssl-format-op-
	 tions(1) for details.

     -passin arg
	 The password source for the key input.

	 For more information about the format of arg see openssl-passphrase-op-
	 tions(1).

     -pubin
	 By default a private key is read from the input.  With this option a
	 public key is read instead.  If the input contains no public key but a
	 private key, its public part is used.

   Output options
     -out filename
	 This specifies the output file to save the encoded and/or text output
	 of key or standard output if this option is not specified.  The output
	 filename can be the same as the input filename, which leads to replac-
	 ing the file contents.  Note that file I/O is not atomic. The output
	 file is truncated and then written.

	 If any cipher option is set but no -passout is given then a pass phrase
	 will be prompted for.	When password input is interrupted, the output
	 file is not touched.

     -outform DER|PEM
	 The key output format; the default is PEM.  See openssl-format-op-
	 tions(1) for details.

     -encopt opt:value
	 Set the private key encoder parameter opt to value.  In order to set
	 multiple parameters, multiple -encopt options can be specified, each
	 specifying a single parameter.  The precise set of supported parameters
	 depends on the public key algorithm involved and its implementation.
	 This is primarily applicable to ML-DSA and ML-KEM, whose private key
	 encoding to a PKCS#8 object can take a number of different forms.  The
	 "output_formats" parameter can be used to select the preferred output
	 forms.  See EVP_PKEY-ML-DSA(7) and EVP_PKEY-ML-KEM(7) for details.

     -cipher
	 Encrypt the PEM encoded private key with the supplied cipher. This op-
	 tion is specified by prepending a hyphen to the cipher name (e.g.,
	 -aes-256-cbc or -aes128), not as an argument to a "-cipher" flag.  In
	 DER output form encryption is supported only in the default PKCS#8 form
	 and is not available when the -traditional option is used.  Use
	 "openssl list -cipher-algorithms" to see the available ciphers.

     -passout arg
	 The password source for the output file.

	 For more information about the format of arg see openssl-passphrase-op-
	 tions(1).

     -traditional
	 Normally a private key is written using standard format: this is PKCS#8
	 form with the appropriate encryption algorithm (if any).  If the -tra-
	 ditional option is specified then the older "traditional" format is
	 used instead, and in DER output form encryption is not available.

     -pubout
	 By default the private and public key is output; this option restricts
	 the output to the public components.  This option is automatically set
	 if the input is a public key.

	 When combined with -text, this is equivalent to -text_pub.

     -noout
	 Do not output the key in encoded form.

     -text
	 Output the various key components in plain text (possibly in addition
	 to the PEM encoded form).  This cannot be combined with encoded output
	 in DER format.

     -text_pub
	 Output in text form only the public key components (also for private
	 keys).  This cannot be combined with encoded output in DER format.

     -ec_conv_form arg
	 This option only applies to elliptic-curve based keys.

	 This specifies how the points on the elliptic curve are converted into
	 octet strings. Possible values are: compressed (the default value), un-
	 compressed and hybrid. For more information regarding the point conver-
	 sion forms please read the X9.62 standard.  Note Due to patent issues
	 the compressed option is disabled by default for binary curves and can
	 be enabled by defining the preprocessor macro OPENSSL_EC_BIN_PT_COMP at
	 compile time.

     -ec_param_enc arg
	 This option only applies to elliptic curve based public and private
	 keys.

	 This specifies how the elliptic curve parameters are encoded.	Possible
	 value are: named_curve, i.e. the ec parameters are specified by an OID,
	 or explicit where the ec parameters are explicitly given (see RFC 3279
	 for the definition of the EC parameters structures). The default value
	 is named_curve.  Note the implicitlyCA alternative, as specified in RFC
	 3279, is currently not implemented in OpenSSL.

EXAMPLES
     To remove the pass phrase on a private key:

      openssl pkey -in key.pem -out keyout.pem

     To encrypt a private key using triple DES:

      openssl pkey -in key.pem -des3 -out keyout.pem

     To convert a private key from PEM to DER format:

      openssl pkey -in key.pem -outform DER -out keyout.der

     To print out the components of a private key to standard output:

      openssl pkey -in key.pem -text -noout

     To print out the public components of a private key to standard output:

      openssl pkey -in key.pem -text_pub -noout

     To just output the public part of a private key:

      openssl pkey -in key.pem -pubout -out pubkey.pem

     To change the EC parameters encoding to explicit:

      openssl pkey -in key.pem -ec_param_enc explicit -out keyout.pem

     To change the EC point conversion form to compressed:

      openssl pkey -in key.pem -ec_conv_form compressed -out keyout.pem

SEE ALSO
     openssl(1), openssl-genpkey(1), openssl-rsa(1), openssl-pkcs8(1),
     openssl-dsa(1), openssl-genrsa(1), openssl-gendsa(1)

HISTORY
     The -engine option was removed in OpenSSL 4.0.

     The -encopt option was added in OpenSSL 4.0.

     As of OpenSSL 4.0 the -pass and -cipher options apply when private keys are
     output in both PEM and DER (except with -traditional) forms.  Previously,
     these private key encryption options were rejected in combination with the
     DER output form.

COPYRIGHT
     Copyright 2006-2026 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>.

4.0.2				   2026-08-25		     OPENSSL-PKEY(1ossl)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=openssl-pkey&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help