Skip to content

Commit bd32cf2

Browse files
Merge da3557d into f9a79a9
2 parents f9a79a9 + da3557d commit bd32cf2

13 files changed

Lines changed: 1294 additions & 38 deletions
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: Keyfactor Bootstrap Workflow
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
types: [opened, closed, synchronize, edited, reopened]
7+
push:
8+
create:
9+
branches:
10+
- 'release-*.*'
11+
12+
jobs:
13+
call-starter-workflow:
14+
uses: keyfactor/actions/.github/workflows/starter.yml@v3
15+
secrets:
16+
token: ${{ secrets.V2BUILDTOKEN}}
17+
APPROVE_README_PUSH: ${{ secrets.APPROVE_README_PUSH}}
18+
gpg_key: ${{ secrets.KF_GPG_PRIVATE_KEY }}
19+
gpg_pass: ${{ secrets.KF_GPG_PASSPHRASE }}

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
### 1.0.0
2+
* initial release

NexusCertManagerCAPlugin.sln

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ VisualStudioVersion = 17.11.35327.3
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NexusCertManagerCAPlugin", "nexus-certificate-manager-caplugin\NexusCertManagerCAPlugin.csproj", "{5107B3B8-4F3A-4A1B-BE0E-AF6A1A0B2995}"
77
EndProject
8-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docsource", "docsource", "{40A1F9A6-A56D-4A38-8CAE-2E23676AE243}"
9-
EndProject
108
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4FA0BDF6-B41E-4E00-805F-AE79B894784A}"
119
ProjectSection(SolutionItems) = preProject
10+
CHANGELOG.md = CHANGELOG.md
11+
docsource\configuration.md = docsource\configuration.md
12+
integration-manifest.json = integration-manifest.json
1213
manifest.json = manifest.json
1314
EndProjectSection
1415
EndProject

docsource/configuration.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
## Overview
2+
3+
The Nexus Certificate Manager AnyCA REST plugin extends the capabilities of the Nexus Certificate Manager product to Keyfactor Command via the Keyfactor AnyCA Gateway REST. The plugin represents a fully featured AnyCA REST Plugin with the following capabilies:
4+
* Certificate Synchronization
5+
* Certificate Enrollment
6+
* Certificate Revocation
7+
8+
## Requirements
9+
10+
- The host URL for the instance of Nexus Certificate Manager
11+
- A certificate in the pfx format to use for authentication into Nexus Certificate Manager, located on the Gateway Host
12+
- The passphrase for the pfx certificate
13+
14+
## Gateway Registration
15+
16+
In order to enroll certificates the Keyfactor Command server must trust the CA chain. Once you identify your Root and/or Subordinate CA used by the Nexus Certificate Manager platform, make sure to download and import the certificate chain into the Command Server certificate store
17+
18+
## CA Connection
19+
20+
The certificate used by the gateway for authenticating into the Nexus Certificate Manager will need to be copied to a location on the Gateway Host that is accessble by the gateway service. The Certificate Path
21+
22+
## Certificate Template Creation Step
23+
24+
For this AnyCA Gateway, there is a single product type named "NexusCM".

integration-manifest.json

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"$schema": "https://keyfactor.github.io/v2/integration-manifest-schema.json",
3+
"integration_type": "anyca-plugin",
4+
"name": "Nexus Certificate Maanager AnyCA REST Gateway Plugin",
5+
"status": "prototype",
6+
"support_level": "kf-community",
7+
"link_github": false,
8+
"update_catalog": false,
9+
"description": "Nexus Certificate Manager plugin for the AnyCA REST Gateway framework",
10+
"gateway_framework": "25.2.0",
11+
"release_dir": "nexus-certificate-manager-caplugin/bin/Release",
12+
"release_project": "nexus-certificate-manager-caplugin/NexusCertManagerCAPlugin.csproj",
13+
"about": {
14+
"carest": {
15+
"product_ids": [ "NexusCM" ],
16+
"ca_plugin_config": [
17+
{
18+
"name": "Host",
19+
"description": "The URI of the instance of the Nexus Certificate Manager API, including port. example: https://127.0.0.1:8444"
20+
},
21+
{
22+
"name": "AuthCertificatePath",
23+
"description": "The path on the AnyCA Gateway host where the PFX certificate that will be used for authentication can be found. example: 'C:\\Program Files\\Keyfactor\\Keyfactor AnyCA Gateway\\AnyGatewayREST\\net8.0\\my_auth_cert.pfx'"
24+
},
25+
{
26+
"name": "AuthCertPassword",
27+
"description": "The password for the PFX certificate located on the AnyCA Gateway Host that will be used for authentication into Nexus Certificate Manager"
28+
},
29+
{
30+
"name": "Enabled",
31+
"description": "Flag to enable or disable gateway functionality. Disabling is primarily used to allow creation of the CA prior to configuration information being available."
32+
}
33+
],
34+
"enrollment_config": []
35+
}
36+
}
37+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+

2+
// Copyright 2025 Keyfactor
3+
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
4+
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
5+
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
6+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
7+
// and limitations under the License.
8+
9+
namespace Keyfactor.Extensions.CAPlugin.NexusCertManager
10+
{
11+
public static class Constants
12+
{
13+
//names
14+
public const string HOST = "Host";
15+
public const string AUTHCERTPATH = "AuthCertificatePath";
16+
public const string ENABLED = "Enabled";
17+
public const string AUTHCERTPASSWORD = "AuthCertPassword";
18+
19+
20+
//values
21+
public const string APIPATH = "pgwy/api";
22+
public const string PRODUCTID = "NexusCM";
23+
public const string PKCS7MIMETYPE = "application/pkcs7-mime";
24+
public const string PEMCHAIN = "application/pem-certificate-chain";
25+
26+
public const string MEDIATYPE_PKCS10 = "pkcs10";
27+
public const string MEDIATYPE_PKCS12 = "pkcs12";
28+
public const string MEDIATYPE_SMARTCARD = "smartcard";
29+
public const string MEDIATYPE_ATTRIBUTECERT = "attributecertificate";
30+
public const string MEDIATYPE_DATA = "data";
31+
}
32+
33+
public static class ApiEndpoints
34+
{
35+
public const string LISTCERTS = "/certificates"; //get
36+
public static string DOWNLOADCERT(string certId) => $"/certificates/{certId}/download"; //get
37+
public static string CERTDETAILS(string certId) => $"/certificates/{certId}/details"; //get
38+
39+
public const string REVOKE = "/certificates/revoke"; //post
40+
41+
public const string ENROLL = "/certificates/pkcs10"; //post
42+
43+
public const string LISTPROCEDURES = "/procedures";
44+
}
45+
}

0 commit comments

Comments
 (0)