Skip to content

Commit ee3736c

Browse files
authored
Merge ec9a785 into 9187539
2 parents 9187539 + ec9a785 commit ee3736c

11 files changed

Lines changed: 1097 additions & 711 deletions

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,4 +360,4 @@ MigrationBackup/
360360
.ionide/
361361

362362
# Fody - auto-generated XML schema
363-
FodyWeavers.xsd
363+
FodyWeavers.xsd

CHANGELOG.md

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
1-
v.1.0.2
2-
- Warning: enrollment field/template parameter with the name "CN DCV Email (admin@boingy.com)" has been renamed to "CN DCV Email" to make it compatible with the REST gateway. "Aplicant Pgone (+nn.nnnnnnnn)" has also been renamed to "Applicant Phone".
3-
- Updated dependencies.
4-
- Added support for default values via enrollment parameters configured in the AnyGateway REST certificate template.
5-
- Fixed issue with non-ASCII characters breaking the gateway.
6-
7-
v1.0.1
8-
- Fixed issue with SANs not being read correctly.
9-
101
v1.0
11-
- Initial Release.
2+
3+
- Initial Release.

README.md

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ This integration is tested and confirmed as working for Anygateway REST 24.4 and
7676

7777
* **Gateway Registration**
7878

79-
TODO Gateway Registration is a required section
79+
Download the **PCA root certificate** from AWS and have it ready to import into the Gateway **in `.pem` format**.
8080

8181
* **CA Connection**
8282

@@ -98,6 +98,7 @@ This integration is tested and confirmed as working for Anygateway REST 24.4 and
9898
* **IAMUserAccessKey** - IAM user access key (secret).
9999
* **IAMUserAccessSecret** - IAM user access secret (secret).
100100
* **ExternalId** - Optional sts:ExternalId to supply on AssumeRole calls.
101+
* **Enabled** - Flag to Enable or Disable gateway functionality. Disabling is primarily used to allow creation of the CA prior to configuration information being available.
101102

102103
2. Define [Certificate Profiles](https://software.keyfactor.com/Guides/AnyCAGatewayREST/Content/AnyCAGatewayREST/AddCP-Gateway.htm) and [Certificate Templates](https://software.keyfactor.com/Guides/AnyCAGatewayREST/Content/AnyCAGatewayREST/AddCA-Gateway.htm) for the Certificate Authority as required. One Certificate Profile must be defined per Certificate Template. It's recommended that each Certificate Profile be named after the Product ID. The AWSPCA CA Gateway plugin supports the following product IDs:
103104
@@ -107,12 +108,22 @@ This integration is tested and confirmed as working for Anygateway REST 24.4 and
107108
108109
3. Follow the [official Keyfactor documentation](https://software.keyfactor.com/Guides/AnyCAGatewayREST/Content/AnyCAGatewayREST/AddCA-Keyfactor.htm) to add each defined Certificate Authority to Keyfactor Command and import the newly defined Certificate Templates.
109110
111+
4. In Keyfactor Command (v12.3+), for each imported Certificate Template, follow the [official documentation](https://software.keyfactor.com/Core-OnPrem/Current/Content/ReferenceGuide/Configuring%20Template%20Options.htm) to define enrollment fields for each of the following parameters:
112+
113+
* **LifetimeDays** - OPTIONAL: The number of days of validity to use when requesting certs. If not provided, default is 365
114+
* **SigningAlgorithm** - Required: AWS ACM PCA certificate signature algorithm to use when issuing certificates. Value is an AWS PCA SigningAlgorithm enum name (case-insensitive), e.g. SHA256WITHRSA, SHA384WITHRSA, SHA256WITHECDSA. If omitted, the plugin selects a default compatible with the CA key algorithm.
115+
110116
111117
## Authentication (Access Key + Secret)
112118
113119
The CAPlugin currently supports **one** authentication method: **AWS Access Key ID + Secret Access Key**.
114120
**OAuth** and **Default SDK authentication** will be enabled in later updates. There is functionality present via the **Keyfactor AWS Authentication** library, but these alternate methods are currently ***untested***.
115121
122+
### Known Issues
123+
124+
At present, a fresh install of Keyfactor Command 24.4 used in conjuction with Keyfactor Gateway REST 25.4.0.0 is confirmed as working. A fresh install of Command 25.3 used with REST 25.4.0.0 is also confirmed as working.
125+
Latest version of Command 25.4 may run into issues, investigation into compatibility issues is ongoing.
126+
116127
### What you need ready
117128
118129
Before configuring the CAPlugin, have the following prepared:
@@ -121,7 +132,7 @@ Before configuring the CAPlugin, have the following prepared:
121132
- **Access Key ID** (example format: `AKIAIOSFODNN7EXAMPLE`)
122133
- **Secret Access Key** (example format: `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`)
123134
124-
#### 2) A target IAM Role the connector will run as (recommended)
135+
#### 2) A target IAM Role the Gateway will run as (recommended)
125136
Example:
126137
- `arn:aws:iam::123456789012:role/Keyfactor-AnyGateway-AcmPcaRole`
127138
@@ -292,6 +303,52 @@ The following examples are intended as **copy/adapt templates**.
292303
}
293304
```
294305
306+
---
307+
308+
## Signing algorithm selection (ACM PCA)
309+
310+
The connector supports an optional **template / product parameter** named `SigningAlgorithm` that controls the **certificate signature algorithm**
311+
passed to AWS ACM PCA `IssueCertificate`.
312+
313+
- If **not set**, the plugin will **auto-select** a compatible default based on the CA `KeyAlgorithm` returned by
314+
`DescribeCertificateAuthority`.
315+
- If **set**, the plugin validates the value and **rejects incompatible combinations** before calling AWS.
316+
317+
### Where to configure
318+
319+
Set `SigningAlgorithm` on the **AnyGateway template** (product parameters), alongside `LifetimeDays`.
320+
321+
### Valid `SigningAlgorithm` values (AWS PCA)
322+
323+
- RSA family: `SHA256WITHRSA`, `SHA384WITHRSA`, `SHA512WITHRSA`
324+
- ECDSA family: `SHA256WITHECDSA`, `SHA384WITHECDSA`, `SHA512WITHECDSA`
325+
- SM2: `SM3WITHSM2`
326+
- ML-DSA (post-quantum): `ML_DSA_44`, `ML_DSA_65`, `ML_DSA_87`
327+
328+
### Allowed CA key algorithm <-> signing algorithm combinations
329+
330+
The CA key algorithm is the PCA CA **KeyAlgorithm** (not the subject key in the CSR). The signing algorithm must match the CA key family.
331+
332+
| CA KeyAlgorithm | Allowed SigningAlgorithm values |
333+
|---|---|
334+
| `RSA_2048`, `RSA_3072`, `RSA_4096` | `SHA256WITHRSA`, `SHA384WITHRSA`, `SHA512WITHRSA` |
335+
| `EC_prime256v1`, `EC_secp384r1`, `EC_secp521r1` | `SHA256WITHECDSA`, `SHA384WITHECDSA`, `SHA512WITHECDSA` |
336+
| `SM2` | `SM3WITHSM2` |
337+
| `ML_DSA_44` | `ML_DSA_44` |
338+
| `ML_DSA_65` | `ML_DSA_65` |
339+
| `ML_DSA_87` | `ML_DSA_87` |
340+
341+
### Auto-selection defaults
342+
343+
When `SigningAlgorithm` is omitted, the plugin selects:
344+
345+
- RSA CAs -> `SHA256WITHRSA`
346+
- EC P-256 -> `SHA256WITHECDSA`
347+
- EC P-384 -> `SHA384WITHECDSA`
348+
- EC P-521 -> `SHA512WITHECDSA`
349+
- SM2 -> `SM3WITHSM2`
350+
- ML-DSA -> exact-match (`ML_DSA_44/65/87`)
351+
295352
296353
## License
297354

0 commit comments

Comments
 (0)