Skip to content

Commit 262f5b1

Browse files
committed
fix: correct integration manifest and template section heading
- release_dir now points to CERTInext/bin/Release (no framework moniker) — fixes Archive Files step in CI - product_ids populated with all 7 supported CERTInext product codes - ca_plugin_config: added missing required/optional fields (AccountNumber, RequestorName, RequestorEmail, RequestorIsdCode, RequestorMobileNumber, SignerPlace, SignerIp, DefaultProductCode); removed deprecated Username/Password - AuthMode description corrected to 'AccessKey' / 'OAuth' (was 'ApiKey' / 'Basic' / 'OAuth2') - OAuth field names aligned to code: OAuthTokenUrl, OAuthClientId, OAuthClientSecret - enrollment_config: added DomainName, SignerName, SignerPlace, SignerIp; removed deprecated ProfileId/ValidityDays - configuration.md: rename heading to "Certificate Template Creation Step"; drop unimplemented SANFormat parameter
1 parent 14d55f0 commit 262f5b1

2 files changed

Lines changed: 75 additions & 28 deletions

File tree

docsource/configuration.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ The following fields are presented in the Keyfactor Command Management Portal wh
117117
118118
> Note: Only the credential fields that correspond to the selected `AuthMode` are evaluated at runtime. Fields belonging to the other auth mode are ignored.
119119
120-
## Certificate Template Creation
120+
## Certificate Template Creation Step
121121

122122
A Keyfactor Command certificate template maps an enrollment request to a specific CERTInext product. Create one template per CERTInext product that you want to make available to requesters.
123123

@@ -135,7 +135,6 @@ In the Keyfactor Command Management Portal, navigate to **Certificate Templates*
135135
| `RenewalWindowDays` | Optional | Number | Number of days before certificate expiration within which a renewal is attempted instead of a reissue. Default: `90`. | `90` |
136136
| `KeyType` | Optional | String | Key algorithm to request at enrollment time. Valid values depend on what the target product supports. If omitted, the product default is used. | `RSA2048`, `RSA4096`, `EC256`, `EC384` |
137137
| `DomainName` | Optional | String | Primary domain name for SSL/TLS orders. If omitted, the gateway derives the domain from the CSR `CN` field. | `example.com` |
138-
| `SANFormat` | Optional | String | Controls how Subject Alternative Names from the CSR are formatted in the order request. Refer to plugin documentation for valid values. | *(see plugin docs)* |
139138
| `SignerName` | Optional | String | Per-template override for the subscriber agreement signer name. When omitted, defaults to the connector-level `RequestorName`. | `Jane Smith` |
140139
| `SignerPlace` | Optional | String | Per-template override for the subscriber agreement signer location. When omitted, defaults to the connector-level `SignerPlace`. | `Austin` |
141140
| `SignerIp` | Optional | String | Per-template override for the subscriber agreement signer IP address. When omitted, defaults to the connector-level `SignerIp`. | `203.0.113.10` |

integration-manifest.json

Lines changed: 74 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,85 +8,133 @@
88
"update_catalog": true,
99
"description": "AnyCA REST Gateway plugin for CERTInext (eMudhra) certificate lifecycle management platform",
1010
"gateway_framework": "24.2.0",
11-
"release_dir": "CERTInext/bin/Release/net8.0",
11+
"release_dir": "CERTInext/bin/Release",
1212
"release_project": "CERTInext/CERTInext.csproj",
1313
"about": {
1414
"carest": {
15-
"product_ids": [],
15+
"product_ids": [
16+
"838",
17+
"839",
18+
"840",
19+
"842",
20+
"843",
21+
"844",
22+
"846"
23+
],
1624
"ca_plugin_config": [
1725
{
1826
"name": "ApiUrl",
19-
"description": "REQUIRED: Base URL of the CERTInext REST API, e.g. https://us.certinext.io"
27+
"description": "REQUIRED: Base URL of the CERTInext REST API for your environment (e.g. https://api.certinext.io/emSignHub-API). Must include the /emSignHub-API/ path segment."
28+
},
29+
{
30+
"name": "AccountNumber",
31+
"description": "REQUIRED: Your CERTInext account number (numeric string). Found in the portal under Account Settings."
2032
},
2133
{
2234
"name": "AuthMode",
23-
"description": "REQUIRED: Authentication mode — one of 'ApiKey', 'Basic', or 'OAuth2'. Default: 'ApiKey'."
35+
"description": "REQUIRED: Authentication mode — 'AccessKey' (default, HMAC-based signing) or 'OAuth' (bearer token via client credentials)."
2436
},
2537
{
2638
"name": "ApiKey",
27-
"description": "API key for authenticating with CERTInext. Required when AuthMode is 'ApiKey'."
39+
"description": "The REST API Access Key generated in the CERTInext portal. Used to compute authKey = SHA256(accessKey + ts + txn). Required when AuthMode is 'AccessKey'."
40+
},
41+
{
42+
"name": "OAuthTokenUrl",
43+
"description": "OAuth token endpoint URL. Required when AuthMode is 'OAuth'."
44+
},
45+
{
46+
"name": "OAuthClientId",
47+
"description": "OAuth client ID. Required when AuthMode is 'OAuth'."
48+
},
49+
{
50+
"name": "OAuthClientSecret",
51+
"description": "OAuth client secret. Required when AuthMode is 'OAuth'."
52+
},
53+
{
54+
"name": "RequestorName",
55+
"description": "REQUIRED: Name of the person or service submitting certificate orders. Sent in the requestorInformation block of every order."
2856
},
2957
{
30-
"name": "Username",
31-
"description": "Username for Basic authentication. Required when AuthMode is 'Basic'."
58+
"name": "RequestorEmail",
59+
"description": "REQUIRED: Email address for the requestor. Must be a valid email associated with your CERTInext account."
3260
},
3361
{
34-
"name": "Password",
35-
"description": "Password for Basic authentication. Required when AuthMode is 'Basic'."
62+
"name": "RequestorIsdCode",
63+
"description": "International dialing code for the requestor phone number (digits only, no + prefix). Default: 1 (United States)."
3664
},
3765
{
38-
"name": "OAuth2TokenUrl",
39-
"description": "OAuth2 token endpoint URL. Required when AuthMode is 'OAuth2'. Example: https://us.certinext.io/oauth/token"
66+
"name": "RequestorMobileNumber",
67+
"description": "Requestor mobile number (digits only, no country code). Included in the requestorInformation block."
4068
},
4169
{
42-
"name": "OAuth2ClientId",
43-
"description": "OAuth2 client ID. Required when AuthMode is 'OAuth2'."
70+
"name": "SignerPlace",
71+
"description": "REQUIRED: City or location of the person accepting the subscriber agreement on behalf of your organization."
4472
},
4573
{
46-
"name": "OAuth2ClientSecret",
47-
"description": "OAuth2 client secret. Required when AuthMode is 'OAuth2'."
74+
"name": "SignerIp",
75+
"description": "REQUIRED: Public IP address of the host accepting the subscriber agreement."
76+
},
77+
{
78+
"name": "DefaultProductCode",
79+
"description": "Default numeric product code to use when no ProductCode is set on the certificate template. If omitted and the template also has no product code, enrollment will fail."
4880
},
4981
{
5082
"name": "IgnoreExpired",
5183
"description": "If true, expired certificates will be skipped during synchronization. Default: false."
5284
},
5385
{
5486
"name": "PageSize",
55-
"description": "Number of certificates to fetch per page during synchronization. Default: 100, max: 500."
87+
"description": "Number of orders to retrieve per page during synchronization. Default: 100, max: 500."
5688
},
5789
{
5890
"name": "Enabled",
59-
"description": "Flag to Enable or Disable gateway functionality. Disabling is primarily used to allow creation of the CA connector prior to configuration information being available."
91+
"description": "Enables or disables the CA connector. Set to false to save the connector record before credentials are available without triggering a live connectivity test. Default: true."
6092
}
6193
],
6294
"enrollment_config": [
6395
{
64-
"name": "ProfileId",
65-
"description": "REQUIRED: The CERTInext certificate profile/product ID to use for enrollment. This maps to a profile configured in the CERTInext portal."
96+
"name": "ProductCode",
97+
"description": "REQUIRED: The numeric CERTInext product code for the type of certificate to issue (e.g. 838 for DV SSL). Overrides the connector-level DefaultProductCode when set."
6698
},
6799
{
68-
"name": "ValidityDays",
69-
"description": "OPTIONAL: Validity period in days for issued certificates. If omitted, the profile default is used."
100+
"name": "ValidityYears",
101+
"description": "Subscription validity period in years: 1, 2, or 3. Default: 1."
70102
},
71103
{
72104
"name": "AutoApprove",
73-
"description": "OPTIONAL: If true, the gateway will attempt automatic approval of certificates returned in a pending-approval state. Default: false."
105+
"description": "If true, the gateway will attempt automatic approval of certificates returned in a pending-approval state. Default: false."
74106
},
75107
{
76108
"name": "RequesterName",
77-
"description": "OPTIONAL: Default requester name to include in the enrollment request."
109+
"description": "Per-template override for the requestor name. Overrides the connector-level RequestorName for orders using this template."
78110
},
79111
{
80112
"name": "RequesterEmail",
81-
"description": "OPTIONAL: Default requester email address."
113+
"description": "Per-template override for the requestor email address. Overrides the connector-level RequestorEmail."
82114
},
83115
{
84116
"name": "RenewalWindowDays",
85-
"description": "OPTIONAL: Number of days before expiration within which a renewal is attempted instead of a reissue. Default: 90."
117+
"description": "Number of days before expiration within which a renewal is attempted instead of a reissue. Default: 90."
86118
},
87119
{
88120
"name": "KeyType",
89-
"description": "OPTIONAL: Key algorithm hint (e.g. 'RSA2048', 'RSA4096', 'EC256', 'EC384'). If omitted, the profile default is used."
121+
"description": "Key algorithm hint (e.g. RSA2048, RSA4096, EC256, EC384). If omitted, the product default is used."
122+
},
123+
{
124+
"name": "DomainName",
125+
"description": "Primary domain name for SSL/TLS orders. If omitted, the gateway derives the domain from the CSR CN field."
126+
},
127+
{
128+
"name": "SignerName",
129+
"description": "Per-template override for the subscriber agreement signer name. Defaults to the connector-level RequestorName."
130+
},
131+
{
132+
"name": "SignerPlace",
133+
"description": "Per-template override for the subscriber agreement signer location. Defaults to the connector-level SignerPlace."
134+
},
135+
{
136+
"name": "SignerIp",
137+
"description": "Per-template override for the subscriber agreement signer IP address. Defaults to the connector-level SignerIp."
90138
}
91139
]
92140
}

0 commit comments

Comments
 (0)