Set up Composite Time-stamping
You can set up time-stamping using a composite key, and verify the time-stamping performed by a composite key.
For information about composite certificates, see SignServer Composite Certificates.
Prerequisites
Access to Admin Web
SignServer instance running
Access to a CA supporting composite certificates (such as EJBCA)
Step 1 - Set up a Keystore or P11NG Crypto Token
Use a Keystore Crypto Worker or P11NG Crypto Worker to generate composite keys.
To create the worker:
Navigate to the Workers page in the Admin Web.
Click Add.
In Add Worker/Load Configuration, select From Template.
Select one of the following:
keystore-crypto.properties
p11ng-crypto.properties
Click Next and Apply.
The new Crypto Worker should now be listed in the Workers page.
Step 2 - Generate a Composite Key
To create composite keys in the Crypto Worker:
Navigate to the Workers page in the Admin Web.
Select the Crypto Worker, and go to the Crypto Token tab.
Click Generate Key.
Enter the suffix -COMPOSITE under New Key Alias, for example: MyKey-COMPOSITE
Under Key Algorithm, select Composite.
Under Key Specification, select MLDSA87-RSA3072-PSS-SHA512.
Click Generate.
Ensure that 3 key objects were added to the list in the Crypto Token tab:
MyKey-COMPOSITE
MyKey-COMPQ (quantum-safe algorithm part of the composite)
MyKey-COMPC (classical algorithm part of the composite)
Step 3 - Set up Timestamp Signer
To set up the Timestamp Signer:
From the Workers page, click Add.
In Add Worker/Load Configuration, select From Template.
Select timestamp.properties from the drop down.
Press Next and Apply.
The Timestamp Signer should now be listed in the Workers page.
Navigate to the Timestamp Signer and click the Configure tab.
Click Edit.
Change the value of the Default key to MyKey-COMPOSITE.
Step 4 - Generate a Certificate Signing Request (CSR)
To generate a CSR for the composite key:
Navigate to the Workers page in the Admin Web.
Select the Crypto Worker to be used, such as CryptoTokenP12 or CryptoTokenP11NG1.
In the worker view, click Generate CSR.
Enter the key alias under Key.
Select MLDSA87-RSA3072-PSS-SHA512 from the drop down under Signature Algorithm.
Enter a common name under DN, such as CN=MyOrg.
Click Generate.
Click the Download button under the Result label to download the .p10 CSR file.
Step 5 - Get a Composite Certificate
This step is completed by using a trusted certificate authority.
Bring your generated CSR to a CA supporting the issuance of Composite Certificates for time-stamping, for instance one running EJBCA. See Issue Composite Certificates in the EJBCA documentation.
The composite certificate that is downloaded will be used for time-stamping.
Step 6 - Install the Composite Certificate
To install the composite certificate on the signer:
From the Workers page, select the Timestamp Signer.
Click Install Certificates.
The Worker and composite key should appear under Worker and Key.
Under Upload, click Browse.
Select the composite certificate you created with the CA.
Click Add and Install.
Ensure that the Timestamp Signer status is ACTIVE after installing the certificate.
Step 7 - Test Composite Time-stamping using SignClient
To use the composite key for time-stamping, open your SignServer instance:
Navigate to SignClient.
Execute the following command:
./signclient timestamp -url http://<your-domain>:8080/signserver/tsa?workerName=TimeStampSigner
The following log should be visible from the console where
signclientis being executed:
2025-11-26T14:28:14,545 INFO [TimeStampCommand] Got reply after 75 ms
2025-11-26T14:28:14,570 INFO [TimeStampCommand] TimeStampRequest validated with status code: 0 (Operation Okay)
The console log of the running application server should include details about the time-stamping requests, where an encoded timestamp request and an encoded TSA timestamp response should be visible.
Create a test file by running the following command:
echo "Something to time-stamp" > test.txt
Time-stamp the file by running the following command:
./bin/signclient timestamp -url http://localhost:8080/signserver/tsa?workerName=TimeStampSigner -infile test.txt -outrep test-composite.tsr -certreq
Step 8 - Verify the Time-stamping
With a timestamped file, the timestamp response or certificate chain of trust can be verified by SignClient.
Verifying Timestamp Response
Run the following command to verify:
./signclient timestamp -verify -inrep test-composite.tsr -signerfile composite-cert-name-from-download.crt
The -signerfile flag should point to the composite certificate that was installed in the Timestamp Signer in order for the timestamp to be verifiable.
A successful timestamp verification should produce the following log in the console:
INFO [TimeStampCommand] Token was validated successfully.
INFO [TimeStampCommand] Token was generated on: Sat Nov 29 09:16:10 UTC 2025
INFO [TimeStampCommand] MessageDigest=<some message digest>
INFO [TimeStampCommand] Processing took 82 ms
Verifying Certificate Chain
Run the following command to verify:
./bin/signclient timestamp -verify -inrep test-composite.tsr -cafile my-trusted-cert.pem
The -cafile flag should point to a file containing one or multiple PEM-encoded certificates that will be used as trustanchors for certificate chain validation. This flag also performs timestamp token validation.
A successful certificate chain validation and timestamp token validation will be seen in the console output.