zkey-kmip: Add man page for the KMIP plugin

Signed-off-by: Ingo Franzki <ifranzki@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
This commit is contained in:
Ingo Franzki
2021-06-14 13:56:51 +02:00
committed by Jan Höppner
parent c11b0cdcaa
commit ec83da3a39
2 changed files with 674 additions and 0 deletions

View File

@@ -47,6 +47,8 @@ libkmipclient.dep:
touch libkmipclient.dep
install: all install-libkmipclient.dep zkey-kmip.so
$(INSTALL) -d -m 755 $(DESTDIR)$(MANDIR)/man1
$(INSTALL) -m 644 -c zkey-kmip.1 $(DESTDIR)$(MANDIR)/man1
$(INSTALL) -d -m 755 $(DESTDIR)$(ZKEYKMSPLUGINDIR)
$(INSTALL) -g $(GROUP) -o $(OWNER) -m 755 -T zkey-kmip.so $(DESTDIR)$(ZKEYKMSPLUGINDIR)/zkey-kmip.so
$(INSTALL) -d -m 770 $(DESTDIR)$(SYSCONFDIR)/zkey/kmip

672
zkey/kmip/zkey-kmip.1 Normal file
View File

@@ -0,0 +1,672 @@
.\" Copyright IBM Corp. 2021
.\" s390-tools is free software; you can redistribute it and/or modify
.\" it under the terms of the MIT license. See LICENSE for details.
.\"
.TH ZKEY\-KMIP 1 "June 2021" "s390-tools"
.SH NAME
zkey\-kmip \- Key management system plugin for Key Management
Interoperability Protocol (KMIP)
.
.
.
.SH DESCRIPTION
The \fBzkey\-kmip.so\fP library is a key management system plugin for
\fBzkey\fP and provides an interface to KMIP servers. With this plugin, you can
integrate external KMIP\-based key manangement systems into zkey.
.PP
AES keys can be generated by a KMIP server and then imported into the zkey
secure key repository as secure keys. The keys can be used to encrypt
volumes, the same way as with secure AES keys generated by zkey locally.
.PP
The KMIP plugin supports secure keys of type \fBCCA\-AESDATA\fP,
\fBCCA\-AESCIPHER\fP, and \fBEP11\-AES\fP and requires one or multiple
IBM cryptographic adapters in either \fBCCA\fP or \fBEP11\fP coprocessor
mode. You can configure the KMIP plugin with either one or multiple
cryptographic adapters in \fBCCA\fP coprocessor mode, or with one or multiple
cryptographic adapters in \fBEP11\fP coprocessor mode, but not in a mixed setup.
Cryptographic adapters in \fBCCA\fP coprocessor mode support secure keys of
type \fBCCA\-AESDATA\fP and \fBCCA\-AESCIPHER\fP. Cryptographic adapters in
\fBEP11\fP coprocessor mode support secure keys of type \fBEP11\-AES\fP.
.PP
.B Note:
Secure keys of type \fBCCA\-AESDATA\fP and \fBCCA\-AESCIPHER\fP require an IBM
cryptographic adapter in CCA coprocessor mode of version 6 or later, e.g. a
CEX6C. Secure keys of type \fBEP11\-AES\fP require an IBM cryptographic
adapter in EP11 coprocessor mode of version 7 or later, e.g. a CEX7P.
.
.SS "Bind the zkey secure key repository to the KMIP plugin"
.
To use a KMIP server with zkey, first bind the zkey secure key repository to
the KMIP key management system plugin.
.PP
Use the \fBzkey kms plugins\fP command to list available key management system
plugins. The KMIP plugin appears as plugin \fBKMIP\fP in the list of
available plugins. If it does not appear, check if it is configured properly in
the \fB/etc/zkey/kms\-plugins.conf\fP configuration file. Refer to the
\fBzkey\fP man page for details about the configuration file.
.PP
Use the \fBzkey kms bind KMIP\fP command to bind the KMIP key management
system plugin to the zkey repository. You must then configure the KMIP plugin
with the command \fBzkey kms configure\fP before it can be used.
.
.SS "Display information about the KMIP key management system plugin"
.
Use the \fBzkey kms info\fP command to display information about the KMIP
key management system plugin and its configuration. If any of the settings are
displayed as \fB'(configuration required)'\fP, then you must configure these
settings before you can use the KMIP plugin. Use the \fBzkey kms configure\fP
command to do so.
.
.SS "Configure the KMIP key management system plugin"
.
Use the \fBzkey kms configure\fP command to configure or reconfigure the
KMIP key management system plugin. Use command \fBzkey kms configure \-\-help\fP
to display the possible command\-line options to perform the configuration.
.PP
Configuring the KMIP plugin may be a multi\-step task. You can supply all
configuration options at once or use the \fBzkey kms configure\fP command
several times supplying only one or a few configuration options each time.
.PP
The following settings must be configured:
.RS 2
.IP "\(bu" 2
The \fBcryptographic adapters (APQNs)\fP associated with the KMIP key management
system plugin. These APQNs are used by the KMIP plugin to generate internally
used secure keys, such as the identity key and the wrapping key. The APQNs are
also used to import AES keys from the KMIP server into the zkey repository, as
secure AES keys enciphered with the current CCA or EP11 master key. Secure keys
that are imported from KMIP are automatically associated with the APQNs of
the KMIP plugin.
Use the \fB\-\-apqns\fP option to specify the APQNs to be associated with the
KMIP plugin. You can associate either one or multiple APQNs in either CCA
coprocessor mode or in EP11 coprocessor mode, but not both types at the same
time.
.
.IP "\(bu" 2
The secure \fBidentity key\fP used to authenticate the zkey client with the KMIP
server through TLS client authentication. The identity key is a secure ECC or
RSA key. The identity key is automatically generated using the defaults (ECC
with curve secp521r1) when a certificate signing request (CSR) or self\-signed
certificate is to be generated and no identity key is available.
If you need to generate or regenerate the identity key with specific parameters,
use option \fB\-\-gen\-identity\-key\fP. You must regenerate a client
certificate with the newly generated identity key and reregister this client
certificate with the KMIP server.
.
.IP "\(bu" 2
The \fBclient certificate\fP to authenticate the zkey client with the KMIP
server. The client certificate is an X.509 certificate that is generated with
the secure identity key of the KMIP key management system plugin.
To generate a \fBcertificate signing request\fP (CSR) with the identity key,
use option \fB\-\-gen\-csr\fP. Pass this CSR to a certificate authority (CA) to
request a CA\-signed certificate for the KMIP plugin. Then, specify the
CA\-signed certificate with the \fB\-\-client\-cert\fP option so that the KMIP
plugin uses it for communicating with the KMIP server.
.
Alternatively, use the \fB\-\-gen\-self\-signed\-cert\fP option to generate a
\fBself\-signed certificate\fP with the identity key for the KMIP plugin.
Use options \fB\-\-cert\-subject\fP and \fB\-\-cert\-extensions\fP to specify
the certificate subject name and optionally certificate extensions. To renew an
existing certificate, use the \fB\-\-renew\-cert\fP option. The subject name and
certificate extensions are then copied from the certificate that is to be
renewed.
.
You need to register the client certificate with the KMIP server. Registering a
client certificate with the KMIP server is a manual procedure, and is specific
to the KMIP server used. The KMIP server accepts communication with the KMIP
plugin only after the certificate is registered.
.
.IP "\(bu" 2
The \fBconnection to the KMIP server\fP. The KMIP plugin communicates
with the KMIP server through the KMIP protocol over Transport Layer Security
(TLS) or Hypertext Transfer Protocol Secure (HTTPS). Use the
\fB\-\-kmip\-server\fP option to specify the hostname or IP address of the KMIP
server, and optionally a port number separated by a colon. If no port number is
specified, \fB5696\fP is used for KMIP. To use HTTPS transport, specify the URL,
starting with \fB'https://'\fP, followed by the hostname or IP address of the
KMIP server, an optional port number, and an URI (for example \fB'/kmip\fP').
.
Specify TLS\-specific options to control the behavior of the TLS protocol and
the validation of the KMIP server's certificate. Use the \fBzkey kms configure
\-\-help\fP command to display the possible command\-line options.
.
.IP "\(bu" 2
The \fBKMIP server settings\fP, such as the KMIP server information string, and
the supported KMIP protocol version are queried when the connection is
configured. Based on the KMIP server information string returned by the KMIP
server, a \fBKMIP plugin profile\fP is tried to be matched. To use a specific
KMIP plugin profile, specify one with the \fB\-\-profile\fP option together
with the \fB\-\-kmip\-server\fP option. For more information about plugin
profiles, see the section \fBKMIP plugin profiles\fP below.
.
.IP "\(bu" 2
The \fBkey\-wrapping key\fP used to wrap (encrypt) AES keys retrieved from the
KMIP server. The wrapping key is a secure RSA key, and is automatically
generated when the KMIP server connection is configured. The public key of the
wrapping key is registered with the KMIP server. Use the
\fB\-\-gen\-wrapping\-key\fP option to generated and register a new wrapping
key.
.RE
.
.SS "Reencipher the secure identity and wrapping keys"
.
Use the \fBzkey kms reencipher\fP command to reencipher the secure identity
key and the secure wrapping key of the KMIP key management system plugin with
a new master key. The secure identity and wrapping keys must be reenciphered
when the master keys of the associated APQNs in cryptographic adapters change.
.RS 2
.IP "\(bu" 2
For cryptographic adapters in \fBCCA\fP coprocessor mode, this is the \fBAPKA
master key\fP.
.IP "\(bu" 2
For cryptographic adapters in \fBEP11\fP coprocessor mode, this is the \fBEP11
master key\fP.
.RE
.PP
See the man page of \fBzkey\fP for a description of the \fBzkey kms
reencipher\fP command.
.PP
\fBNote:\fP The \fBzkey kms reencipher\fP command does \fBnot\fP reencipher
secure keys that were generated by, or have been imported from, the KMIP server,
and are now stored in the secure key repository. Use the regular \fBzkey
reencipher\fP command to reencipher those secure keys.
.
.SS "Generating secure AES keys with KMIP"
.
Use the \fBzkey generate\fP command to generate secure AES keys in the KMIP
server and import the newly generated keys into the secure key repository. When
the zkey repository is bound to the KMIP key management system plugin, then the
\fBzkey generate\fP command always generates the keys in the KMIP server,
unless the \fB\-\-local\fP option is specified.
.PP
Keys that are generated in the KMIP server always match the type of the APQNs
associated with the KMIP plugin. When cryptographic adapters in \fBCCA\fP
coprocessor mode are associated with the KMIP plugin, secure keys of type
\fBCCA\-AESDATA\fP, and \fBCCA\-AESCIPHER\fP are generated. When cryptographic
adapters in \fBEP11\fP coprocessor mode are associated with the KMIP plugin,
secure keys of type \fBEP11\-AES\fP are generated. A generated key inherits the
APQNs from the plugin. You cannot associate different APQNs to a key that is
bound to the KMIP plugin. Specify the \fB\-\-key\-type\fP option with the
\fBzkey generate\fP command to generate a key of a specific type. The default
type is \fBCCA\-AESDATA\fP when the associated adapters are in \fBCCA\fP
coprocessor mode, and \fBEP11\-AES\fP when the associated adapters are in
\fBEP11\fP coprocessor mode.
.PP
To specify an optional name for the generated key in the KMIP server, use the
\fB\-\-label\fP option. The specified name is stored in the \fBName\fP KMIP
attribute of the key. KMIP names must be unique within the KMIP server. For XTS
type keys, two different labels must be specified, separated by a colon.
If the \fB\-\-label\fP option is omitted, the unique IDs assigned by the KMIP
server to the generated keys are used to identify the keys.
.PP
Other information can be associated with a secure key, by using the
\fB\-\-description\fP, \fB\-\-volumes\fP, \fB\-\-volume\-type\fP, or
\fB\-\-sector\-size\fP options. This associated information is also stored in
the KMIP server in KMIP attributes of the key.
.
.SS "Remove secure keys that are bound to the KMIP plugin from the key repository"
.
Use the \fBzkey remove\fP command to remove an existing secure key from the
secure key repository. You can change the state of a key that is bound to the
KMIP key management system plugin while removing it. Use the \fB\-\-state\fP
option to specify the new state of the key. If no state is specified, the key
remains unchanged in the KMIP server, and is removed from the local secure key
repository only.
.
.SS "Change secure keys that are bound to the KMIP plugin"
.
Use the \fBzkey change\fP command to change the description, the associated
volumes, the sector size, and the volume type of a secure key in the secure key
repository. If the key is bound to the KMIP key management system plugin, then
the related KMIP attributes of the key are also updated in the KMIP server.
.PP
A key inherits the APQNs from the plugin. You cannot change the associated
cryptographic adapters (APQNs) for a key that is bound to the KMIP plugin. To
change the APQNs associated with the KMIP plugin, use the \fBzkey kms
configure\fP command with the \fB\-\-apqns\fP option. Changing the APQNs for the
plugin also changes the APQN associations of all secure keys in the secure key
repository that are bound to the KMIP plugin.
.
.SS "Rename secure keys that are bound to the KMIP plugin"
.
Use the \fBzkey rename\fP command to rename an existing secure key in the
secure key repository. If the key is bound to the KMIP key management system
plugin, then the related KMIP attributes of the key are also updated in the
KMIP server. The key label as it is known in the KMIP Server cannot be changed.
Only the associated zkey name is updated.
.
.SS "List secure keys that are managed by the KMIP plugin"
.
Use the \fBzkey kms list\fP command to display eligible secure keys managed by
the KMIP server. You can filter the displayed list by key label, key name,
associated volumes, and volume type. Refer to the man page of \fBzkey\fP for
the details on these filter options.
.PP
\fBNote:\fP It is specific to the KMIP server implementation how keys are
associated to certain clients or groups of clients, and how to control which
clients can see and access which keys. Refer to the documentation of your KMIP
server for more details about how to control access to keys in the KMIP server.
.
.SS "Import secure keys that are managed by the KMIP server into the repository"
.
Use the \fBzkey kms import\fP command to import secure keys managed by the KMIP
server into the secure key repository. You can filter the list of keys to be
imported by key label, key name, associated volumes, and volume type. Refer to
the man page of \fBzkey\fP for the details on these filter options.
.PP
\fBNote:\fP It is specific to the KMIP server implementation how keys are
associated to certain clients or groups of clients, and how to control which
clients can see and access which keys. Refer to the documentation of your KMIP
server for more details about how to control access to keys in the KMIP server.
.
.SS "Refresh secure keys that are bound to the KMIP plugin"
.
Use the \fBzkey kms refresh\fP command to refresh secure keys that are bound to
the KMIP key management system plugin. You can filter the list of keys to be
refreshed by name, associated volumes, volume type, and key type. Refreshing a
key updates the secure key by reimporting it from the KMIP server. Use the
\fB\-\-refresh\-properties\fP option to also update the associated information,
such as the textual description, associated volumes, volume type, and sector
size, with the information stored in the KMIP server. Refer to the man page of
\fBzkey\fP for the details on the \fBzkey kms refresh\fP command.
.PP
The \fBzkey kms refresh\fP command can also help if the secure keys have not
been reenciphered properly after a CCA or EP11 master key change, and thus
became invalid. The \fBzkey kms refresh\fP command reimports the secure key
under the current CCA or EP11 master key. Hence, you can use this command as an
alternative to the \fBzkey reencipher\fP command for keys that are bound to KMIP
plugin.
.
.
.
.SH OPTIONS
The following \fBzkey\fP options are specific to the KMIP key management system
plugin. Refer to the \fBzkey\fP man page for other options.
.
.SS "Options for the zkey kms configure command"
.TP
.BR \-i ", " \-\-gen\-identity\-key\~\fIECC:curve\fP | \fIRSA:modulus\-bits\fP
Generates an identity key for the KMIP plugin. The identity key is a secure ECC
or RSA key. The identity key is automatically generated with the default values
ECC with curve secp521r1 when a certificate signing request (CSR) or
self\-signed certificate is to be generated and no identity key is available.
If you need to generate or regenerate the identity key with specific parameters,
use option \fB\-\-gen\-identity\-key\fP. You must regenerate a client
certificate with the newly generated identity key and reregister this client
certificate with the KMIP server.
.TP
.BR \-c ", " \-\-gen\-csr\~\fIcsr\-pem\-file\fP
Generates a certificate signing request (CSR) with the identity key and stores
it in the specified PEM file. Pass this CSR to a certificate authority (CA)
to request a CA\-signed certificate for the KMIP plugin. You need to register
the certificate with the KMIP server. Registering a client certificate with the
KMIP server is a manual procedure, and is specific to the KMIP server used. The
KMIP server accepts communication with the KMIP plugin only after the
certificate is registered. You must also specify the CA\-signed certificate
with the \fB\-\-client\-cert\fP option so that the KMIP plugin uses it for
communicating with the KMIP server.
.TP
.BR \-C ", " \-\-gen\-self\-signed\-cert\~\fIcert\-pem\-file\fP
Generates a self\-signed certificate with the identity key and stores it in the
specified PEM file. You need to register the certificate with the KMIP server.
Registering a client certificate with the KMIP server is a manual
procedure, and is specific to the KMIP server used. The KMIP server accepts
communication with the KMIP plugin only after the certificate is registered.
.TP
.BR \-s ", " \-\-cert\-subject\~\fIsubject\-rdns\fP
Specifies the subject name for generating a certificate signing request (CSR)
or self\-signed certificate, in the form
\fB<type>=<value>(;<type>=<value>)*[;]\fP with types recognized by OpenSSL.
.TP
.BR \-e ", " \-\-cert\-extensions\~\fIextensions\fP
Specifies the certificate extensions for generating a certificate signing
request (CSR) or self\-signed certificate, in the form
\fB<name>=[critical,]<value(s)>(;<name>=[critical,]<value(s)>)*[;]\fP
with extension names and values recognized by OpenSSL.
A certificate used to authenticate at a KMIP server usually needs the
\fBTLS Web client authentication\fP extended\-key\-usage certificate extension.
Additionally, the \fBCommon Name\fP field or the \fBSubject Alternate Name\fP
extension must match the host name (or IP address) of the client system. If no
extended\-key\-usage extension is specified, then a \fBTLS Web client
authentication\fP extension ('extendedKeyUsage=clientAuth') is automatically
added. If no \fBSubject Alternate Name\fP extension is specified, then a
\fBSubject Alternate Name\fP extension with the system's host name
(subjectAltName=DNS:hostname) is automatically added.
.TP
.BR \-N ", " \-\-renew\-cert\~\fIcert\-pem\-file\fP
Specifies an existing PEM file that contains the certificate to be renewed. The
subject name and extensions of the certificate are used to generate the
certificate signing request (CSR) or renewed self\-signed certificate.
.TP
.BR \-n ", " \-\-csr\-new\-header
Adds the word \fBNEW\fP to the PEM file header and footer lines on the
certificate signing request. Some software and some CAs require this marking.
.TP
.BR \-d ", " \-\-cert\-validity\-days\~\fIdays\fP
Specifies the number of days the self\-signed certificate is valid. The default
is 30 days.
.TP
.BR \-D ", " \-\-cert\-digest\~\fIdigest\fP
Specifies the digest algorithm to use when generating a certificate signing
request (CSR) or self\-signed certificate. The default is determined by OpenSSL.
.TP
.BR \-P ", " \-\-cert\-rsa\-pss
Uses the \fBRSA\-PSS\fP algorithm to sign the certificate signing request (CSR)
or the self\-signed certificate. This option is accepted only when the identity
key type is RSA, it is ignored otherwise.
.TP
.BR \-r ", " \-\-client\-cert\~\fIcert\-pem\-file\fP
Uses a CA\-signed certificate to authenticate the KMIP plugin with the KMIP
server. The certificate must be registered with the KMIP server. Registering a
client certificate with the KMIP server is a manual procedure, and is specific
to the KMIP server used. The KMIP server accepts communication with the KMIP
plugin only after the certificate is registered.
.TP
.BR \-S ", " \-\-kmip\-server\~\fIserver\fP
Specifies the hostname or IP address of the KMIP server, and an optional port
number separated by a colon. If no port number is specified, 5696 is used for
KMIP. To use HTTPS transport, specify the URL, starting with \fBhttps://\fP,
followed by the hostname or IP address of the KMIP server, an optional port
number, and an URI (for example \fB/kmip\fP).
.TP
.BR \-p ", " \-\-profile\~\fIprofile\-name\fP
Specifies the name of the KMIP plugin profile to use with the KMIP server
connection. If no profile name is specified, the KMIP plugin queries the KMIP
server information and attempts to match a profile to the information. If no
profile matches, the default profile is used. Profiles are contained in the
directory \fB/etc/zkey/kmip/profiles\fP. You can set the location of the
profiles by using the environment variable \fBZKEY_KMIP_PROFILES\fP.
.TP
.BR \-b ", " \-\-tls\-ca\-bundle\~\fIca\-bundle\fP
Specifies the CA\-bundle PEM file or directory containing the CA certificates
that are used to verify the KMIP server certificate during TLS handshake. If the
option specifies a directory path, the directory must be prepared with the
\fBc_rehash\fP utility of OpenSSL. Default is to use the system CA certificates.
.TP
.BR \-\-tls\-pin\-server\-pubkey
Pins the public key of the KMIP server. With a pinned key, the KMIP plugin
verifies that every connection uses the same KMIP server\-certificate public key
that was also used to configure the connection to the KMIP server. This option
can be used only with CA\-signed KMIP server certificates.
.TP
.BR \-\-tls\-trust\-server\-cert
Trusts the certificate of the KMIP server even if it is a self\-signed
certificate, or it can not be verified due to other reasons. Use this option
instead of the \fB\-\-tls\-pin\-server\-pubkey\fP option when you are using
self\-signed KMIP server certificates.
.TP
.BR \-\-tls\-dont\-verify\-server\-cert
Do not verify the authenticity of the certificate of the KMIP server. For
self\-signed KMIP server certificates, this is the default. Use the
\fB\-\-tls\-pin\-server\-cert\fP option to ensure the authenticity of the
self\-signed certificate explicitly. For CA\-signed KMIP server certificates,
the default is to verify them. This option disables the verification.
.TP
.BR \-\-tls\-verify\-hostname
Verifies that the KMIP server certificate<74>s \fBCommon Name\fP field or a
\fBSubject Alternate Name\fP field matches the hostname that is used to connect
to the KMIP server.
.TP
.BR \-w ", " \-\-gen\-wrapping\-key
Generates a new wrapping key (key\-encrypting key) based on the settings in the
profile and registers it with the KMIP server. A wrapping key is automatically
generated when the KMIP server connection is configured. Use this option to
generate a new wrapping key at a later time.
.TP
.BR \-B ", " \-\-label\~\fIlabel\fP
Specifies an optional human\-readable identifier of the wrapping key stored in
the \fBName\fP KMIP attribute of the key. KMIP names must usually be unique
within the KMIP server.
.
.SS "Options for the zkey generate command"
.
.TP
.BR \-B ", " \-\-label\~\fIlabel[:label]\fP
Specifies an optional human\-readable identifier of the key or keys stored in
the \fBName\fP KMIP attribute of the key. KMIP names must usually be unique
within the KMIP server. For XTS type keys, two different labels must be
specified, separated by a colon.
.
.SS "Options for the zkey remove command"
.
.TP
.BR \-s ", " \-\-state\~\fIstate\fP
Specifies the state to which to change the key in the KMIP server, after
removing the secure key from the local secure key repository. Possible states
are \fBDEACTIVATED\fP, \fBCOMPROMISED\fP, \fBDESTROYED\fP, and
\fBDESTROYED\-COMPROMISED\fP. If this option is not specified, the state of the
key in the KMIP server is not changed, but the key is removed from the local
secure key repository only.
.
.SS "Options for the zkey kms import command"
.
.TP
.BR \-K ", " \-\-key\-type\~\fItype\fP
Specifies the type of the key to import. Possible values are \fBCCA\-AESDATA\fP,
\fBCCA\-AESCIPHER\fP, and \fBEP11\-AES\fP. The key type must be matching to the
type of APQNs associated with the KMIP plugin. When cryptographic adapters in
\fBCCA\fP coprocessor mode are associated with the KMIP plugin, secure keys of
type \fBCCA\-AESDATA\fP, and \fBCCA\-AESCIPHER\fP are supported. When
cryptographic adapters in \fBEP11\fP coprocessor mode are associated with the
KMIP plugin, secure keys of type \fBEP11\-AES\fP are supported.
When this option is omitted, the default is \fBCCA\-AESDATA\fP when
cryptographic adapters in \fBCCA\fP coprocessor mode are associated with the
KMIP plugin, and \fBEP11\-AES\fP when cryptographic adapters in \fBEP11\fP
coprocessor mode are associated with the KMIP plugin.
.
.SH KMIP PLUGIN PROFILES
This section describes the \fBKMIP plugin profiles\fP. A KMIP plugin profile
controls certain parameters and settings for communicating with the KMIP server.
A KMIP plugin profile usually belongs to a certain KMIP server product or
implementation, and contains settings to be used for that specific KMIP server
implementation.
.PP
\fBNote:\fP KMIP plugin profiles must not be confused with the \fP KMIP
profiles\fP as defined by the KMIP standard.
.PP
A KMIP plugin profile is selected when configuring the connection to the KMIP
server. Either, a profile name is explicitly specified using the
\fB\-\-profile\fP option of the \fBzky kms configure\fP command together with
the \fB\-\-kmip\-server\fP option, or a profile is automatically selected based
on the KMIP server information string that the KMIP server returned with the
KMIP \fBQUERY\fP command response. If none of the available profiles match to
the KMIP server information string, the default profile is used.
.PP
KMIP plugin profiles are text files with a naming scheme like
\fBproduct\-name.profile\fP and are located in directory
\fB/etc/zkey/kmip/profiles\fP. The profiles location can be overridden with
environment variable \fBZKEY_KMIP_PROFILES\fP. At least the default profile
must exist, i.e. in file \fBdefault.profile\fP. Users may supply own profiles,
in addition to the profiles provided together with the KMIP plugin. If you are
a KMIP server provider, and you want a KMIP plugin profile for your KMIP server
to be added, open an issue or a pull request at
\fBhttps://github.com/ibm\-s390\-linux/s390\-tools\fP and supply a profile for
your KMIP server.
.PP
The following parameters and settings are specified in a KMIP plugin profile:
.RS 2
.IP "\(bu" 2
A \fBregular expression\fP to match the KMIP server information string with.
If the regular expression matches the server information string when the KMIP
server is configured, the profile is selected.
.IP "\(bu" 2
The \fBKMIP protocol version\fP to use. This can be either a specific KMIP
protocol version like \fBmajor.minor\fP or \fBAUTO\fP. When AUTO is specified,
the KMIP protocol version supported by the KMIP server is automatically discoved
using the \fBDISCOVER VERSIONS\fP KMIP request.
.IP "\(bu" 2
The \fBtransport method\fP. Possible values are \fBTSL\fP or \fBHTTPS\fP.
A transport method of HTTPS can also be selected by specifying an URL beginnig
with \fBhttps://\fP with the \fB\-\-kmip\-server\fP option with the
\fBzkey kms configure\fP command, even if the profile used specifies TLS.
.IP "\(bu" 2
The \fB encoding method\fP for the KMIP protocol. Possible values are
\fBTTLV\fP, \fBJSON\fP, or \fBXML\fP. JSON and XML encoding are only posisble
with the HTTPS transport method.
.IP "\(bu" 2
The default \fBURI\fP used for the HTTPS transport method, e.g. \fB/kmip\fP.
The URI can be overridden with the \fB\-\-kmip\-server\fP option with the
\fBzkey kms configure\fP command. This setting is ignored if the transport
method is not HTTPS.
.IP "\(bu" 2
The \fBauthentication scheme\fP. Currently only \fBTLS client authentication\fP
is supported.
.IP "\(bu" 2
The \fBkey wrapping algorithm\fP for retrieving keys from the KMIP server.
Currently only \fBRSA\fP is supported.
.IP "\(bu" 2
The \fBRSA modulus size\fP of the RSA wrapping key in bits. Possible values are
512, 1024, 2048, and 4096 bits.
.IP "\(bu" 2
The \fBkey format\fP used to register the public wrapping key with the KMIP
server. Possible values are \fBPKCS #1\fP, \fBPKCS #8\fP, and
\fBTransparent Public Key\fP.
.IP "\(bu" 2
The \fBpadding method\fP used with RSA key wrapping. Possible values are
\fBPKCS #1.5\fP or \fBOAEP\fP.
.IP "\(bu" 2
The \fBhashing algorithm\fP used with RSA key wrapping with the OAEP padding
method. The specified hashing algorithm is used for both, the OAEP message hash
as well as the mask generator function (MGF). Possible values are \fBSHA\-1\fP
and \fBSHA\-256\fP.
.IP "\(bu" 2
Specifies if the KMIP server supports the KMIP \fBLink\fP attribute. If
\fBTRUE\fP, the KMIP plugin uses KMIP \fBLink\fP attributes to link the 2 keys
of an XTS key together. Otherwise, KMIP custom/vendor attributes with a zkey
specific name are used.
.IP "\(bu" 2
Specifies if the KMIP server supports the KMIP \fBDescription\fP attribute.
If not supported, the KMIP plugin uses the KMIP \fBComment\fP attribute (if
supported), or a KMIP custom/vendor attribute with a zkey specific name.
.IP "\(bu" 2
Specifies if the KMIP server supports the KMIP \fBComment\fP attribute.
If not supported, the KMIP plugin uses a KMIP custom/vendor attribute with a
zkey specific name instead.
.IP "\(bu" 2
Specifies the \fBcustom/vendor attribute scheme\fP for KMIP servers supporting
the KMIP protocol version 2.0 or higher. Possible values are \fBv1\-style\fP and
\fBv2\-style\fP. For \fBv1\-style\fP, the attribute's \fBVendor Identifier\fP is
set to \fBx\fP, and \fBAttribute Name\fP is set to \fBzkey\-<something>\fP.
This coresponds to the KMIP custom attribute style of the KMIP protocol version
1.0 - 1.4. For \fBv2\-style\fP, the attribute's \fBVendor Identifier\fP is
set to \fBzkey\fP, and \fBAttribute Name\fP is set to \fB<something>\fP.
.IP "\(bu" 2
Specifies if the KMIP server supports the KMIP \fBSensitive\fP attribute.
If \fBTRUE\fP, all keys are generated with \fBSensitive=True\fP to prevent the
key from being retrieved in clear from the KMIP server.
.IP "\(bu" 2
Specifies if the KMIP server supports the KMIP \fBAlways Sensitive\fP attribute.
If \fBTRUE\fP, all keys retrieved from the KMIP server are checked to have
\fBAlways Sensitive=True\fP to ensure that the key was never able to be
retrieved in clear from the KMIP server.
.RE
.
.
.
.SH EXAMPLES
.TP
.B zkey kms plugins
Lists available key manamgement system plugins.
.TP
.B zkey kms bind KMIP
Binds the KMIP plugin to the current secure key repository.
.TP
.B zkey kms configure \-\-apqns 03.004c
Configures the APQN '03.004c' to be associated with the KMIP plugin.
.TP
.B zkey kms configure \-\-gen\-identity\-key RSA:4096
Generates an RSA identity key with a modulus size of 4096 bits.
.TP
.B zkey kms configure \-\-gen\-identity\-key ECC:secp521r1
Generates an ECC identity key with ellitic curve secp521r1.
.TP
.B zkey kms configure \-\-gen\-csr csr.pem \-\-cert\-subject \(dqCN=my.zkey.client;OU=Example;C=US\(dq
Generates a certificate signing request with the identity key and the specified
subject name and stores it in file 'csr.pem'.
.TP
.B zkey kms configure \-\-gen\-csr csr.pem \-\-renew\-cert cert.pem
Generates a certificate signing request with the identity key to renew the
existing certificate in file cert.pem and stores it in file 'csr.pem'.
.TP
.B zkey kms configure \-\-gen\-self\-signed\-cert cert.pem \-\-cert\-subject \(dqCN=my.zkey.client;OU=Example;C=US\(dq \-\-cert\-validity\-days 50
Generates a self\-signed certificate with the identity key and the specified
subject name and a validity of 50 days, and stores it in file 'cert.pem'.
.TP
.B zkey kms configure \-\-gen\-self\-signed\-cert cert.pem \-\-cert\-subject \(dqCN=my.zkey.client;OU=Example;C=US\(dq \-\-cert\-extensions \(dqkeyUsage=critical,digitalSignature,keyAgreement\(dq
Generates a self\-signed certificate with the identity key and the specified
subject name and a certificate extension to limit the key usage, and stores it
in file 'cert.pem'.
.TP
.B zkey kms configure \-\-client\-cert cert.pem
Use the CA\-signed client certificate in file 'cert.pem' with the KMIP plugin.
.TP
.B zkey kms configure \-\-kmip\-server my.kmip.server
Configures the connection to the KMIP server on 'my.kmip.server'.
.TP
.B zkey kms configure \-\-kmip\-server https://my.kmip.server/kmip
Configures the connection to the KMIP server on 'my.kmip.server' using HTTPS
transport.
.TP
.B zkey kms configure \-\-kmip\-server my.kmip.server \-\-profile ABC
Configures the connection to the KMIP server on 'my.kmip.server' and use the
KMIP plugin profile 'ABC'.
.TP
.B zkey kms configure \-\-kmip\-server my.kmip.server \-\-tls\-pin\-server\-pubkey \-\-tls\-verify\-hostname
Configures the connection to the KMIP server on 'my.kmip.server' and
pins the server's public key from the server's TSL certificate as well as
enables verification of the host name to match the server's Common Name in the
certificate.
.TP
.B zkey kms info
Displays information about the KMIP plugin and its configuration.
.TP
.B zkey kms reencipher \-\-staged
Reenciphers the KMIP Plugin's identity key with a new master key in staged
mode
.TP
.B zkey generate \-\-name seckey \-\-volumes /dev/dasdc1:encvol \-\-label TEST
Generates a secure AES key in the KMIP server using the label 'TEST' and stores
it in the secure key repository using the name 'seckey' and associates it with
block device '/dev/dasdc1' and device\-mapper name 'encvol'.
.TP
.B zkey generate \-\-name seckey \-\-xts \-\-volumes /dev/dasdc1:encvol \-\-volume-type luks2 \-\-label TEST1:TEST2
Generates a secure AES key for the XTS cipher mode in the KMIP server using the
labels 'TEST1' and 'TEST2' and stores it in the secure key repository using the
name 'seckey' and associates it with block device '/dev/dasdc1' and
device\-mapper name 'encvol', and a volume type of luks2.
.TP
.B zkey remove \-\-name seckey \-\-state DEACTIVATED
Removes secure key 'seckey' from the repository and sets the state of the key
to 'DEACTIVATED' in the KMIP server.
.TP
.B zkey kms list
Displays eligible secure keys managed by KMIP server.
.TP
.B zkey kms list \-\-label \(dq*LUKS2*\(dq
Displays eligible secure keys managed by the KMIP server where the label name
in the KMIP server contains the word 'LUKS2'.
.TP
.B zkey kms import \-\-name seckey
Imports the secure key managed by the KMIP server with a zkey name of 'seckey'.
.TP
.B zkey kms import \-\-volume\-type LUKS2
Imports secure keys managed by the KMIP server that are associated with volumes
of volume type LUKS2.
.TP
.B zkey kms refresh \-\-name \(dqsec*\(dq
Refreshes secure keys from the KMIP server where the name starts with 'sec'.
.TP
.B zkey kms refresh \-\-name seckey \-\-refresh\-properties
Refreshes the secure key with the name 'seckey' from the KMIP server and also
refreshes the key properties.
.
.
.
.SH ENVIRONMENT
.TP
.BR ZKEY_KMIP_PROFILES
If
.B $ZKEY_KMIP_PROFILES
is set, it specifies the location of the KMIP plugin profiles.
If it is not set, then the default location of the KMIP plugin profiles
is \fB/etc/zkey/kmip/profiles\fP.