Skip to content

Commit 4eeac33

Browse files
authored
2.0 release (#5)
Initial Public Release * Change status codes to EndEntityStatus codes * If digicert returns multiple identical certs (same order/cert ID pair), only return one of them * Renew/reissue check added, parameter data types specified * Don't throw exceptions when unable to retreive product IDs * Prevent duplicate certs from syncing * Allows for creating the CA prior to having config info available, creating with Enabled = false skips config validation. * Port sync CA filter from DCOM gateway
1 parent 0ef6d5a commit 4eeac33

43 files changed

Lines changed: 594 additions & 255 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
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@v2
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 }}

.github/workflows/keyfactor-integrations-workflow.yml

Lines changed: 0 additions & 40 deletions
This file was deleted.

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
### 2.0.0
2+
* Initial Public Release
15 KB
Binary file not shown.

README.md

Lines changed: 54 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,87 @@
1-
# digicert-certcentral-anycagateway
21

3-
DigiCert CertCentral plugin for the AnyCA Gateway framework
2+
# DigiCert CertCentral AnyCA REST Gateway Plugin
43

5-
#### Integration status: Prototype - Demonstration quality. Not for use in customer environments.
4+
DigiCert CertCentral plugin for the AnyCA REST Gateway framework
65

6+
#### Integration status: Production - Ready for use in production environments.
77

8-
## About the Keyfactor AnyGateway CA Connector
8+
## About the Keyfactor
99

10-
This repository contains an AnyGateway CA Connector, which is a plugin to the Keyfactor AnyGateway. AnyGateway CA Connectors allow Keyfactor Command to be used for inventory, issuance, and revocation of certificates from a third-party certificate authority.
1110

1211

12+
## Support for DigiCert CertCentral AnyCA REST Gateway Plugin
1313

14-
15-
## Support for digicert-certcentral-anycagateway
16-
17-
digicert-certcentral-anycagateway is open source and community supported, meaning that there is **no SLA** applicable for these tools.
14+
DigiCert CertCentral AnyCA REST Gateway Plugin is supported by Keyfactor for Keyfactor customers. If you have a support issue, please open a support ticket via the Keyfactor Support Portal at https://support.keyfactor.com
1815

1916
###### 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.
2017

18+
---
2119

2220

2321
---
2422

2523

2624

25+

26+
# Introduction
2727

28+
This AnyCA REST Gateway plug-in enables issuance, revocation, and synchronization of certificates from DigiCert's CertCentral offering.
29+
# Prerequisites
2830

31+
## Prerequisite: Certificate Chain
2932

30-
## Keyfactor AnyGateway Framework Supported
33+
In order to request certificates from the Keyfactor AnyGateway, the Keyfactor Command server must trust the certificate chain of trust. To ensure trust is established, download your Root and/or Subordinate CA certificates from DigiCert and import them into the appropriate local certificate stores on the Keyfactor AnyGateway and Command servers. More information can be found in the [AnyCA Gateway REST Install Guide](https://software.keyfactor.com/Guides/AnyCAGatewayREST/Content/AnyCAGatewayREST/Preparing.htm)
3134

32-
This gateway was compiled against version 1.0.0 of the AnyGateway Framework. You will need at least this version of the AnyGateway Framework Installed. If you have a later AnyGateway Framework Installed you will probably need to add binding redirects in the CAProxyServer.exe.config file to make things work properly.
35+
## Installation
36+
1. Download latest successful build from [GitHub Releases](../../releases/latest)
3337

38+
2. Extract the .zip file, and from it, copy DigicertCAPlugin.dll and DigicertCAPlugin.deps.json to the 'C:\Program Files\Keyfactor\AnyCA Gateway\AnyGatewayREST\net6.0\Extensions' directory
3439

40+
3. Within the 'C:\Program Files\Keyfactor\AnyCA Gateway\AnyGatewayREST\net6.0\Extensions\Connectors' folder, update the manifest.json file to contain the following:
3541

36-
---
42+
```json
43+
{
44+
"extensions": {
45+
"Keyfactor.AnyGateway.Extensions.IAnyCAPlugin": {
46+
"CertCentralCAPlugin": {
47+
"assemblypath": "../DigicertCAPlugin.dll",
48+
"TypeFullName": "Keyfactor.Extensions.CAPlugin.DigiCert.CertCentralCAPlugin"
49+
}
50+
}
51+
}
52+
}
53+
```
3754

55+
NOTE: If the Connectors folder and/or the manifest.json file do not exist, they must be manually created
3856

39-
# Introduction
40-
This AnyGateway plug-in enables issuance, revocation, and synchronization of certificates from DigiCert's CertCentral offering.
41-
# Prerequisites
57+
4. Restart the AnyCA Gateway service
4258

43-
## Certificate Chain
59+
5. Navigate to the AnyCA Gateway REST portal and verify that the Gateway recognizes the DigiCert plugin by hovering over the ⓘ symbol to the right of the Gateway on the top left of the portal. CAPlugin Type should now be listed as CertCentralCA.
4460

45-
In order to enroll for certificates the Keyfactor Command server must trust the trust chain. Once you create your Root and/or Subordinate CA, make sure to import the certificate chain into the AnyGateway and Command Server certificate store
4661

62+
## Configuration
4763

48-
# Install
49-
* Download latest successful build from [GitHub Releases](../../releases/latest)
64+
1. Follow the [official Keyfactor AnyCA Gateway REST documentation](https://software.keyfactor.com/Guides/AnyCAGatewayREST/Content/AnyCAGatewayREST/AddCA-Gateway.htm#Add_or_Edit_a_Certificate_Authority) to define a new Certificate Authority, using the following information to configure the CA Connection section:
5065

51-
* Copy DigiCertCAGateway.dll and DigiCertCAGateway.deps.json to the Program Files\Keyfactor\AnyCA Gateway\AnyGatewayREST\net6.0\Extensions directory
66+
SETTING | REQUIRED? | DESCRIPTION
67+
--|--|--
68+
Enabled | Yes | Enables the DigiCert gateway functionality. Should almost always be set to 'true'
69+
APIKey | Yes | The API key the Gateway should use to communicate with the DigiCert API. Can be generated from the DigiCert portal.
70+
Region | No | The geographic region associated with your DigiCert account. Valid values are US and EU. Default if not provided is US.
71+
DivisionId | No | If your CertCentral account has multiple divisions AND uses any custom per-division product settings, provide a division ID for the gateway to use for product type lookups.
72+
RevokeCertificateOnly | No | If set to 'true', revoke operations will only revoke the individual certificate in question rather than the entire DigiCert order. Default if not provided is 'false'.
73+
SyncCAFilter | No | If you list one or more DigiCert issuing CA IDs here (comma-separated if more than one), the sync process will only return certs issued by one of those CAs. Leave this option empty to sync all certs from all CAs.
74+
FilterExpiredOrders | No | If set to 'true', syncing will not return certs that are expired more than a specified number of days. The number of days is specified by the SyncExpirationDays config option. Default value is 'false'.
75+
SyncExpirationDays | No | Only used if FilterExpiredOrders is 'true', otherwise ignored. Sets the number of days a cert has to be expired for the sync process to no longer sync it. For example, a value of 30 means sync will continue to return certs that have expired within the past 30 days, but not ones older than that. Default value is 0, meaning sync would not return any certs expired before the current day.
76+
77+
2. After saving the CA configuration, Follow the [official AnyCA Gateway REST documentation](https://software.keyfactor.com/Guides/AnyCAGatewayREST/Content/AnyCAGatewayREST/AddCP-Gateway.htm#Certificate_Profile) to define one or more Certificate Profiles.
78+
3. Edit your newly configured CA, and you should now be able to modify the Templates tab. You need at least one template for each product type you wish to be able to enroll for. It is recommended to include the product type in the template name to make them easier to identify. Use the following information to configure the parameters for each template:
79+
80+
SETTING | REQUIRED? | DESCRIPTION
81+
--|--|--
82+
LifetimeDays | No | The number of days of validity to use when requesting certs. Default if not provided is 365. NOTE FOR RENEWALS: If the value of LifetimeDays is evenly divisible by 365, the expiration day and month of the new cert will be set to the same values as the old cert if possible, to avoid renewal date drift.
83+
CACertId | No | The ID of the issuing CA to be used by DigiCert. If not specified, the default for your account will be used.
84+
Organization-Name | No | If specified, this value will override any organization name provided in the subject of the cert request on enrollment. Useful for requests (such as ACME) that contain no subject.
85+
RenewalWindowDays | No | The number of days from expiration that the gateway should do a reissue rather than a renewal. Default if not provided is 90, meaning any renewal request for certs that expire in more than 90 days will be treated as a reissue request.
5286

53-
* Update the manifest.json file located in Program Files\Keyfactor\AnyCA Gateway\AnyGatewayREST\net6.0\Extensions\Connectors
54-
* If the manifest.json file or the Connectors folder do not exist, create them.
55-
```json
56-
{
57-
"extensions": {
58-
"Keyfactor.AnyGateway.Extensions.ICAConnector": {
59-
"DigiCertCAConnector": {
60-
"assemblypath": "../DigiCertCAGateway.dll",
61-
"TypeFullName": "Keyfactor.Extensions.CAGateway.DigiCert.CertCentralCAConnector"
62-
}
63-
}
64-
}
65-
}
66-
```
6787

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio Version 17
44
VisualStudioVersion = 17.6.33815.320
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "digicert-certcentral-anycagateway", "digicert-certcentral-anycagateway\digicert-certcentral-anycagateway.csproj", "{434D1E74-8EE7-4CC6-BAEC-62D224022F5F}"
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "digicert-certcentral-caplugin", "digicert-certcentral-caplugin\digicert-certcentral-caplugin.csproj", "{434D1E74-8EE7-4CC6-BAEC-62D224022F5F}"
7+
EndProject
8+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A6058317-1B5E-4E7C-9669-B3A6C0E605BB}"
9+
ProjectSection(SolutionItems) = preProject
10+
CHANGELOG.md = CHANGELOG.md
11+
integration-manifest.json = integration-manifest.json
12+
readme_source.md = readme_source.md
13+
EndProjectSection
714
EndProject
815
Global
916
GlobalSection(SolutionConfigurationPlatforms) = preSolution

digicert-certcentral-anycagateway/API/CertCentralAPIBase.cs renamed to digicert-certcentral-caplugin/API/CertCentralAPIBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Keyfactor.Extensions.CAGateway.DigiCert.Models;
1+
using Keyfactor.Extensions.CAPlugin.DigiCert.Models;
22
using Newtonsoft.Json;
33

44
using System;
@@ -7,7 +7,7 @@
77
using System.Text;
88
using System.Threading.Tasks;
99

10-
namespace Keyfactor.Extensions.CAGateway.DigiCert.API
10+
namespace Keyfactor.Extensions.CAPlugin.DigiCert.API
1111
{
1212
public abstract class CertCentralBaseResponse
1313
{

digicert-certcentral-anycagateway/API/CertificateChain.cs renamed to digicert-certcentral-caplugin/API/CertificateChain.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using System.Text;
77
using System.Threading.Tasks;
88

9-
namespace Keyfactor.Extensions.CAGateway.DigiCert.API
9+
namespace Keyfactor.Extensions.CAPlugin.DigiCert.API
1010
{
1111
public class CertificateChainRequest : CertCentralBaseRequest
1212
{

digicert-certcentral-anycagateway/API/CertificateTypeDetails.cs renamed to digicert-certcentral-caplugin/API/CertificateTypeDetails.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
using System.Threading.Tasks;
88
using System.Web;
99

10-
namespace Keyfactor.Extensions.CAGateway.DigiCert.API
10+
namespace Keyfactor.Extensions.CAPlugin.DigiCert.API
1111
{
1212
/// <summary>
1313
/// Request to get the details for a specific certificate type.

digicert-certcentral-anycagateway/API/CertificateTypes.cs renamed to digicert-certcentral-caplugin/API/CertificateTypes.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using System.Text;
77
using System.Threading.Tasks;
88

9-
namespace Keyfactor.Extensions.CAGateway.DigiCert.API
9+
namespace Keyfactor.Extensions.CAPlugin.DigiCert.API
1010
{
1111
/// <summary>
1212
/// Request to get a certificate type.

0 commit comments

Comments
 (0)