Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sanfix #26

Merged
merged 37 commits into from
Apr 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
6be6889
Merge pull request #8 from Keyfactor/release-1.0
dgaley Nov 10, 2021
eea5a9b
Update generated README
Nov 10, 2021
f8c7e3a
Add compatibility note
RexWheeler Dec 2, 2021
f8cbe25
Delete keyfactor-extension-generate-readme.yml
RexWheeler Dec 2, 2021
1660243
Create keyfactor-extension-generate-readme.yml
RexWheeler Dec 2, 2021
3fda433
Update generated README
Dec 2, 2021
5e40c5d
Merge pull request #15 from Keyfactor/release-1.0
dgaley Apr 26, 2022
3f03db8
update workflow/readme
Sep 19, 2022
a597a40
Update generated README
Sep 19, 2022
36f4e56
update workflow/readme
Sep 19, 2022
7b819d1
fix merge conflict
Sep 19, 2022
80a0b07
Merge pull request #18 from Keyfactor/update-workflow
fiddlermikey Sep 19, 2022
f3688fb
add catalog build to manifest
Sep 19, 2022
b9e73cd
Readme fix
dgaley Sep 20, 2022
321ee87
readme fix
dgaley Sep 20, 2022
2c7b664
Update generated README
Sep 20, 2022
ae40a31
add support statement (#19)
fiddlermikey Sep 30, 2022
2796a41
update readme with better migration instructions
dgaley Nov 3, 2022
22cce50
Update generated README
Nov 3, 2022
eef911a
add link to public integraions catalog (#20)
fiddlermikey Nov 16, 2022
db8da04
update changelog
dgaley Nov 16, 2022
b719ddc
Merge pull request #22 from Keyfactor/release-1.0
dgaley Jan 11, 2024
f428e61
Update generated README
Jan 11, 2024
ebd4840
Apply all sans to enrollment request
dgaley Jan 18, 2024
cfa5c4a
Update keyfactor-starter-workflow.yml
dgaley Jan 18, 2024
99e5bfd
Update integration-manifest.json
dgaley Jan 18, 2024
043acc9
Merge pull request #24 from Keyfactor/main
dgaley Jan 18, 2024
e814199
Add logging of enroll request
dgaley Feb 27, 2024
aead28d
Merge branch 'sanfix' of https://github.com/Keyfactor/globalsign-mssl…
dgaley Feb 27, 2024
ec140fe
Update generated README
Feb 27, 2024
5697c60
Add SAN logging
dgaley Apr 17, 2024
1692482
Update generated README
Apr 17, 2024
ba19f04
add sans properly
dgaley Apr 19, 2024
5ddeba7
Merge branch 'sanfix' of https://github.com/Keyfactor/globalsign-mssl…
dgaley Apr 19, 2024
900fd63
more san fixes
dgaley Apr 26, 2024
5ebd629
Update generated README
Apr 26, 2024
f786cf6
Update CHANGELOG.md
dgaley Apr 29, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 0 additions & 28 deletions .github/workflows/keyfactor-extension-generate-readme.yml

This file was deleted.

120 changes: 0 additions & 120 deletions .github/workflows/keyfactor-extension-release.yml

This file was deleted.

19 changes: 19 additions & 0 deletions .github/workflows/keyfactor-starter-workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
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@v2
secrets:
token: ${{ secrets.V2BUILDTOKEN}}
APPROVE_README_PUSH: ${{ secrets.APPROVE_README_PUSH}}
gpg_key: ${{ secrets.KF_GPG_PRIVATE_KEY }}
gpg_pass: ${{ secrets.KF_GPG_PASSPHRASE }}
23 changes: 22 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,23 @@
1.0.0
Inital Release. Support for Enroll, Sync, and Revocation.
Inital Release. Support for Enroll, Sync, and Revocation.

1.0.5
Fix bug where certain domains would not get parsed correctly.

1.0.9
Use DNS SAN in place of CN if present for domain lookup and enrollment

1.0.10
Add additional logging output

1.0.11
Convert GlobalSign status codes to Keyfactor status codes for syncing

1.0.12
Fix authentication bug when picking up certificates

1.0.15
Better datetime parsing of returned certificates

1.0.16
Fix for adding additional SANs to certificate requests
114 changes: 83 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,102 @@

# GlobalSign Managed SSL AnyGateway
## Ca-gateway

This integration allows for the Synchronization, Enrollment, and Revocation of TLS Certificates from the GlobalSign Certificate Center.

***
## Introduction
This AnyGateway plug enables issuance, revocation, and synchronization of certificates from GlobalSign's Managed SSL/TLS offering.
## Prerequisites
#### Integration status: Production - Ready for use in production environments.

## About the Keyfactor AnyCA Gateway DCOM Connector

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

## Support for GlobalSign Managed SSL AnyGateway

GlobalSign Managed SSL AnyGateway 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

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

---


---





## Keyfactor AnyCA Gateway Framework Supported
The Keyfactor gateway framework implements common logic shared across various gateway implementations and handles communication with Keyfactor Command. The gateway framework hosts gateway implementations or plugins that understand how to communicate with specific CAs. This allows you to integrate your third-party CAs with Keyfactor Command such that they behave in a manner similar to the CAs natively supported by Keyfactor Command.



### Certificate Chain

This gateway extension was compiled against version of the AnyCA Gateway DCOM Framework. You will need at least this version of the 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.


[Keyfactor CAGateway Install Guide](https://software.keyfactor.com/Guides/AnyGateway_Generic/Content/AnyGateway/Introduction.htm)



---


# Introduction
This AnyGateway plug-in enables issuance, revocation, and synchronization of certificates from GlobalSign's Managed SSL/TLS offering.

# Compatibility
This AnyGateway is designed to be used with version 21.3.2 of the Keyfactor AnyGateway Framework

# Prerequisites

## Certificate Chain

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

### API Allow List
## API Allow List
The GlobalSign API can filter requested based on IP address. Ensure that appropiate IP address is allowed to make requests to the GlobalSign API.

### Domain Point of Contact
## Domain Point of Contact
This AnyGateway plugin uses the contact information of the GCC Domain point of contact when enrolling for certificates. These fields are required to submit and enrollment and must be populated on the Domain's point of contact. This can be found in the GlobalSign Portal in the Manage Domains page.

### Migration
## Migration
In the event that a system is being upgraded from the Legacy GlobalSign CA Gateway (19.4 or older), a migration from the legacy database format to the AnyGateway format will be required.

To begin the migration process, copy the GlobalSignEsentMigrator.dll to the Program Files\Keyfactor\Keyfactor AnyGateway directory. Afterwardsm, the DatabaseManagementConsole.exe.config will need to be updated to reference the GlobalSignEsentMigrator. This is one by modifying the mapping for the IDatabaseMigrator inteface in the config file.
Database migration requires version 21.10 of the Keyfactor AnyGateway Framework (newer versions remove the migration capability).

To succesfully migrate and upgrade your GlobalSign CA Gateway, follow these steps:
1. Install Keyfactor AnyGateway Framework 21.10
2. Follow the steps below in the Install section to copy over the GlobalSignCAProxy.dll, but do NOT configure the gateway yet.
3. Additionally, copy over the GlobalSignEsentMigrator.dll file to the Program Files\Keyfactor\Keyfactor AnyGateway directory
4. Modify the DatabaseManagementConsole.exe.config file to update the IDatabaseMigrator definition:
```xml
<register type="IDatabaseMigrator" mapTo="Keyfactor.AnyGateway.GlobalSign.Database.GlobalSignEsentMigrator, GlobalSignEsentMigrator" />
```
<register type="IDatabaseMigrator" mapTo="Keyfactor.Extensions.AnyGateway.Database.GlobalSignEsentMigrator, GlobalSignEsentMigrator" />
```
5. Create your new database and use the appropriate cmdlets you configure the gateway's database connection (see AnyGateway documentation for details)
6. Use the DatabaseManagementConsole.exe migrate verb to migrate your ESENT database into the new SQL database (see AnyGateway documentation, or run 'DatabaseManagementConsole.exe help migrate' for details)
7. Once the database has been migrated, you can run the actual gateway configuration cmdlet to configure your gateway.
8. Optional: You can now upgrade to the latest version of the AnyGateway Framework if you wish (if you do so, after upgrading, make sure to run the DatabaseManagementConsole.exe with the upgrade verb to upgrade your database to the latest)


## Install
# Install
* Download latest successful build from [GitHub Releases](/releases/latest)

* Copy GloabalSignCAProxy.dll to the Program Files\Keyfactor\Keyfactor AnyGateway directory
* Copy GlobalSignCAProxy.dll to the Program Files\Keyfactor\Keyfactor AnyGateway directory

* Update the CAProxyServer.config file
* Update the CAConnection section to point at the GloabalSignCAProxy class
* Update the CAConnection section to point at the GlobalSignCAProxy class
```xml
<alias alias="CAConnector" type="Keyfactor.Extensions.AnyGateway.GlobalSign.GloabalSignCAProxy, GloabalSignCAProxy"/>
<alias alias="CAConnector" type="Keyfactor.Extensions.AnyGateway.GlobalSign.GlobalSignCAProxy, GlobalSignCAProxy"/>
```

## Configuration
# Configuration
The following sections will breakdown the required configurations for the AnyGatewayConfig.json file that will be imported to configure the AnyGateway.

### Templates
## Templates
The Template section will map the CA's SSL profile to an AD template. The Lifetime parameter is required and represents the certificate duration in months.
```json
"Templates": {
"WebServer": {
"ProductID": "PEV",
"ProductID": "PV_SHA2",
"Parameters": {
"Lifetime":"12"
}
Expand All @@ -63,8 +113,8 @@ The Template section will map the CA's SSL profile to an AD template. The Lifeti
* Cloud SSL SHA 256 ECDSA (PV_CLOUD_ECC2)


### Security
The security section does not change specifically for the Entrust CA Gateway. Refer to the AnyGateway Documentation for more detail.
## Security
The security section does not change specifically for the GlobalSign CA Gateway. Refer to the AnyGateway Documentation for more detail.
```json
/*Grant permissions on the CA to users or groups in the local domain.
READ: Enumerate and read contents of certificates.
Expand Down Expand Up @@ -99,7 +149,7 @@ The security section does not change specifically for the Entrust CA Gateway. R
}
}
```
### CerificateManagers
## CerificateManagers
The Certificate Managers section is optional.
If configured, all users or groups granted OFFICER permissions under the Security section
must be configured for at least one Template and one Requester.
Expand All @@ -124,18 +174,18 @@ The Certificate Managers section is optional.
}
}
```
### CAConnection
The CA Connection section will determine the API endpoint and configuration data used to connect to Entrust CA Gateway.
## CAConnection
The CA Connection section will determine the API endpoint and configuration data used to connect to GlobalSign MSSL API.
* ```IsTest```
This determines if the test API endpoints are used with the Gateway.
* ```PickupRetries```
This is the number of times the AnyGateway will attempt to pickup an new certificate before reporting an error. This setting applies to new, renewed, or reissued certificates.
* ```PickupDelay```
This is the number of seconds between retries when attempting to download a certificate.
* ```Username```
This is the username that will be used to connect to the GloabalSign API
This is the username that will be used to connect to the GlobalSign API
* ```Password```
This is the password that will be used to connect to the GloabalSign API
This is the password that will be used to connect to the GlobalSign API

```json
"CAConnection": {
Expand All @@ -146,11 +196,11 @@ This is the password that will be used to connect to the GloabalSign API
"Password":"password"
},
```
### GatewayRegistration
There are no specific Changes for the GatewayRegistration section. Refer to the Refer to the AnyGateway Documentation for more detail.
## GatewayRegistration
There are no specific Changes for the GatewayRegistration section. Refer to the AnyGateway Documentation for more detail.
```json
"GatewayRegistration": {
"LogicalName": "GlobalsSignCASandbox",
"LogicalName": "GlobalSignCASandbox",
"GatewayCertificate": {
"StoreName": "CA",
"StoreLocation": "LocalMachine",
Expand All @@ -159,12 +209,14 @@ There are no specific Changes for the GatewayRegistration section. Refer to the
}
```

### ServiceSettings
There are no specific Changes for the GatewayRegistration section. Refer to the Refer to the AnyGateway Documentation for more detail.
## ServiceSettings
There are no specific Changes for the ServiceSettings section. Refer to the AnyGateway Documentation for more detail.
```json
"ServiceSettings": {
"ViewIdleMinutes": 8,
"FullScanPeriodHours": 24,
"PartialScanPeriodMinutes": 240
}
```


Loading
Loading