# smallrye-certificate-generator
**Repository Path**: mirrors_smallrye/smallrye-certificate-generator
## Basic Information
- **Project Name**: smallrye-certificate-generator
- **Description**: Utilities to generated signed and self-signed certificates
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-07-04
- **Last Updated**: 2026-01-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🔐 Certificate Generator
A Java API, a Junit 5 extension and a Maven plugin to generate (self-signed) certificates as well a signed certificate.
The main goal is to provide an easy way to generate self-signed and signed certificates.
## Features
- JKS, PEM and PKCS12 format support
- mTLS (client and server) generation support
- Maven plugin to generate certificates
- Junit 5 extension to generate certificates in tests
- Local CA generation
- Generate signed certificates
## Generated files
Here is the list of generated files:
**Format: JKS and server only (no mTLS)**
- 🔐 Key Store File: $DIR/$NAME-keystore.jks
- 🔓 Trust Store File: %DIR/$NAME-truststore.jks (to be deployed on the client-side)
**Format: PEM and server only (no mTLS)**
- 🔑 Key File: $DIR/$NAME.key
- 📜 Cert File: $DIR/$NAME.crt
- 🔓 Trust Store File: $DIR/$NAME-ca.crt (to be deployed on the client-side)
**Format: PKCS12 and server only (no mTLS)**
- 🔐 Key Store File: $DIR/$NAME-keystore.p12
- 🔓 Trust Store File: %DIR/$NAME-truststore.p12 (to be deployed on the client-side)
**Format: JKS and mTLS**
- 🔐 Key Store File: DIR/$NAME-keystore.jks (to be deployed on the server-side)
- 🔓 Server Trust Store File: $DIR/$NAME-server-truststore.jks (to be deployed on the server-side, contains the client certificate)
- 🔐 Client Key Store File: $DIR/$NAME-client-keystore.jks (to be deployed on the client-side)
- 🔓 Client Trust Store File: $DIR/$NAME-client-truststore.jks (to be deployed on the client-side, contains the server certificate)
**Format: PEM and mTLS**
- 🔑 Key File: $DIR/$NAME.key (to be deployed on the server-side)
- 📜 Cert File: $DIR/$NAME.crt (to be deployed on the server-side)
- 🔓 Server Trust Store File: $DIR/$NAME-server-ca.crt (to be deployed on the server-side, contains the client certificate)
- 🔑 Client Key File: $DIR/$NAME-client.key (to be deployed on the client-side)
- 📜 Client Cert File: $DIR/$NAME-client.crt (to be deployed on the client-side)
- 🔓 Client Trust Store File: $DIR/$NAME-client-ca.crt (to be deployed on the client-side, contains the server certificate)
**Format: PKCS12 and mTLS**
- 🔐 Key Store File: DIR/$NAME-keystore.p12 (to be deployed on the server-side)
- 🔓 Server Trust Store File: $DIR/$NAME-server-truststore.p12 (to be deployed on the server-side, contains the client certificate)
- 🔐 Client Key Store File: $DIR/$NAME-client-keystore.p12 (to be deployed on the client-side)
- 🔓 Client Trust Store File: $DIR/$NAME-client-truststore.p12 (to be deployed on the client-side, contains the server certificate)
## Junit 5 extension
The project provides a JUnit 5 extension to generate certificates for each test.
The certificates are generated before any test of the test case run (like a `@BeforeAll`).
To use the Junit 5 extension, add the following dependency to your project:
```xml
io.smallrye.certs
smallrye-certificate-generator-junit5
${VERSION}
test
```
Then, you can use the `@Certificates` annotation to generate certificates for your test:
```java
@Certificates(
baseDir = "target/certificates",
certificates = {
@Certificate(name = "reload-C", password = "secret", formats = Format.PEM),
@Certificate(name = "reload-D", password = "secret", formats = Format.PEM),
}
)
```
## Maven Plugin Usage
Here is an example of the Maven plugin usage:
```xml
io.smallrye.certs
smallrye-certificate-generator-maven-plugin
${VERSION}
generate-test-resources
generate
reload-A
PEM
PKCS12
secret
localhost
2
true
reload-B
PEM
PKCS12
365
secret
```
## API Usage
First, you need to add the following dependency to your project:
```xml
io.smallrye.certs
smallrye-certificate-generator
${VERSION}
test
```
Then, uou can use the `io.smallrye.certs.CertificateGenerator` API to generate certificates programmatically:
```java
CertificateRequest request = new CertificateRequest()
.withName("test")
.withPassword("secret")
.withClientCertificate()
.withFormat(Format.JKS)
.withFormat(Format.PEM);
new CertificateGenerator(tempDir).generate(request);
```