OneTimeCryptoWorker

ENTERPRISE This is a SignServer Enterprise feature.

Fully qualified class name: org.signserver.module.onetime.cryptoworker.OneTimeCryptoWorker

Overview

This is a specific Crypto Worker used for one-time keys and certificates allowing you to have a large number of individual signing keys and certificates, despite the often limited storage capabilities of HSMs. One-time keys are created on request and are deleted once the signature has been created. For more information on setting up one-time keys using the OneTimeCryptoWorker, see Setting up One-time Keys.

The OneTimeCryptoWorker generates a new key-pair for each signing request, creates a certificate signing request (CSR) and uses a CA Connector to obtain a certificate issued for the CSR. One-time keys are not stored once the signature has been created and the key is deleted from the CryptoToken (i.e. the HSM) after signing.

The OneTimeCryptoWorker internally requires a PKCS11CryptoToken referenced by the CRYPTOTOKEN property to use as the source crypto token.

When using the OneTimeCryptoWorker, enable the CESeCore keystore caching by setting cryptotoken.keystorecache=true in conf/cesecore.properties (by default disabled).

The following displays an overview of the OneTimeCryptoWorker operations:

images/download/attachments/23858973/OneTimeKeysOverview.png

  • The Source Crypto Worker contains a Crypto Token in order to communicate with the HSM and perform key operations. The TLS key is created in the HSM using the Source Crypto Token.

  • The One Time Crypto Worker generates a new key-pair for each signing request, creates a certificate signing request (CSR) and uses a CA Connector to obtain a certificate issued for the CSR. One-time keys are not stored once the signature has been created and the key is deleted from the CryptoToken (i.e. the HSM) after signing.

  • The One Time Crypto Worker references the Source Crypto Worker to get hold of the TLS key/certificate in order to connect to EBJCA CA and also to perform one time key creation/deletion operations in HSM before/after signing respectively.

  • The XAdeSSigner references the One Time Crypto Worker in order to perform a signing operation. The signer is configured with a Username Authorizer to provide the user data used by the CA for certificate issuance.

Worker Properties

Common Properties

Property

Description

CRYPTOTOKEN

Name of (crypto) worker holding the PKCS11CryptoToken to use as the source crypto token.

KEYALG

Key algorithm to be used for key generation. Required.
Example: RSA, ECDSA

KEYSPEC

Key specification to be used for key generation. Required.
Example: 2048, prime256v1

KEYALIAS_PREFIX

Key alias prefix. Default: onetime-

CACONNECTOR_IMPLEMENTATION

CA connector implementation class. Required.
Example:
org.signserver.module.onetime.caconnector.EjbcaWSCAConnector
org.signserver.module.onetime.caconnector.SelfSignedCAConnector

CA Connector Properties

EJBCA WS CA Connector

The EJBCA WS CA Connector connects to EJBCA using Web Services in the same way as the RenewalWorker.

The CA Connector maps the SignServer User Credentials (username) to the user data required by EJBCA to issue the certificate.

Property

Description

CANAME

CA name. Required.

CERTIFICATESTARTTIME

Certificate start time. Optional.

CERTIFICATEENDTIME

Certificate end time. Optional.

CERTIFICATEPROFILE

Certificate profile. Required.

EJBCAWSURL

EJBCA Web Service URL. Required.

ENDENTITYPROFILE

End entity profile. Required.

CERTSIGNATUREALGORITHM

Signature algorithm used to sign the certificate signing request (CSR). Required.

SUBJECTALTNAME_PATTERN

Subject alternative name pattern used to derive the Subject Alternative Names attribute of the certificate to be issued. Example: dNSName=signservertest. Optional.

Example subject alternative names:
rfc822Name=<email>
dNSName=<host name>
uri=<http://host.com/>
ipaddress=<address>
upn=<MS UPN>
guid=<MS globally unique id>
directoryName=<LDAP escaped DN>
krb5principal=<Krb5 principal name>

SUBJECTDN_PATTERN

Subject DN pattern used to derive the SUBJECT DN (Distinguished Name) of the certificate to be issued. Required.
Example: CN=User ${username},UID=${transactionId},O=SignServer Testing,C=SE
images/s/en_US/8100/b0984b7297905b7c7bd946458f753ce0130bfc8c/_/images/icons/emoticons/warning.svg The username is the name of the SignServer logged in user, and the transactionId is a SignServer internal random alpha numeric number unique for each signing request.

TLSCLIENTKEY

TLS client key. Required.

TRUSTSTOREPASSWORD

Trust store password.

TRUSTSTOREPATH

Trust store path. Either TRUSTSTOREPATH or TRUSTSTOREVALUE is required.

TRUSTSTOREVALUE

Trust store value. Either TRUSTSTOREPATH or TRUSTSTOREVALUE is required.

TRUSTSTORETYPE

Trust store type. Required.
Example: PEM, JKS

USERNAME_PATTERN

User name pattern used to derive the user name for the end entity which is registered before the certificate issuance. Required.
Example: onetime-${transactionId}
images/s/en_US/8100/b0984b7297905b7c7bd946458f753ce0130bfc8c/_/images/icons/emoticons/warning.svg The transactionId is a SignServer internal random alpha numeric number unique for each signing request.

Self-Signed CA Connector

The Self-Signed CA Connector generates its own self-signed certificate and is suitable for testing the OneTimeCryptoWorker without requiring an actual CA.

Property

Description

CERTSIGNATUREALGORITHM

Signature algorithm used for self-signing the certificate and for signing the certificate signing request (CSR). Required.