Skip to content

Commit

Permalink
Merge f2d3d10 into eebae05
Browse files Browse the repository at this point in the history
  • Loading branch information
dgaley authored Oct 24, 2024
2 parents eebae05 + f2d3d10 commit 400567a
Show file tree
Hide file tree
Showing 36 changed files with 3,096 additions and 491 deletions.
20 changes: 20 additions & 0 deletions .github/workflows/keyfactor-bootstrap-workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Keyfactor Bootstrap Workflow

on:
workflow_dispatch:
pull_request:
types: [opened, closed, synchronize, edited, reopened]
push:
create:
branches:
- 'release-*.*'

jobs:
call-starter-workflow:
uses: keyfactor/actions/.github/workflows/starter.yml@v3
secrets:
token: ${{ secrets.V2BUILDTOKEN}}
APPROVE_README_PUSH: ${{ secrets.APPROVE_README_PUSH}}
gpg_key: ${{ secrets.KF_GPG_PRIVATE_KEY }}
gpg_pass: ${{ secrets.KF_GPG_PASSPHRASE }}
scan_token: ${{ secrets.SAST_TOKEN }}
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
1.0.0
Inital Release. Support for Enroll, Sync, and Revocation.
156 changes: 88 additions & 68 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,93 +1,113 @@
# cpr-cagateway-template
<h1 align="center" style="border-bottom: none">
Entrust ECS Gateway AnyCA Gateway REST Plugin
</h1>

## Template for new CA Gateway integrations
<p align="center">
<!-- Badges -->
<img src="https://img.shields.io/badge/integration_status-production-3D1973?style=flat-square" alt="Integration Status: production" />
<a href="https://github.com/Keyfactor/entrust-ecs-caplugin/releases"><img src="https://img.shields.io/github/v/release/Keyfactor/entrust-ecs-caplugin?style=flat-square" alt="Release" /></a>
<img src="https://img.shields.io/github/issues/Keyfactor/entrust-ecs-caplugin?style=flat-square" alt="Issues" />
<img src="https://img.shields.io/github/downloads/Keyfactor/entrust-ecs-caplugin/total?style=flat-square&label=downloads&color=28B905" alt="GitHub Downloads (all assets, all releases)" />
</p>

### Use this repository to create new integrations for new CA Gateway integration types.
<p align="center">
<!-- TOC -->
<a href="#support">
<b>Support</b>
</a>
·
<a href="#requirements">
<b>Requirements</b>
</a>
·
<a href="#installation">
<b>Installation</b>
</a>
·
<a href="#license">
<b>License</b>
</a>
·
<a href="https://github.com/orgs/Keyfactor/repositories?q=anycagateway">
<b>Related Integrations</b>
</a>
</p>


1. [Use this repository](#using-the-repository)
1. [Update the integration-manifest.json](#updating-the-integration-manifest.json)
1. [Add Keyfactor Bootstrap Workflow (keyfactor-bootstrap-workflow.yml)](#add-bootstrap)
1. [Create required branches](#create-required-branches)
1. [Replace template files/folders](#replace-template-files-and-folders)
1. [Create initial prerelease](#create-initial-prerelease)
---
The Entrust ECS AnyCA Gateway REST plugin extends the capabilities of Entrust Certificate Services to Keyfactor Command via the Keyfactor AnyCA Gateway REST. The plugin represents a fully featured AnyCA REST Plugin with the following capabilies:
* SSL Certificate Synchronization
* SSL Certificate Enrollment
* SSL Certificate Revocation

#### Using the repository
1. Select the ```Use this template``` button at the top of this page
1. Update the repository name following [these guidelines](https://keyfactorinc.sharepoint.com/sites/IntegrationWiki/SitePages/GitHub-Processes.aspx#repository-naming-conventions)
1. All repositories must be in lower-case
1. General pattern: company-product-type
1. e.g. hashicorp-vault-orchestator
1. Click the ```Create repository``` button
## Compatibility

---
The Entrust ECS Gateway AnyCA Gateway REST plugin is compatible with the Keyfactor AnyCA Gateway REST 24.2.0 and later.

#### Updating the integration-manifest.json
## Support
The Entrust ECS Gateway AnyCA Gateway REST plugin is supported by Keyfactor for Keyfactor customers. If you have a support issue, please open a support ticket with your Keyfactor representative. If you have a support issue, please open a support ticket via the Keyfactor Support Portal at https://support.keyfactor.com.

*The following properties must be updated in the integration-manifest.json*
> To report a problem or suggest a new feature, use the **[Issues](../../issues)** tab. If you want to contribute actual bug fixes or proposed enhancements, use the **[Pull requests](../../pulls)** tab.
Clone the repository locally, use vsdev.io, or the GitHub online editor to update the file.
## Requirements

* "name": "Friendly name for the integration"
* This will be used in the readme file generation and catalog entries
* "description": "Brief description of the integration."
* This will be used in the readme file generation
* If the repository description is empty this value will be used for the repository description upon creating a release branch
* "release_dir": "PATH\\\TO\\\BINARY\\\RELEASE\\\OUTPUT\\\FOLDER"
* Path separators can be "\\\\" or "/"
* Be sure to specify the release folder name. This can be found by running a Release build and noting the output folder
* Example: "AzureAppGatewayOrchestrator\\bin\\Release"
* "gateway_framework": "" string denoting the required command gateway framework version
---

#### Add Bootstrap
Add Keyfactor Bootstrap Workflow (keyfactor-bootstrap-workflow.yml). This can be copied directly from the workflow templates or through the Actions tab
* Directly:
1. Create a file named ```.github\workflows\keyfactor-bootstrap-workflow.yml```
1. Copy the contents of [keyfactor/.github/workflow-templates/keyfactor-bootstrap-workflow.yml](https://raw.githubusercontent.com/Keyfactor/.github/main/workflow-templates/keyfactor-bootstrap-workflow.yml) into the file created in the previous step
* Actions tab:
1. Navigate to the [Actions tab](./actions) in the new repository
1. Click the ```New workflow``` button
1. Find the ```Keyfactor Bootstrap Workflow``` and click the ```Configure``` button
1. Click the ```Commit changes...``` button on this screen and the next to add the bootstrap workflow to the main branch

A new build will run the tasks of a *Push* trigger on the main branch

*Ensure there are no errors during the workflow run in the Actions tab.*
## Installation

---
1. Install the AnyCA Gateway REST per the [official Keyfactor documentation](https://software.keyfactor.com/Guides/AnyCAGatewayREST/Content/AnyCAGatewayREST/InstallIntroduction.htm).

#### Create required branches
1. Create a release branch from main: release-1.0
1. Create a dev branch from the starting with the devops id in the format ab#\<DevOps-ID>, e.g. ab#53535.
1. For the cleanest pull request merge, create the dev branch from the release branch.
1. Optionally, add a suffix to the branch name indicating initial release. e.g. ab#53535-initial-release
2. On the server hosting the AnyCA Gateway REST, download and unzip the latest [Entrust ECS Gateway AnyCA Gateway REST plugin](https://github.com/Keyfactor/entrust-ecs-caplugin/releases/latest) from GitHub.

---
3. Copy the unzipped directory (usually called `net6.0`) to the Extensions directory:

```shell
Program Files\Keyfactor\AnyCA Gateway\AnyGatewayREST\net6.0\Extensions
```

#### Replace template files and folders
1. Replace the contents of readme_source.md
1. Create a CHANGELOG.md file in the root of the repository indicating ```1.0: Initial release```
1. Replace the SampleOrchestratorExtension.sln solution file and SampleOrchestratorExtension folder with your new orchestrator dotnet solution
1. Push your updates to the dev branch (ab#xxxxx)
> The directory containing the Entrust ECS Gateway AnyCA Gateway REST plugin DLLs (`net6.0`) can be named anything, as long as it is unique within the `Extensions` directory.

---
4. Restart the AnyCA Gateway REST service.

5. Navigate to the AnyCA Gateway REST portal and verify that the Gateway recognizes the Entrust ECS Gateway plugin by hovering over the ⓘ symbol to the right of the Gateway on the top left of the portal.

#### Create initial prerelease
1. Create a pull request from the dev branch to the release-1.0 branch
## Configuration

1. Follow the [official AnyCA Gateway REST documentation](https://software.keyfactor.com/Guides/AnyCAGatewayREST/Content/AnyCAGatewayREST/AddCA-Gateway.htm) to define a new Certificate Authority, and use the notes below to configure the **Gateway Registration** and **CA Connection** tabs:

----
* **Gateway Registration**

When the repository is ready for SE Demo, change the following property:
* "status": "pilot"
In order to enroll for certificates the Keyfactor Command server must trust the trust chain. Once you know your Root and/or Subordinate CA in your Entrust account, make sure to download and import the certificate chain into the Command Server certificate store

When the integration has been approved by Support and Delivery teams, change the following property:
* "status": "production"
* **CA Connection**

If the repository is ready to be published in the public catalog, the following properties must be updated:
* "update_catalog": true
* "link_github": true
Populate using the configuration fields collected in the [requirements](#requirements) section.

* **AuthUsername** - Username for the gateway to authenticate with Entrust
* **AuthPassword** - Password for the account used to authenticate with Entrust
* **ClientCertificate** - The client certificate information used to authenticate with Entrust (if configured to use certificate authentication). This can be either a Windows cert store name and location (e.g. 'My' and 'LocalMachine' for the Local Computer personal cert store) and thumbprint, or a PFX file and password.
* **Name** - The default requester name
* **Email** - The default requester email address
* **PhoneNumber** - The default requester phone number
* **IgnoreExpired** - If set to true, will not sync expired certs from Entrust
* **Enabled** - Flag to Enable or Disable gateway functionality. Disabling is primarily used to allow creation of the CA prior to configuration information being available.

2. TODO Certificate Template Creation Step is a required section

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.

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:

* **LifetimeMonths** - OPTIONAL: The number of months of validity to use when requesting certs. If not provided, default is 12.
* **Organization** - OPTIONAL: For requests that will not have a subject (such as ACME) you can use this field to provide an organization name. Value supplied here will override any CSR values, so do not include this field if you want the organization from the CSR to be used.
* **CertificateUsage** - Required for public SSL certificate types. Represents the key usage for the certificates enrolled against this template. Valid values are 'server', 'client', or 'serverclient'. Do not provide a value for cert types that are not public SSL.
* **RenewalWindowDays** - OPTIONAL: The number of days from certificate expiration that the gateway should do a renewal rather than a reissue. If not provided, default is 90.



## License

Apache License 2.0, see [LICENSE](LICENSE).

## Related Integrations

See all [Keyfactor Any CA Gateways (REST)](https://github.com/orgs/Keyfactor/repositories?q=anycagateway).
27 changes: 0 additions & 27 deletions cagateway-template/APIProxy/ProductNameBaseCall.cs

This file was deleted.

12 changes: 0 additions & 12 deletions cagateway-template/Client/ProductNameClient.cs

This file was deleted.

13 changes: 0 additions & 13 deletions cagateway-template/Constants.cs

This file was deleted.

Loading

0 comments on commit 400567a

Please sign in to comment.