From 1dd54c77a1e2b192c673ee8f35e8ec5721605a4c Mon Sep 17 00:00:00 2001 From: Michael Henderson Date: Thu, 2 May 2024 12:45:00 -0700 Subject: [PATCH 1/2] add .gitignore and bootstrap --- .../keyfactor-bootstrap-workflow.yml | 19 + .gitignore | 350 ++++++++++++++++++ 2 files changed, 369 insertions(+) create mode 100644 .github/workflows/keyfactor-bootstrap-workflow.yml create mode 100644 .gitignore diff --git a/.github/workflows/keyfactor-bootstrap-workflow.yml b/.github/workflows/keyfactor-bootstrap-workflow.yml new file mode 100644 index 0000000..6d8de53 --- /dev/null +++ b/.github/workflows/keyfactor-bootstrap-workflow.yml @@ -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 }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dfcfd56 --- /dev/null +++ b/.gitignore @@ -0,0 +1,350 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ From 4afcc627b4b691e6d555edbc987ac31cb6c0da5e Mon Sep 17 00:00:00 2001 From: Lee Fine <50836957+leefine02@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:22:37 +0000 Subject: [PATCH 2/2] Ab#52646 (#2) * Initial public release --- CHANGELOG.md | 2 + F5WafOrchestrator.Tests/F5WafCa.cs | 15 +- F5WafOrchestrator.Tests/F5WafTls.cs | 18 +- F5WafOrchestrator/CA/Discovery.cs | 78 +-- F5WafOrchestrator/CA/Inventory.cs | 54 +- F5WafOrchestrator/CA/Management.cs | 149 ++-- F5WafOrchestrator/F5WAFExceptionHandler.cs | 36 + F5WafOrchestrator/F5WafClient.cs | 746 ++++++++------------- F5WafOrchestrator/F5WafJob.cs | 8 +- F5WafOrchestrator/F5WafOrchestrator.csproj | 9 +- F5WafOrchestrator/JobAttribute.cs | 14 - F5WafOrchestrator/TLS/Discovery.cs | 74 +- F5WafOrchestrator/TLS/Inventory.cs | 63 +- F5WafOrchestrator/TLS/Management.cs | 93 +-- Images/image1.gif | Bin 0 -> 207832 bytes Images/image2.gif | Bin 0 -> 18194 bytes Images/image3.gif | Bin 0 -> 78184 bytes Images/image4.gif | Bin 0 -> 24925 bytes Images/image5.gif | Bin 0 -> 11589 bytes Images/image6.gif | Bin 0 -> 10923 bytes README.md | 300 ++++++--- integration-manifest.json | 88 +++ readme-src/readme-pam-support.md | 5 + readme_source.md | 173 +++++ 24 files changed, 1053 insertions(+), 872 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 F5WafOrchestrator/F5WAFExceptionHandler.cs delete mode 100644 F5WafOrchestrator/JobAttribute.cs create mode 100644 Images/image1.gif create mode 100644 Images/image2.gif create mode 100644 Images/image3.gif create mode 100644 Images/image4.gif create mode 100644 Images/image5.gif create mode 100644 Images/image6.gif create mode 100644 integration-manifest.json create mode 100644 readme-src/readme-pam-support.md create mode 100644 readme_source.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..1d2f874 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,2 @@ +v1.0.0 +- Initial Version \ No newline at end of file diff --git a/F5WafOrchestrator.Tests/F5WafCa.cs b/F5WafOrchestrator.Tests/F5WafCa.cs index 2fe2844..03ee7fe 100644 --- a/F5WafOrchestrator.Tests/F5WafCa.cs +++ b/F5WafOrchestrator.Tests/F5WafCa.cs @@ -1,4 +1,17 @@ -using System.Security.Cryptography.X509Certificates; +// Copyright 2024 Keyfactor +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + using Keyfactor.Extensions.Orchestrator.F5WafOrchestrator.CA; using Keyfactor.Logging; using Keyfactor.Orchestrators.Common.Enums; diff --git a/F5WafOrchestrator.Tests/F5WafTls.cs b/F5WafOrchestrator.Tests/F5WafTls.cs index 21ca11c..79e292f 100644 --- a/F5WafOrchestrator.Tests/F5WafTls.cs +++ b/F5WafOrchestrator.Tests/F5WafTls.cs @@ -1,13 +1,23 @@ -using System.Security.Cryptography.X509Certificates; -using Keyfactor.Extensions.Orchestrator.F5WafOrchestrator.Client; +// Copyright 2024 Keyfactor +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + using Keyfactor.Extensions.Orchestrator.F5WafOrchestrator.TLS; using Keyfactor.Logging; using Keyfactor.Orchestrators.Common.Enums; using Keyfactor.Orchestrators.Extensions; using Microsoft.Extensions.Logging; -using Newtonsoft.Json.Linq; using NLog.Extensions.Logging; -using Org.BouncyCastle.Pkcs; namespace F5WafOrchestrator.Tests; diff --git a/F5WafOrchestrator/CA/Discovery.cs b/F5WafOrchestrator/CA/Discovery.cs index 8c79e5f..1f52c0b 100644 --- a/F5WafOrchestrator/CA/Discovery.cs +++ b/F5WafOrchestrator/CA/Discovery.cs @@ -1,3 +1,17 @@ +// Copyright 2024 Keyfactor +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + using Keyfactor.Extensions.Orchestrator.F5WafOrchestrator.Client; using Keyfactor.Logging; using Keyfactor.Orchestrators.Common.Enums; @@ -6,47 +20,33 @@ namespace Keyfactor.Extensions.Orchestrator.F5WafOrchestrator.CA; -[Job("Discovery")] -public class Discovery : Job, IDiscoveryJobExtension +public class Discovery : Job, IDiscoveryJobExtension { ILogger _logger = LogHandler.GetClassLogger(); - - public JobResult ProcessJob(DiscoveryJobConfiguration config, SubmitDiscoveryUpdate cb) + + public JobResult ProcessJob(DiscoveryJobConfiguration config, SubmitDiscoveryUpdate cb) + { + _logger.LogDebug($"Begin {config.Capability} for job id {config.JobId}..."); + _logger.LogDebug($"Server: {config.ClientMachine}"); + + List namespaces; + + try { - _logger.LogDebug("Beginning F5 Distributed Cloud Discovery Job"); - - var result = new JobResult - { - Result = OrchestratorJobStatusJobResult.Failure, - JobHistoryId = config.JobHistoryId - }; - - try - { - F5Client = new F5WafClient(config.ClientMachine, config.ServerPassword); - } catch (Exception ex) - { - _logger.LogError(ex, $"Could not connect to F5 Client" + ex.Message); - return result; - } - - List namespaces; - - try - { - namespaces = F5Client.DiscoverNamespacesforCaStoreType(); - _logger.LogDebug($"Found {namespaces.Count()} namespaces in {config.ClientMachine}"); - } - catch (Exception ex) - { - _logger.LogError(ex, $"Error getting F5 namespaces from {config.ClientMachine}:\n" + ex.Message); - result.FailureMessage = $"Error getting F5 namespaces from {config.ClientMachine}:\n" + ex.Message; - return result; - } - - cb.Invoke(namespaces); - - result.Result = OrchestratorJobStatusJobResult.Success; - return result; + F5Client = new F5WafClient(config.ClientMachine, config.ServerPassword); + + namespaces = F5Client.DiscoverNamespacesforStoreType("ca-"); + _logger.LogDebug($"Found {namespaces.Count()} namespaces in {config.ClientMachine}"); } + catch (Exception ex) + { + _logger.LogError($"Exception for {config.Capability}: {F5WAFException.FlattenExceptionMessages(ex, string.Empty)} for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Failure, JobHistoryId = config.JobHistoryId, FailureMessage = F5WAFException.FlattenExceptionMessages(ex, $"Server {config.ClientMachine}:") }; + } + + cb.Invoke(namespaces); + + _logger.LogDebug($"...End {config.Capability} job for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Success, JobHistoryId = config.JobHistoryId }; + } } \ No newline at end of file diff --git a/F5WafOrchestrator/CA/Inventory.cs b/F5WafOrchestrator/CA/Inventory.cs index 09e7b93..7a4a388 100644 --- a/F5WafOrchestrator/CA/Inventory.cs +++ b/F5WafOrchestrator/CA/Inventory.cs @@ -1,4 +1,4 @@ -// Copyright 2023 Keyfactor +// Copyright 2024 Keyfactor // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,37 +20,26 @@ namespace Keyfactor.Extensions.Orchestrator.F5WafOrchestrator.CA; -[Job("Inventory")] -public class Inventory : Job, IInventoryJobExtension +public class Inventory : Job, IInventoryJobExtension { private readonly ILogger _logger = LogHandler.GetClassLogger(); public JobResult ProcessJob(InventoryJobConfiguration config, SubmitInventoryUpdate cb) { - _logger.LogDebug("Beginning F5 Distributed Cloud Inventory Job"); - - var result = new JobResult - { - Result = OrchestratorJobStatusJobResult.Failure, - JobHistoryId = config.JobHistoryId - }; - + _logger.LogDebug($"Begin {config.Capability} for job id {config.JobId}..."); + _logger.LogDebug($"Server: {config.CertificateStoreDetails.ClientMachine}"); + _logger.LogDebug($"Store Path: {config.CertificateStoreDetails.StorePath}"); + + List inventoryItems; + try { F5Client = new F5WafClient(config.CertificateStoreDetails.ClientMachine, config.ServerPassword); - } catch (Exception ex) - { - _logger.LogError(ex, $"Could not connect to F5 Client" + ex.Message); - return result; - } - - List inventoryItems; - string storePath = config.CertificateStoreDetails.StorePath; + string storePath = config.CertificateStoreDetails.StorePath; - try - { - // check if the string starts with "ca-" and remove it if present + // check if the string starts with "ca-" and remove it if present. This may occur + // if store was created in Command via a Discovery job if (config.CertificateStoreDetails.StorePath.StartsWith("ca-")) { storePath = config.CertificateStoreDetails.StorePath.Substring(3); // Skip the first 3 characters ("ca-") @@ -68,14 +57,21 @@ public JobResult ProcessJob(InventoryJobConfiguration config, SubmitInventoryUpd } catch (Exception ex) { - _logger.LogError(ex, $"Error getting F5 Certificate from namespace {storePath}:\n" + ex.Message); - result.FailureMessage = $"Error getting F5 Certificates from namespace {storePath}:\n" + ex.Message; - return result; + _logger.LogError($"Exception for {config.Capability}: {F5WAFException.FlattenExceptionMessages(ex, string.Empty)} for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Failure, JobHistoryId = config.JobHistoryId, FailureMessage = F5WAFException.FlattenExceptionMessages(ex, $"Site {config.CertificateStoreDetails.StorePath} on server {config.CertificateStoreDetails.ClientMachine}:") }; } - - cb.Invoke(inventoryItems); - result.Result = OrchestratorJobStatusJobResult.Success; - return result; + try + { + cb.Invoke(inventoryItems); + _logger.LogDebug($"...End {config.Capability} job for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Success, JobHistoryId = config.JobHistoryId }; + } + catch (Exception ex) + { + string errorMessage = F5WAFException.FlattenExceptionMessages(ex, string.Empty); + _logger.LogError($"Exception returning certificates for {config.Capability}: {errorMessage} for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Failure, JobHistoryId = config.JobHistoryId, FailureMessage = F5WAFException.FlattenExceptionMessages(ex, $"Site {config.CertificateStoreDetails.StorePath} on server {config.CertificateStoreDetails.ClientMachine}:") }; + } } } \ No newline at end of file diff --git a/F5WafOrchestrator/CA/Management.cs b/F5WafOrchestrator/CA/Management.cs index c496c5a..43db82b 100644 --- a/F5WafOrchestrator/CA/Management.cs +++ b/F5WafOrchestrator/CA/Management.cs @@ -1,4 +1,4 @@ -// Copyright 2023 Keyfactor +// Copyright 2024 Keyfactor // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,105 +20,80 @@ namespace Keyfactor.Extensions.Orchestrator.F5WafOrchestrator.CA; -[Job("Management")] -public class Management : Job, IManagementJobExtension +public class Management : Job, IManagementJobExtension { ILogger _logger = LogHandler.GetClassLogger(); - public JobResult ProcessJob(ManagementJobConfiguration config) + public JobResult ProcessJob(ManagementJobConfiguration config) + { + _logger.LogDebug($"Begin {config.Capability} for job id {config.JobId}..."); + _logger.LogDebug($"Server: {config.CertificateStoreDetails.ClientMachine}"); + _logger.LogDebug($"Store Path: {config.CertificateStoreDetails.StorePath}"); + + try { - _logger.LogDebug("Beginning F5 Cloud Management Job"); + F5Client = new F5WafClient(config.CertificateStoreDetails.ClientMachine, config.ServerPassword); - JobResult result = new JobResult - { - Result = OrchestratorJobStatusJobResult.Failure, - JobHistoryId = config.JobHistoryId - }; - - try + // check if the string starts with "ca-" and remove it if present. This may occur + // if store was created in Command via a Discovery job + if (config.CertificateStoreDetails.StorePath.StartsWith("ca-")) { - F5Client = new F5WafClient(config.CertificateStoreDetails.ClientMachine, config.ServerPassword); - } catch (Exception ex) + config.CertificateStoreDetails.StorePath = config.CertificateStoreDetails.StorePath.Substring(3); + } + + switch (config.OperationType) { - _logger.LogError(ex, $"Could not connect to F5 Client" + ex.Message); - return result; + case CertStoreOperationType.Add: + _logger.LogDebug($"BEGIN Add Operation for {config.CertificateStoreDetails.StorePath} on {config.CertificateStoreDetails.ClientMachine}."); + PerformCaCertAddition(config); + _logger.LogDebug($"END Add Operation for {config.CertificateStoreDetails.StorePath} on {config.CertificateStoreDetails.ClientMachine}."); + break; + case CertStoreOperationType.Remove: + _logger.LogDebug($"BEGIN Delete Operation for {config.CertificateStoreDetails.StorePath} on {config.CertificateStoreDetails.ClientMachine}."); + F5Client.RemoveCaOrTlsCertificate(config.CertificateStoreDetails.StorePath, config.JobCertificate.Alias, false); + _logger.LogDebug($"END Delete Operation for {config.CertificateStoreDetails.StorePath} on {config.CertificateStoreDetails.ClientMachine}."); + break; + default: + return new JobResult() { Result = OrchestratorJobStatusJobResult.Failure, JobHistoryId = config.JobHistoryId, FailureMessage = $"Site {config.CertificateStoreDetails.StorePath} on server {config.CertificateStoreDetails.ClientMachine}: Unsupported operation: {config.OperationType.ToString()}" }; } + } + catch (Exception ex) + { + _logger.LogError($"Exception for {config.Capability}: {F5WAFException.FlattenExceptionMessages(ex, string.Empty)} for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Failure, JobHistoryId = config.JobHistoryId, FailureMessage = F5WAFException.FlattenExceptionMessages(ex, $"Site {config.CertificateStoreDetails.StorePath} on server {config.CertificateStoreDetails.ClientMachine}:") }; + } - try - { - // check if the string starts with "ca-" and remove it if present - if (config.CertificateStoreDetails.StorePath.StartsWith("ca-")) - { - config.CertificateStoreDetails.StorePath = config.CertificateStoreDetails.StorePath.Substring(3); - } - - switch (config.OperationType) - { - case CertStoreOperationType.Add: - _logger.LogDebug("Adding certificate to F5 Cloud"); - - PerformCaCertAddition(config, result); + _logger.LogDebug($"...End {config.Capability} job for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Success, JobHistoryId = config.JobHistoryId }; + } - _logger.LogDebug("Add operation complete."); - - result.Result = OrchestratorJobStatusJobResult.Success; - break; - case CertStoreOperationType.Remove: - _logger.LogDebug("Removing certificate from F5 Cloud"); - - F5Client.RemoveCaCertificate(config.CertificateStoreDetails.StorePath, config.JobCertificate.Alias); + private void PerformCaCertAddition(ManagementJobConfiguration config) + { + _logger.MethodEntry(LogLevel.Debug); - _logger.LogDebug("Remove operation complete."); - - result.Result = OrchestratorJobStatusJobResult.Success; - break; - default: - _logger.LogDebug("Invalid management operation type: {0}", config.OperationType); - throw new ArgumentOutOfRangeException(); - } - } catch (Exception ex) - { - _logger.LogError(ex, "Error processing job:\n {0}", ex.Message); - result.FailureMessage = ex.Message; - return result; - } + bool certificateExists = F5Client.CertificateExistsInF5(config.CertificateStoreDetails.StorePath, config.JobCertificate.Alias, false); - return result; - } - - private void PerformCaCertAddition(ManagementJobConfiguration config, JobResult result) + if (certificateExists && !config.Overwrite) { - // ensure that an alias is provided - if (string.IsNullOrWhiteSpace(config.JobCertificate.Alias)) - { - throw new Exception("Certificate alias is required."); - } - // ensure that an alias is provided - if (!string.IsNullOrWhiteSpace(config.JobCertificate.PrivateKeyPassword)) - { - throw new Exception("Certificate passed is not a CA."); - } - - if (F5Client.CertificateExistsInF5(config.CertificateStoreDetails.StorePath, config.JobCertificate.Alias) && !config.Overwrite) - { - string message = - $"Certificate with alias \"{config.JobCertificate.Alias}\" already exists in F5, and job was not configured to overwrite."; - _logger.LogDebug(message); - throw new Exception(message); - } + string message = + $"Certificate with alias \"{config.JobCertificate.Alias}\" already exists in F5, and job was not configured to overwrite."; + _logger.LogDebug(message); + throw new Exception(message); + } - F5WafClient.CaPostRoot reqBody = F5Client.FormatCaCertificateRequest(config.JobCertificate); - if (F5Client.CertificateExistsInF5(config.CertificateStoreDetails.StorePath, config.JobCertificate.Alias) && - config.Overwrite) - { - _logger.LogDebug("Overwrite is enabled, replacing certificate in F5 called \"{0}\"", - config.JobCertificate.Alias); - F5Client.ReplaceCaCertificateInF5(config.CertificateStoreDetails.StorePath, reqBody); - } - else - { - _logger.LogDebug("Adding certificate to F5 Cloud"); - F5Client.AddCaCertificate(config.CertificateStoreDetails.StorePath, reqBody); - } + F5WafClient.CaPostRoot reqBody = F5Client.FormatCaCertificateRequest(config.JobCertificate); + if (certificateExists && config.Overwrite) + { + _logger.LogDebug("Overwrite is enabled, replacing certificate in F5 called \"{0}\"", + config.JobCertificate.Alias); + F5Client.ReplaceCaOrTlsCertificate(config.CertificateStoreDetails.StorePath, null, reqBody, false); } + else + { + _logger.LogDebug("Adding certificate to F5 Cloud"); + F5Client.AddCaOrTlsCertificate(config.CertificateStoreDetails.StorePath, null, reqBody, false); + } + + _logger.MethodExit(LogLevel.Debug); + } } diff --git a/F5WafOrchestrator/F5WAFExceptionHandler.cs b/F5WafOrchestrator/F5WAFExceptionHandler.cs new file mode 100644 index 0000000..869d3c7 --- /dev/null +++ b/F5WafOrchestrator/F5WAFExceptionHandler.cs @@ -0,0 +1,36 @@ +// Copyright 2024 Keyfactor +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System; + +namespace Keyfactor.Extensions.Orchestrator.F5WafOrchestrator +{ + class F5WAFException : ApplicationException + { + public F5WAFException(string? message) : base(message) + { } + + public F5WAFException(string message, Exception ex) : base(message, ex) + { } + + public static string FlattenExceptionMessages(Exception ex, string message) + { + message += ex.Message + Environment.NewLine; + if (ex.InnerException != null) + message = FlattenExceptionMessages(ex.InnerException, message); + + return message; + } + } +} diff --git a/F5WafOrchestrator/F5WafClient.cs b/F5WafOrchestrator/F5WafClient.cs index dfdb271..f017abe 100644 --- a/F5WafOrchestrator/F5WafClient.cs +++ b/F5WafOrchestrator/F5WafClient.cs @@ -1,3 +1,17 @@ +// Copyright 2024 Keyfactor +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + using System.Net.Http.Headers; using System.Text; using System.Text.Json; @@ -9,7 +23,9 @@ using Keyfactor.Orchestrators.Extensions; using Newtonsoft.Json.Linq; using Org.BouncyCastle.Pkcs; - +using System.Net; +using Org.BouncyCastle.Asn1.Ocsp; +using System.Xml.Linq; namespace Keyfactor.Extensions.Orchestrator.F5WafOrchestrator.Client; @@ -105,193 +121,120 @@ public class CaRootObject public CaSpec? spec { get; set; } } - public F5WafClient(string hostname, string apiToken) - { - Log = LogHandler.GetClassLogger(); - Log.LogDebug("Initializing F5 Distributed Cloud client"); - - var f5ClientHandler = new HttpClientHandler(); - - F5Client = new HttpClient(f5ClientHandler); - F5Client.BaseAddress = new Uri("https://" + hostname); - - var auth = $"APIToken {apiToken}"; - F5Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", auth); - } + private string HostName { get; set; } - private ILogger Log { get; } private HttpClient F5Client { get; } - public string GetTlsCertificatesFromF5(string f5Namespace) + private ILogger _logger { get; } + + internal F5WafClient(string hostname, string apiToken) { - var response = F5Client.GetAsync($"/api/config/namespaces/{f5Namespace}/certificates"); - response.Wait(); - var stringResponse = response.Result.Content.ReadAsStringAsync(); - stringResponse.Wait(); - - //parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) - { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - throw new Exception(stringResponse.ToString()); - } + _logger = LogHandler.GetClassLogger(); + _logger.MethodEntry(LogLevel.Debug); + _logger.LogDebug("Initializing F5 Distributed Cloud client"); + + HostName = "https://" + hostname; - return stringResponse.Result; + F5Client = new HttpClient(new HttpClientHandler()); + F5Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", $"APIToken {apiToken}"); + + _logger.MethodExit(LogLevel.Debug); + } + + internal string GetTlsCertificatesFromF5(string f5Namespace) + { + _logger.MethodEntry(LogLevel.Debug); + + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, $"{HostName}/api/config/namespaces/{f5Namespace}/certificates"); + string result = SubmitRequest(request); + + _logger.MethodExit(LogLevel.Debug); + + return result; } - public string GetCaCertificatesFromF5(string f5Namespace) + internal string GetCaCertificatesFromF5(string f5Namespace) { - var response = F5Client.GetAsync($"/api/config/namespaces/{f5Namespace}/trusted_ca_lists"); - response.Wait(); - var stringResponse = response.Result.Content.ReadAsStringAsync(); - stringResponse.Wait(); - - // parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) - { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - throw new Exception(stringResponse.ToString()); - } - - return stringResponse.Result; + _logger.MethodEntry(LogLevel.Debug); + + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, $"{HostName}/api/config/namespaces/{f5Namespace}/trusted_ca_lists"); + string result = SubmitRequest(request); + + _logger.MethodExit(LogLevel.Debug); + + return result; } - public string GetHttpLoadBalancersFromF5(string f5Namespace) + internal string GetHttpLoadBalancersFromF5(string f5Namespace) { - var response = F5Client.GetAsync($"/api/config/namespaces/{f5Namespace}/http_loadbalancers"); - response.Wait(); - var stringResponse = response.Result.Content.ReadAsStringAsync(); - stringResponse.Wait(); - - //parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) - { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - throw new Exception(stringResponse.ToString()); - } - - return stringResponse.Result; + _logger.MethodEntry(LogLevel.Debug); + + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, $"{HostName}/api/config/namespaces/{f5Namespace}/http_loadbalancers"); + string result = SubmitRequest(request); + + _logger.MethodExit(LogLevel.Debug); + + return result; } - public string GetHttpLoadBalancerFromF5(string f5Namespace, string certAlias) + internal string GetHttpLoadBalancerFromF5(string f5Namespace, string certAlias) { - var response = F5Client.GetAsync($"/api/config/namespaces/{f5Namespace}/http_loadbalancers/{certAlias}?response_format=GET_RSP_FORMAT_DEFAULT"); - response.Wait(); - var stringResponse = response.Result.Content.ReadAsStringAsync(); - stringResponse.Wait(); - - // parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) - { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - throw new Exception(stringResponse.ToString()); - } - - return stringResponse.Result; + _logger.MethodEntry(LogLevel.Debug); + + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, $"{HostName}/api/config/namespaces/{f5Namespace}/http_loadbalancers/{certAlias}?response_format=GET_RSP_FORMAT_DEFAULT"); + string result = SubmitRequest(request); + + _logger.MethodExit(LogLevel.Debug); + + return result; } - public string? GetTlsCertificateContentsFromF5(string f5Namespace, string certName) + internal string? GetTlsCertificateContentsFromF5(string f5Namespace, string certName) { - var response = F5Client.GetAsync($"/api/config/namespaces/{f5Namespace}/certificates/{certName}?response_format=GET_RSP_FORMAT_DEFAULT"); - response.Wait(); - var resp = response.Result.Content.ReadAsStringAsync(); - resp.Wait(); + _logger.MethodEntry(LogLevel.Debug); - // parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) - { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - throw new Exception($"Error retrieving F5 certificate contents: {resp}"); - } - - RootObject rootObject = JsonSerializer.Deserialize(resp.Result) + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, $"{HostName}/api/config/namespaces/{f5Namespace}/certificates/{certName}?response_format=GET_RSP_FORMAT_DEFAULT"); + string result = SubmitRequest(request); + + RootObject rootObject = JsonSerializer.Deserialize(result) ?? throw new InvalidOperationException("Deserialized RootObject is null."); - + + _logger.MethodExit(LogLevel.Debug); + return rootObject.spec?.certificate_url; } - public string? GetCaCertificateContentsFromF5(string f5Namespace, string certName) + internal string? GetCaCertificateContentsFromF5(string f5Namespace, string certName) { - var response = F5Client.GetAsync($"/api/config/namespaces/{f5Namespace}/trusted_ca_lists/{certName}?response_format=GET_RSP_FORMAT_DEFAULT"); - response.Wait(); - var resp = response.Result.Content.ReadAsStringAsync(); - resp.Wait(); + _logger.MethodEntry(LogLevel.Debug); - //parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) - { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - throw new Exception($"Error retrieving F5 certificate contents: {resp}"); - } - - CaRootObject rootObject = JsonSerializer.Deserialize(resp.Result) + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, $"{HostName}/api/config/namespaces/{f5Namespace}/trusted_ca_lists/{certName}?response_format=GET_RSP_FORMAT_DEFAULT"); + string result = SubmitRequest(request); + + CaRootObject rootObject = JsonSerializer.Deserialize(result) ?? throw new InvalidOperationException("Deserialized RootObject is null."); - + + _logger.MethodExit(LogLevel.Debug); + return rootObject.spec?.trusted_ca_url; } - - public (IEnumerable, IEnumerable) TlsCertificateRetrievalProcess(string f5Namespace) + + internal string GetNamespaces() + { + _logger.MethodEntry(LogLevel.Debug); + + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, $"{HostName}/api/web/namespaces"); + string result = SubmitRequest(request); + + _logger.MethodExit(LogLevel.Debug); + + return result; + } + + internal (IEnumerable, IEnumerable) TlsCertificateRetrievalProcess(string f5Namespace) { + _logger.MethodEntry(LogLevel.Debug); + List encodedCerts = new List(); List certNames = new List(); try @@ -321,7 +264,7 @@ public string GetHttpLoadBalancerFromF5(string f5Namespace, string certAlias) } else { - Log.LogDebug($"No certificates found in F5."); + _logger.LogDebug($"No certificates found in F5."); } } } @@ -329,15 +272,19 @@ public string GetHttpLoadBalancerFromF5(string f5Namespace, string certAlias) } catch (Exception ex) { - Log.LogDebug($"Error retrieving F5 certificates: {ex.Message}"); - throw new Exception($"Error retrieving F5 certificates: {ex.Message}"); + _logger.LogDebug($"Error retrieving F5 certificates: {ex.Message}"); + throw new F5WAFException($"Error retrieving F5 certificates: {ex.Message}"); } - + + _logger.MethodExit(LogLevel.Debug); + return (certNames, encodedCerts); } - public (IEnumerable, IEnumerable) CaCertificateRetrievalProcess(string f5Namespace) + internal (IEnumerable, IEnumerable) CaCertificateRetrievalProcess(string f5Namespace) { + _logger.MethodEntry(LogLevel.Debug); + List encodedCerts = new List(); List certNames = new List(); try @@ -367,7 +314,7 @@ public string GetHttpLoadBalancerFromF5(string f5Namespace, string certAlias) } else { - Log.LogDebug($"No certificates found in F5."); + _logger.LogDebug($"No certificates found in F5."); } } } @@ -375,135 +322,42 @@ public string GetHttpLoadBalancerFromF5(string f5Namespace, string certAlias) } catch (Exception ex) { - Log.LogDebug($"Error retrieving F5 certificates: {ex.Message}"); - throw new Exception($"Error retrieving F5 certificates: {ex.Message}"); - } - - return (certNames, encodedCerts); - } - - static string ConvertCertToPemFormat(string base64EncodedCertificate) - { - StringBuilder builder = new StringBuilder(); - - builder.Append("-----BEGIN CERTIFICATE-----\n"); - - // split base64 string into 64-character lines - for (int i = 0; i < base64EncodedCertificate.Length; i += 64) - { - int lineLength = Math.Min(64, base64EncodedCertificate.Length - i); - string line = base64EncodedCertificate.Substring(i, lineLength); - builder.Append(line + "\n"); + _logger.LogDebug($"Error retrieving F5 certificates: {ex.Message}"); + throw new F5WAFException($"Error retrieving F5 certificates: {ex.Message}"); } - builder.Append("-----END CERTIFICATE-----\n"); + _logger.MethodExit(LogLevel.Debug); - return builder.ToString(); + return (certNames, encodedCerts); } - - static string ConvertKeyToPemFormat(string base64EncodedCertificate) + + internal void AddCaOrTlsCertificate(string f5Namespace, PostRoot? tlsReqBody, CaPostRoot? caReqBody, bool isTLSCertificate) { - StringBuilder builder = new StringBuilder(); + _logger.MethodEntry(LogLevel.Debug); - builder.Append("-----BEGIN RSA PRIVATE KEY-----\n"); + string certType = "trusted_ca_lists"; + var jsonReqBody = JsonSerializer.Serialize(caReqBody); - // split base64 string into 64-character lines - for (int i = 0; i < base64EncodedCertificate.Length; i += 64) + if (isTLSCertificate) { - int lineLength = Math.Min(64, base64EncodedCertificate.Length - i); - string line = base64EncodedCertificate.Substring(i, lineLength); - builder.Append(line + "\n"); + certType = "certificates"; + jsonReqBody = JsonSerializer.Serialize(tlsReqBody); } - builder.Append("-----END RSA PRIVATE KEY-----\n"); - - return builder.ToString(); - } - - public string ExtractEndEntityandCertChain(string pfxData, string password) - { - string endEntityandChain = ""; + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, $"{HostName}/api/config/namespaces/{f5Namespace}/{certType}"); - byte[] pfxBytes = Convert.FromBase64String(pfxData); - Pkcs12Store store = new Pkcs12Store(new MemoryStream(pfxBytes), password.ToCharArray()); - foreach (string alias in store.Aliases) - { - if (store.IsKeyEntry(alias)) - { - X509CertificateEntry[] chain = store.GetCertificateChain(alias); - if (chain == null) - { - throw new Exception("No certificate chain found or no key entry exists."); - } - string[] pemCertificates = new string[chain.Length]; - for (int i = 0; i < chain.Length; i++) - { - pemCertificates[i] = ConvertCertToPemFormat(Convert.ToBase64String(chain[i].Certificate.GetEncoded())); - endEntityandChain += pemCertificates[i]; - } - } - } - return endEntityandChain; - } - - public void AddTlsCertificate(string f5Namespace, PostRoot reqBody) - { - var jsonReqBody = JsonSerializer.Serialize(reqBody); var stringReqBody = new StringContent(jsonReqBody, Encoding.UTF8, "application/json"); + request.Content = stringReqBody; + + SubmitRequest(request); - var response = F5Client.PostAsync($"/api/config/namespaces/{f5Namespace}/certificates", stringReqBody); - response.Wait(); - - //parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) - { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - var errorMessage = response.Result.Content.ReadAsStringAsync(); - errorMessage.Wait(); - throw new Exception(errorMessage.ToString()); - } - } - - public void AddCaCertificate(string f5Namespace, CaPostRoot reqBody) - { - var jsonReqBody = JsonSerializer.Serialize(reqBody); - var stringReqBody = new StringContent(jsonReqBody, Encoding.UTF8, "application/json"); - - var response = F5Client.PostAsync($"/api/config/namespaces/{f5Namespace}/trusted_ca_lists", stringReqBody); - response.Wait(); - - //parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) - { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - var errorMessage = response.Result.Content.ReadAsStringAsync(); - errorMessage.Wait(); - throw new Exception(errorMessage.ToString()); - } + _logger.MethodExit(LogLevel.Debug); } - public PostRoot FormatTlsCertificateRequest(ManagementJobCertificate mgmtJobCert) + internal PostRoot FormatTlsCertificateRequest(ManagementJobCertificate mgmtJobCert) { + _logger.MethodEntry(LogLevel.Debug); + X509Certificate2 certX509; try { @@ -568,11 +422,16 @@ public PostRoot FormatTlsCertificateRequest(ManagementJobCertificate mgmtJobCert DisableOcspStapling = new DisableOcspStapling() } }; + + _logger.MethodExit(LogLevel.Debug); + return reqBody; } - public CaPostRoot FormatCaCertificateRequest(ManagementJobCertificate mgmtJobCert) + internal CaPostRoot FormatCaCertificateRequest(ManagementJobCertificate mgmtJobCert) { + _logger.MethodEntry(LogLevel.Debug); + X509Certificate2 certX509; try { @@ -608,68 +467,32 @@ public CaPostRoot FormatCaCertificateRequest(ManagementJobCertificate mgmtJobCer trusted_ca_url = "string:///" + encodedCertUtf8Base64 } }; + + _logger.MethodExit(LogLevel.Debug); + return reqBody; } - public void RemoveTlsCertificate(string f5Namespace, string certName) - { - var response = F5Client.DeleteAsync($"/api/config/namespaces/{f5Namespace}/certificates/{certName}"); - response.Wait(); - var stringResponse = response.Result.Content.ReadAsStringAsync(); - stringResponse.Wait(); - - //parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) - { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - var errorMessage = response.Result.Content.ReadAsStringAsync(); - errorMessage.Wait(); - throw new Exception(errorMessage.ToString()); - } - } - - public void RemoveCaCertificate(string f5Namespace, string certName) + internal void RemoveCaOrTlsCertificate(string f5Namespace, string certName, bool isTLSCertificate) { - var response = F5Client.DeleteAsync($"/api/config/namespaces/{f5Namespace}/trusted_ca_lists/{certName}"); - response.Wait(); - var stringResponse = response.Result.Content.ReadAsStringAsync(); - stringResponse.Wait(); - - //parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) - { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - var errorMessage = response.Result.Content.ReadAsStringAsync(); - errorMessage.Wait(); - throw new Exception(errorMessage.ToString()); - } + _logger.MethodEntry(LogLevel.Debug); + + string certType = isTLSCertificate ? "certificates" : "trusted_ca_lists"; + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Delete, $"{HostName}/api/config/namespaces/{f5Namespace}/{certType}/{certName}"); + string result = SubmitRequest(request); + + _logger.MethodExit(LogLevel.Debug); } - - public bool CertificateExistsInF5(string f5Namespace, string alias) + + internal bool CertificateExistsInF5(string f5Namespace, string alias, bool isTLSCertificate) { - var certsJson = GetTlsCertificatesFromF5(f5Namespace); + _logger.MethodEntry(LogLevel.Debug); + + var certsJson = isTLSCertificate ? GetTlsCertificatesFromF5(f5Namespace) : GetCaCertificatesFromF5(f5Namespace); var certs = JsonDocument.Parse(certsJson); - + + _logger.MethodExit(LogLevel.Debug); + // Iterate through the names of the cert items and return true if a name matching the alias exists return certs.RootElement .GetProperty("items") @@ -678,127 +501,35 @@ public bool CertificateExistsInF5(string f5Namespace, string alias) nameElement.GetString() == alias); } - public void ReplaceTlsCertificate(string f5Namespace, PostRoot reqBody) + internal void ReplaceCaOrTlsCertificate(string f5Namespace, PostRoot? tlsReqBody, CaPostRoot? caReqBody, bool isTLSCertificate) { - var jsonReqBody = JsonSerializer.Serialize(reqBody); - var stringReqBody = new StringContent(jsonReqBody, Encoding.UTF8, "application/json"); + _logger.MethodEntry(LogLevel.Debug); - var response = F5Client.PutAsync($"/api/config/namespaces/{f5Namespace}/certificates/{reqBody.Metadata.Name}", stringReqBody); - response.Wait(); + string certType = "trusted_ca_lists"; + string? metadataName = caReqBody?.Metadata.Name; + var jsonReqBody = JsonSerializer.Serialize(caReqBody); - //parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) + if (isTLSCertificate) { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - var errorMessage = response.Result.Content.ReadAsStringAsync(); - errorMessage.Wait(); - throw new Exception(errorMessage.ToString()); + certType = "certificates"; + metadataName = tlsReqBody?.Metadata.Name; + jsonReqBody = JsonSerializer.Serialize(tlsReqBody); } - } - - public void ReplaceCaCertificateInF5(string f5Namespace, CaPostRoot reqBody) - { - var jsonReqBody = JsonSerializer.Serialize(reqBody); + + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Put, $"{HostName}/api/config/namespaces/{f5Namespace}/{certType}/{metadataName}"); + var stringReqBody = new StringContent(jsonReqBody, Encoding.UTF8, "application/json"); + request.Content = stringReqBody; - var response = F5Client.PutAsync($"/api/config/namespaces/{f5Namespace}/trusted_ca_lists/{reqBody.Metadata.Name}", stringReqBody); - response.Wait(); + SubmitRequest(request); - //parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) - { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - var errorMessage = response.Result.Content.ReadAsStringAsync(); - errorMessage.Wait(); - throw new Exception(errorMessage.ToString()); - } + _logger.MethodExit(LogLevel.Debug); } - public string GetNamespaces() + internal List DiscoverNamespacesforStoreType(string storeTypePrefix) { - var response = F5Client.GetAsync($"/api/web/namespaces"); - response.Wait(); - var resp = response.Result.Content.ReadAsStringAsync(); - resp.Wait(); + _logger.MethodEntry(LogLevel.Debug); - //parse status code for error handling - string statusCode = string.Empty; - string[] respMessage = response.Result.ToString().Split(','); - for (int i = 0; i < respMessage.Length; i++) - { - if (respMessage[i].Contains("StatusCode:")) - { - statusCode = respMessage[i].Trim().Substring("StatsCode: ".Length).Trim(); - break; - } - } - - if (statusCode != "200") - { - throw new Exception($"Error retrieving F5 certificate contents: {resp}"); - } - - return resp.Result; - } - - public List DiscoverNamespacesforCaStoreType() - { - List namespacesList = new List(); - try - { - var namespacesJson = GetNamespaces(); - var namespaces = JsonDocument.Parse(namespacesJson); - - var items = namespaces.RootElement.GetProperty("items").EnumerateArray(); - - // Iterate through each cert in "items" JSON object - foreach (var item in items) - { - if (item.TryGetProperty("name", out JsonElement nameElement)) - { - string? name = nameElement.GetString(); - if (name != null) - { - namespacesList.Add("ca-" + name); - } - else - { - Log.LogDebug($"No namespaces found in F5."); - } - } - } - } - catch (Exception ex) - { - Log.LogDebug($"Error retrieving F5 namespaces: {ex.Message}"); - throw new Exception($"Error retrieving F5 namespaces: {ex.Message}"); - } - - return namespacesList; - } - - public List DiscoverNamespacesforTlsStoreType() - { List namespacesList = new List(); try { @@ -815,26 +546,26 @@ public List DiscoverNamespacesforTlsStoreType() string? name = nameElement.GetString(); if (name != null) { - namespacesList.Add("tls-" + name); - } - else - { - Log.LogDebug($"No namespaces found in F5."); + namespacesList.Add(storeTypePrefix + name); } } } } catch (Exception ex) { - Log.LogDebug($"Error retrieving F5 namespaces: {ex.Message}"); - throw new Exception($"Error retrieving F5 namespaces: {ex.Message}"); + _logger.LogDebug($"Error retrieving F5 namespaces: {ex.Message}"); + throw new F5WAFException($"Error retrieving F5 namespaces: {ex.Message}"); } - + + _logger.MethodExit(LogLevel.Debug); + return namespacesList; } - public bool JobCertIsAttachedToHttpLoadBalancer(string f5Namespace, string jobCertName) + internal bool JobCertIsAttachedToHttpLoadBalancer(string f5Namespace, string jobCertName) { + _logger.MethodEntry(LogLevel.Debug); + var certsJson = GetHttpLoadBalancersFromF5(f5Namespace); var certs = JsonDocument.Parse(certsJson); var items = certs.RootElement.GetProperty("items").EnumerateArray(); @@ -863,7 +594,7 @@ public bool JobCertIsAttachedToHttpLoadBalancer(string f5Namespace, string jobCe // check to see if job cert name matches certs tied to load balancer if (certificate != null) { - string certificateName = certificate["name"].ToString(); + string? certificateName = certificate["name"]?.ToString(); if (certificateName == jobCertName) { return true; @@ -874,6 +605,113 @@ public bool JobCertIsAttachedToHttpLoadBalancer(string f5Namespace, string jobCe } } } + + _logger.MethodExit(LogLevel.Debug); + return false; } + + private string SubmitRequest(HttpRequestMessage request) + { + _logger.MethodEntry(LogLevel.Debug); + + var response = F5Client.SendAsync(request).Result; + var result = response.Content.ReadAsStringAsync().Result; + + if (response.StatusCode != HttpStatusCode.OK && + response.StatusCode != HttpStatusCode.Accepted && + response.StatusCode != HttpStatusCode.Created && + response.StatusCode != HttpStatusCode.NoContent) + { + string errorMessage = $"Error calling {request.RequestUri}: {result}"; + _logger.LogError(errorMessage); + _logger.MethodExit(LogLevel.Debug); + throw new F5WAFException(errorMessage); + } + + _logger.MethodExit(LogLevel.Debug); + + return result; + } + + private string ExtractEndEntityandCertChain(string pfxData, string password) + { + _logger.MethodEntry(LogLevel.Debug); + + string endEntityandChain = ""; + + byte[] pfxBytes = Convert.FromBase64String(pfxData); + + Pkcs12StoreBuilder storeBuilder = new Pkcs12StoreBuilder(); + Pkcs12Store store = storeBuilder.Build(); + store.Load(new MemoryStream(pfxBytes), password.ToCharArray()); + + foreach (string alias in store.Aliases) + { + if (store.IsKeyEntry(alias)) + { + X509CertificateEntry[] chain = store.GetCertificateChain(alias); + if (chain == null) + { + throw new F5WAFException("No certificate chain found or no key entry exists."); + } + string[] pemCertificates = new string[chain.Length]; + for (int i = 0; i < chain.Length; i++) + { + pemCertificates[i] = ConvertCertToPemFormat(Convert.ToBase64String(chain[i].Certificate.GetEncoded())); + endEntityandChain += pemCertificates[i]; + } + } + } + + _logger.MethodExit(LogLevel.Debug); + + return endEntityandChain; + } + + private string ConvertCertToPemFormat(string base64EncodedCertificate) + { + _logger.MethodEntry(LogLevel.Debug); + + StringBuilder builder = new StringBuilder(); + + builder.Append("-----BEGIN CERTIFICATE-----\n"); + + // split base64 string into 64-character lines + for (int i = 0; i < base64EncodedCertificate.Length; i += 64) + { + int lineLength = Math.Min(64, base64EncodedCertificate.Length - i); + string line = base64EncodedCertificate.Substring(i, lineLength); + builder.Append(line + "\n"); + } + + builder.Append("-----END CERTIFICATE-----\n"); + + _logger.MethodExit(LogLevel.Debug); + + return builder.ToString(); + } + + private string ConvertKeyToPemFormat(string base64EncodedCertificate) + { + _logger.MethodEntry(LogLevel.Debug); + + StringBuilder builder = new StringBuilder(); + + builder.Append("-----BEGIN RSA PRIVATE KEY-----\n"); + + // split base64 string into 64-character lines + for (int i = 0; i < base64EncodedCertificate.Length; i += 64) + { + int lineLength = Math.Min(64, base64EncodedCertificate.Length - i); + string line = base64EncodedCertificate.Substring(i, lineLength); + builder.Append(line + "\n"); + } + + builder.Append("-----END RSA PRIVATE KEY-----\n"); + + _logger.MethodExit(LogLevel.Debug); + + return builder.ToString(); + } } \ No newline at end of file diff --git a/F5WafOrchestrator/F5WafJob.cs b/F5WafOrchestrator/F5WafJob.cs index cb8f35e..9138bb4 100644 --- a/F5WafOrchestrator/F5WafJob.cs +++ b/F5WafOrchestrator/F5WafJob.cs @@ -1,4 +1,4 @@ -// Copyright 2023 Keyfactor +// Copyright 2024 Keyfactor // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,8 +17,8 @@ namespace Keyfactor.Extensions.Orchestrator.F5WafOrchestrator; -public abstract class Job : IOrchestratorJobExtension +public abstract class Job { - protected F5WafClient F5Client { get; set; } - public string ExtensionName => "F5Waf"; + internal F5WafClient F5Client { get; set; } + public string ExtensionName => ""; } \ No newline at end of file diff --git a/F5WafOrchestrator/F5WafOrchestrator.csproj b/F5WafOrchestrator/F5WafOrchestrator.csproj index c3ea971..e2ce2df 100644 --- a/F5WafOrchestrator/F5WafOrchestrator.csproj +++ b/F5WafOrchestrator/F5WafOrchestrator.csproj @@ -1,7 +1,9 @@ + false net6.0 + true enable enable Keyfactor.Extensions.Orchestrator.F5WafOrchestrator @@ -9,6 +11,7 @@ + @@ -32,11 +35,15 @@ - C:\Program Files\Keyfactor\Keyfactor Orchestrator\extensions\F5WafOrchestrator + $(BaseOutputPath) false false + + + + diff --git a/F5WafOrchestrator/JobAttribute.cs b/F5WafOrchestrator/JobAttribute.cs deleted file mode 100644 index 91dce85..0000000 --- a/F5WafOrchestrator/JobAttribute.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Keyfactor.Extensions.Orchestrator.F5WafOrchestrator; - -[AttributeUsage(AttributeTargets.Class, Inherited = false)] -public class JobAttribute : Attribute -{ - public JobAttribute(string jobClass) - { - JobClassName = jobClass; - } - - private string JobClassName { get; } - - public virtual string JobClass => JobClassName; -} \ No newline at end of file diff --git a/F5WafOrchestrator/TLS/Discovery.cs b/F5WafOrchestrator/TLS/Discovery.cs index 51b38e6..f0306cf 100644 --- a/F5WafOrchestrator/TLS/Discovery.cs +++ b/F5WafOrchestrator/TLS/Discovery.cs @@ -1,3 +1,17 @@ +// Copyright 2024 Keyfactor +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + using Keyfactor.Extensions.Orchestrator.F5WafOrchestrator.Client; using Keyfactor.Logging; using Keyfactor.Orchestrators.Common.Enums; @@ -6,47 +20,33 @@ namespace Keyfactor.Extensions.Orchestrator.F5WafOrchestrator.TLS; -[Job("Discovery")] -public class Discovery : Job, IDiscoveryJobExtension +public class Discovery : Job, IDiscoveryJobExtension { ILogger _logger = LogHandler.GetClassLogger(); - public JobResult ProcessJob(DiscoveryJobConfiguration config, SubmitDiscoveryUpdate cb) - { - _logger.LogDebug("Beginning F5 Distributed Cloud Discovery Job"); - - var result = new JobResult - { - Result = OrchestratorJobStatusJobResult.Failure, - JobHistoryId = config.JobHistoryId - }; + public JobResult ProcessJob(DiscoveryJobConfiguration config, SubmitDiscoveryUpdate cb) + { + _logger.LogDebug($"Begin {config.Capability} for job id {config.JobId}..."); + _logger.LogDebug($"Server: {config.ClientMachine}"); - try - { - F5Client = new F5WafClient(config.ClientMachine, config.ServerPassword); - } catch (Exception ex) - { - _logger.LogError(ex, $"Could not connect to F5 Client" + ex.Message); - return result; - } - - List namespaces; - - try - { - namespaces = F5Client.DiscoverNamespacesforTlsStoreType(); - _logger.LogDebug($"Found {namespaces.Count()} namespaces in {config.ClientMachine}"); - } - catch (Exception ex) - { - _logger.LogError(ex, $"Error getting F5 namespaces from {config.ClientMachine}:\n" + ex.Message); - result.FailureMessage = $"Error getting F5 namespaces from {config.ClientMachine}:\n" + ex.Message; - return result; - } - - cb.Invoke(namespaces); + List namespaces; - result.Result = OrchestratorJobStatusJobResult.Success; - return result; + try + { + F5Client = new F5WafClient(config.ClientMachine, config.ServerPassword); + + namespaces = F5Client.DiscoverNamespacesforStoreType("tls-"); + _logger.LogDebug($"Found {namespaces.Count()} namespaces in {config.ClientMachine}"); + } + catch (Exception ex) + { + _logger.LogError($"Exception for {config.Capability}: {F5WAFException.FlattenExceptionMessages(ex, string.Empty)} for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Failure, JobHistoryId = config.JobHistoryId, FailureMessage = F5WAFException.FlattenExceptionMessages(ex, $"Server {config.ClientMachine}:") }; } + + cb.Invoke(namespaces); + + _logger.LogDebug($"...End {config.Capability} job for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Success, JobHistoryId = config.JobHistoryId }; + } } \ No newline at end of file diff --git a/F5WafOrchestrator/TLS/Inventory.cs b/F5WafOrchestrator/TLS/Inventory.cs index c1c0eeb..d75c47c 100644 --- a/F5WafOrchestrator/TLS/Inventory.cs +++ b/F5WafOrchestrator/TLS/Inventory.cs @@ -1,4 +1,4 @@ -// Copyright 2023 Keyfactor +// Copyright 2024 Keyfactor // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,63 +17,62 @@ using Keyfactor.Orchestrators.Common.Enums; using Keyfactor.Orchestrators.Extensions; using Microsoft.Extensions.Logging; +using System.Text.RegularExpressions; namespace Keyfactor.Extensions.Orchestrator.F5WafOrchestrator.TLS; -[Job("Inventory")] -public class Inventory : Job, IInventoryJobExtension +public class Inventory : Job, IInventoryJobExtension { private readonly ILogger _logger = LogHandler.GetClassLogger(); public JobResult ProcessJob(InventoryJobConfiguration config, SubmitInventoryUpdate cb) { - _logger.LogDebug("Beginning F5 Distributed Cloud Inventory Job"); - - var result = new JobResult - { - Result = OrchestratorJobStatusJobResult.Failure, - JobHistoryId = config.JobHistoryId - }; - - try - { - F5Client = new F5WafClient(config.CertificateStoreDetails.ClientMachine, config.ServerPassword); - } catch (Exception ex) - { - _logger.LogError(ex, $"Could not connect to F5 Client" + ex.Message); - return result; - } + _logger.LogDebug($"Begin {config.Capability} for job id {config.JobId}..."); + _logger.LogDebug($"Server: {config.CertificateStoreDetails.ClientMachine}"); + _logger.LogDebug($"Store Path: {config.CertificateStoreDetails.StorePath}"); List inventoryItems; - string storePath = config.CertificateStoreDetails.StorePath; + try { - // check if the string starts with "ca-" and remove it if present + F5Client = new F5WafClient(config.CertificateStoreDetails.ClientMachine, config.ServerPassword); + + string storePath = config.CertificateStoreDetails.StorePath; + + // check if the string starts with "tls-" and remove it if present. This may occur + // if store was created in Command via a Discovery job if (config.CertificateStoreDetails.StorePath.StartsWith("tls-")) { - storePath = config.CertificateStoreDetails.StorePath.Substring(4); // Skip the first 3 characters ("ca-") + storePath = config.CertificateStoreDetails.StorePath.Substring(4); // Skip the first 4 characters ("tls-") } var (names, certs) = F5Client.TlsCertificateRetrievalProcess(storePath); inventoryItems = certs.Zip(names, (certificate, name) => new CurrentInventoryItem { Alias = name, - Certificates = new List { certificate }, - PrivateKeyEntry = false, - UseChainLevel = false + Certificates = Regex.Split(certificate, @"(?=-----BEGIN)").Where(p => p != string.Empty), + PrivateKeyEntry = true, + UseChainLevel = true }).ToList(); _logger.LogDebug($"Found {inventoryItems.Count} certificates in namespace {storePath}"); } catch (Exception ex) { - _logger.LogError(ex, $"Error getting F5 Certificate from namespace {storePath}:\n" + ex.Message); - result.FailureMessage = $"Error getting F5 Certificates from namespace {storePath}:\n" + ex.Message; - return result; + _logger.LogError($"Exception for {config.Capability}: {F5WAFException.FlattenExceptionMessages(ex, string.Empty)} for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Failure, JobHistoryId = config.JobHistoryId, FailureMessage = F5WAFException.FlattenExceptionMessages(ex, $"Site {config.CertificateStoreDetails.StorePath} on server {config.CertificateStoreDetails.ClientMachine}:") }; } - - cb.Invoke(inventoryItems); - result.Result = OrchestratorJobStatusJobResult.Success; - return result; + try + { + cb.Invoke(inventoryItems); + _logger.LogDebug($"...End {config.Capability} job for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Success, JobHistoryId = config.JobHistoryId }; + } + catch (Exception ex) + { + string errorMessage = F5WAFException.FlattenExceptionMessages(ex, string.Empty); + _logger.LogError($"Exception returning certificates for {config.Capability}: {errorMessage} for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Failure, JobHistoryId = config.JobHistoryId, FailureMessage = F5WAFException.FlattenExceptionMessages(ex, $"Site {config.CertificateStoreDetails.StorePath} on server {config.CertificateStoreDetails.ClientMachine}:") }; + } } } \ No newline at end of file diff --git a/F5WafOrchestrator/TLS/Management.cs b/F5WafOrchestrator/TLS/Management.cs index c2af1f9..076df2b 100644 --- a/F5WafOrchestrator/TLS/Management.cs +++ b/F5WafOrchestrator/TLS/Management.cs @@ -1,4 +1,4 @@ -// Copyright 2023 Keyfactor +// Copyright 2024 Keyfactor // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,34 +20,22 @@ namespace Keyfactor.Extensions.Orchestrator.F5WafOrchestrator.TLS; -[Job("Management")] -public class Management : Job, IManagementJobExtension +public class Management : Job, IManagementJobExtension { ILogger _logger = LogHandler.GetClassLogger(); public JobResult ProcessJob(ManagementJobConfiguration config) { - _logger.LogDebug("Beginning F5 Cloud Management Job"); - - JobResult result = new JobResult - { - Result = OrchestratorJobStatusJobResult.Failure, - JobHistoryId = config.JobHistoryId - }; + _logger.LogDebug($"Begin {config.Capability} for job id {config.JobId}..."); + _logger.LogDebug($"Server: {config.CertificateStoreDetails.ClientMachine}"); + _logger.LogDebug($"Store Path: {config.CertificateStoreDetails.StorePath}"); try { F5Client = new F5WafClient(config.CertificateStoreDetails.ClientMachine, config.ServerPassword); - } - catch (Exception ex) - { - _logger.LogError(ex, $"Could not connect to F5 Client" + ex.Message); - return result; - } - try - { - // check if the string starts with "ca-" and remove it if present + // check if the string starts with "tls-" and remove it if present. This may occur + // if store was created in Command via a Discovery job if (config.CertificateStoreDetails.StorePath.StartsWith("tls-")) { config.CertificateStoreDetails.StorePath = config.CertificateStoreDetails.StorePath.Substring(4); @@ -56,40 +44,32 @@ public JobResult ProcessJob(ManagementJobConfiguration config) switch (config.OperationType) { case CertStoreOperationType.Add: - _logger.LogDebug("Adding certificate to F5 Cloud"); - - PerformTlsCertAddition(config, result); - - _logger.LogDebug("Add operation complete."); - - result.Result = OrchestratorJobStatusJobResult.Success; + _logger.LogDebug($"BEGIN add Operation for {config.CertificateStoreDetails.StorePath} on {config.CertificateStoreDetails.ClientMachine}."); + PerformTlsCertAddition(config); + _logger.LogDebug($"END Add Operation for {config.CertificateStoreDetails.StorePath} on {config.CertificateStoreDetails.ClientMachine}."); break; case CertStoreOperationType.Remove: - _logger.LogDebug("Removing certificate from F5 Cloud"); - - PerformTlsCertRemove(config, result); - - _logger.LogDebug("Remove operation complete."); - - result.Result = OrchestratorJobStatusJobResult.Success; + _logger.LogDebug($"BEGIN Delete Operation for {config.CertificateStoreDetails.StorePath} on {config.CertificateStoreDetails.ClientMachine}."); + PerformTlsCertRemove(config); + _logger.LogDebug($"END Delete Operation for {config.CertificateStoreDetails.StorePath} on {config.CertificateStoreDetails.ClientMachine}."); break; default: - _logger.LogDebug("Invalid management operation type: {0}", config.OperationType); - throw new ArgumentOutOfRangeException(); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Failure, JobHistoryId = config.JobHistoryId, FailureMessage = $"Site {config.CertificateStoreDetails.StorePath} on server {config.CertificateStoreDetails.ClientMachine}: Unsupported operation: {config.OperationType.ToString()}" }; } } catch (Exception ex) { - _logger.LogError(ex, "Error processing job:\n {0}", ex.Message); - result.FailureMessage = ex.Message; - return result; + _logger.LogError($"Exception for {config.Capability}: {F5WAFException.FlattenExceptionMessages(ex, string.Empty)} for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Failure, JobHistoryId = config.JobHistoryId, FailureMessage = F5WAFException.FlattenExceptionMessages(ex, $"Site {config.CertificateStoreDetails.StorePath} on server {config.CertificateStoreDetails.ClientMachine}:") }; } - return result; + _logger.LogDebug($"...End {config.Capability} job for job id {config.JobId}"); + return new JobResult() { Result = OrchestratorJobStatusJobResult.Success, JobHistoryId = config.JobHistoryId }; } - private void PerformTlsCertRemove(ManagementJobConfiguration config, JobResult result) + private void PerformTlsCertRemove(ManagementJobConfiguration config) { + _logger.MethodEntry(LogLevel.Debug); if (F5Client.JobCertIsAttachedToHttpLoadBalancer(config.CertificateStoreDetails.StorePath, config.JobCertificate.Alias)) @@ -98,44 +78,37 @@ private void PerformTlsCertRemove(ManagementJobConfiguration config, JobResult r "The job cert is bound to an http load balancer. Must unbind before performing management job."); } - F5Client.RemoveTlsCertificate(config.CertificateStoreDetails.StorePath, config.JobCertificate.Alias); + F5Client.RemoveCaOrTlsCertificate(config.CertificateStoreDetails.StorePath, config.JobCertificate.Alias, true); + + _logger.MethodExit(LogLevel.Debug); } - private void PerformTlsCertAddition(ManagementJobConfiguration config, JobResult result) + + private void PerformTlsCertAddition(ManagementJobConfiguration config) { - // ensure that the certificate is in PKCS#12 format - if (string.IsNullOrWhiteSpace(config.JobCertificate.PrivateKeyPassword)) - { - throw new Exception("Certificate must be in PKCS#12 format."); - } + _logger.MethodEntry(LogLevel.Debug); - // ensure that an alias is provided - if (string.IsNullOrWhiteSpace(config.JobCertificate.Alias)) - { - throw new Exception("Certificate alias is required."); - } + bool certificateExists = F5Client.CertificateExistsInF5(config.CertificateStoreDetails.StorePath, config.JobCertificate.Alias, true); - if (F5Client.CertificateExistsInF5(config.CertificateStoreDetails.StorePath, config.JobCertificate.Alias) && - !config.Overwrite) + if (certificateExists && !config.Overwrite) { string message = $"Certificate with alias \"{config.JobCertificate.Alias}\" already exists in F5, and job was not configured to overwrite."; throw new Exception(message); } - F5WafClient.PostRoot reqBody = F5Client.FormatTlsCertificateRequest(config.JobCertificate); - if (F5Client.CertificateExistsInF5(config.CertificateStoreDetails.StorePath, - config.JobCertificate.Alias) && - config.Overwrite) + if (certificateExists && config.Overwrite) { _logger.LogDebug("Overwrite is enabled, replacing certificate in F5 called \"{0}\"", config.JobCertificate.Alias); - F5Client.ReplaceTlsCertificate(config.CertificateStoreDetails.StorePath, reqBody); + F5Client.ReplaceCaOrTlsCertificate(config.CertificateStoreDetails.StorePath, reqBody, null, true); } else { _logger.LogDebug("Adding certificate to F5 Cloud"); - F5Client.AddTlsCertificate(config.CertificateStoreDetails.StorePath, reqBody); + F5Client.AddCaOrTlsCertificate(config.CertificateStoreDetails.StorePath, reqBody, null, true); } + + _logger.MethodExit(LogLevel.Debug); } } diff --git a/Images/image1.gif b/Images/image1.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f4576d888dfc94bd17ac517ddd02600fb23507a GIT binary patch literal 207832 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�rgokyPIahq=^9Q3|4bOs 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 z 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 literal 0 HcmV?d00001 diff --git a/Images/image2.gif b/Images/image2.gif new file mode 100644 index 0000000000000000000000000000000000000000..af7d91d01033e6d640bf12aef2913c6712f4a8df GIT binary patch literal 18194 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 literal 0 HcmV?d00001 diff --git a/Images/image3.gif b/Images/image3.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac8fe56e134a357359180f3857cb3a5d3b90a4f7 GIT binary patch literal 78184 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 XriO6pAX(5xA%h|{sY)$RKmY(cyU)o; literal 0 HcmV?d00001 diff --git a/Images/image4.gif b/Images/image4.gif new file mode 100644 index 0000000000000000000000000000000000000000..ba3227d59a83e85853198b465e80adb6032bc4fe GIT binary patch literal 24925 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
    8c{MUGqYjI3XK}1%hq9}rmU7!jYuO& zk;6{O%K%;FgmL*0?N}1K1O=usBa4bp$cRBBl?;~ygHs7DBRTo`YfKyrjec8=iM5kK)3YKIF=sI1tvN*b?FLomr!-CT~ znm%!Bl^Tyy*fO{UR_THn15dha=jE7FESw**n*QILkO?cg3LIYPY=gq}6LjsSI zIv7=F=>%A6*+?|l2PcIF>y@e^%FBW!D;&D(Ewe#YI;V-8$4E3+QQhosj7Peo{~n4} zP6-lRc=g$#u82y&Y!thGqa-fkX;x5m7f`hV$$4h8S!Z3Xf}o~FHugxCD}3kPUU|tU z-8MeiTc^x^q%nxF&wA4pnr9KH+S&+FW_`(vyX=>hy;6lm&XSW_N0P&tDr9v4McHK>>`nt7=YY`* z$;$#b9UO|UI_f)A2Cev63Lt>*}CU$^UAQS{?Lq6Yv5XO_%oTr6*mGiag-Z^twcJ?ROoZ4 z8r^oCxpc&QUM0_gC=D6q!p(;b%v0ewTrP?}md4&((P>iL;4w+}irEG7qmZSQIH&WY z-$P`GLda%`y{xU2t+9*w2|~;or_Asajiy^D+TZ9gf(#n*Q*6~_3ysHxYh6;1LX?=Z z$O^lyYUpc_?2rZ`NE?s0VQCJv#RBfR7L&dI(Z#BYGF{Oc20dcD=& zlcnz);|IStzG-gni5q6(6@PoZukP_Mt(@dvzc^?7J@I}|JWNWrImWF%^}J*K;wZ29 zy_>Ulqa%InSigM6dlK`07v0}eKm6Mto)daUeC146{mN6%aI4!q@^(MEH~DRL#MgV{ zhxdF>j(&K|xBc{f=Qq;%J@T=Wp6v@aIM74h@1FO2?iLsEeR$wAYRqbX``quo_rDMR z@QZ)^HB5C8aszrk!&nEdaL|NQHJ|NQU2|Njqw0Vse2$W1~u z6p1!~38;Vz$bb##fDZ_P5eR`?u_nDCfftB@8K{99$blW`f$HZlOfw@NNP;D3f+vWA LDX4Tm0RSifzyJUUKmY&& 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 literal 0 HcmV?d00001 diff --git a/Images/image6.gif b/Images/image6.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b8c047332a06fbfb0d2fcd23ac5249219b80e4a GIT binary patch literal 10923 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 6081edf..e737332 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ -# f5-waf-orchestrator -The F5 WAF Orchestrator is an extension to the Keyfactor Universal Orchestrator. It Integrates with the Multi-Cloud App Connect, which is F5 Distributed Cloud's service for connecting apps across clouds, edge and on premises using load balancers. The purpose of the F5 WAF orchestrator is to manage the TLS certificates that are bound to the load balancers. This also includes managing the intermediate certificate chains and root CAs of these TLS certificates. The orchestrator facilitates the inventory, addition, removal, and discovery of certificates intended for use with load balancers. +# F5 WAF -#### Integration status: Prototype +The F5 WAF Orchestrator is an extension to the Keyfactor Universal Orchestrator. It Integrates with Multi-Cloud App Connect, which is F5 Distributed Cloud's service for connecting apps across clouds and within on premise installationss using load balancers. The purpose of the F5 WAF orchestrator is to manage the TLS and CA Root certificates. The TLS certificates may be bound to load balancers. The orchestrator facilitates the inventory, addition, renewal, and removal of these certificates as well as the discovery of namespaces (certificate stores) within the F5 Multi-Cloud App Connect instance. + +#### Integration status: Production - Ready for use in production environments. ## About the Keyfactor Universal Orchestrator Extension @@ -12,9 +13,9 @@ The Universal Orchestrator is part of the Keyfactor software distribution and is The Universal Orchestrator is the successor to the Windows Orchestrator. This Orchestrator Extension plugin only works with the Universal Orchestrator and does not work with the Windows Orchestrator. -## Support for F5 WAF Orchestrator +## Support for F5 WAF -The F5 WAF Orchestrator is open source and supported on best effort level for this tool/library/client. This means customers can report Bugs, Feature Requests, Documentation amendment or questions as well as requests for customer information required for setup that needs Keyfactor access to obtain. Such requests do not follow normal SLA commitments for response or resolution. If you have a support issue, please open a support ticket via the Keyfactor Support Portal at https://support.keyfactor.com/. +F5 WAF 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. @@ -23,10 +24,11 @@ The F5 WAF Orchestrator is open source and supported on best effort level for th --- -## Keyfactor Version Supported -The minimum version of the Keyfactor Universal Orchestrator Framework needed to run this version of the extension is 10.2. +## Keyfactor Version Supported + +The minimum version of the Keyfactor Universal Orchestrator Framework needed to run this version of the extension is 10.4.1 ## Platform Specific Notes The Keyfactor Universal Orchestrator may be installed on either Windows or Linux based platforms. The certificate operations supported by a capability may vary based what platform the capability is installed on. The table below indicates what capabilities are supported based on which platform the encompassing Universal Orchestrator is running. @@ -36,162 +38,240 @@ The Keyfactor Universal Orchestrator may be installed on either Windows or Linux |Supports Management Remove|✓ |✓ | |Supports Create Store| | | |Supports Discovery|✓ |✓ | -|Supports Renrollment| | | +|Supports Reenrollment| | | |Supports Inventory|✓ |✓ | ---- -## Overview -The F5 WAF Orchestrator extension remotely manages certificates uploaded to F5 Distributed Cloud Multi-App Connect, which is the F5 platform that manages WAF services. Once in Multi-App Connect, certificates can be associated to configured HTTP load balancers. +## PAM Integration + +This orchestrator extension has the ability to connect to a variety of supported PAM providers to allow for the retrieval of various client hosted secrets right from the orchestrator server itself. This eliminates the need to set up the PAM integration on Keyfactor Command which may be in an environment that the client does not want to have access to their PAM provider. + +The secrets that this orchestrator extension supports for use with a PAM Provider are: + +|Name|Description| +|----|-----------| +|ServerUsername|The user id that will be used to authenticate to the F5 WAF API endpoints| +|ServerPassword|The API token that will be used to authenticate to the F5 WAF API endpoints| + + +It is not necessary to use a PAM Provider for all of the secrets available above. If a PAM Provider should not be used, simply enter in the actual value to be used, as normal. + +If a PAM Provider will be used for one of the fields above, start by referencing the [Keyfactor Integration Catalog](https://keyfactor.github.io/integrations-catalog/content/pam). The GitHub repo for the PAM Provider to be used contains important information such as the format of the `json` needed. What follows is an example but does not reflect the `json` values for all PAM Providers as they have different "instance" and "initialization" parameter names and values. + +
    General PAM Provider Configuration +

    + + + +### Example PAM Provider Setup + +To use a PAM Provider to resolve a field, in this example the __Server Password__ will be resolved by the `Hashicorp-Vault` provider, first install the PAM Provider extension from the [Keyfactor Integration Catalog](https://keyfactor.github.io/integrations-catalog/content/pam) on the Universal Orchestrator. + +Next, complete configuration of the PAM Provider on the UO by editing the `manifest.json` of the __PAM Provider__ (e.g. located at extensions/Hashicorp-Vault/manifest.json). The "initialization" parameters need to be entered here: + +~~~ json + "Keyfactor:PAMProviders:Hashicorp-Vault:InitializationInfo": { + "Host": "http://127.0.0.1:8200", + "Path": "v1/secret/data", + "Token": "xxxxxx" + } +~~~ + +After these values are entered, the Orchestrator needs to be restarted to pick up the configuration. Now the PAM Provider can be used on other Orchestrator Extensions. + +### Use the PAM Provider +With the PAM Provider configured as an extenion on the UO, a `json` object can be passed instead of an actual value to resolve the field with a PAM Provider. Consult the [Keyfactor Integration Catalog](https://keyfactor.github.io/integrations-catalog/content/pam) for the specific format of the `json` object. + +To have the __Server Password__ field resolved by the `Hashicorp-Vault` provider, the corresponding `json` object from the `Hashicorp-Vault` extension needs to be copied and filed in with the correct information: + +~~~ json +{"Secret":"my-kv-secret","Key":"myServerPassword"} +~~~ -## Use Cases +This text would be entered in as the value for the __Server Password__, instead of entering in the actual password. The Orchestrator will attempt to use the PAM Provider to retrieve the __Server Password__. If PAM should not be used, just directly enter in the value for the field. +

    +
    -The F5 Orchestrator supports two different types of certificates stores with the capabilities for each below: -- Root CAs (f5WafCa) - - Discovery - - Inventory - - Management (Add and Remove) -- TLS Certificates (f5WafTls) - - Discovery - - Inventory - - Management (Add and Remove) -## F5 WAF Orchestrator Installation -Assuming the Keyfactor Universal Orchestrator Service is already installed... +--- + -1. Stop the Keyfactor Universal Orchestrator Service. -3. Clone the F5 WAF Orchestrator from GitHub on your local machine. -4. Navigate to the F5 WAF Orchestrator home directory and build the solution. Upon building the solution, the F5 WAF Orchestrator extension will automatically be added to the local Keyfactor Universal Orchestrator. -5. Start the Keyfactor Universal Orchestrator Service. +## Overview +The F5 WAF Orchestrator extension remotely manages TLS and CA Root certificates uploaded to F5 Distributed Multi-Cloud App Connect, which is the F5 platform that manages WAF services. Certificates bound to Http Load Balancers within Multi-Cloud App Connect can be renewed/replaced, but they cannot be removed. Certificate store types f5WafTls and f5WafCa are used to manage stores containing TLS and CA Root certificates, respectively. -## F5 WAF Orchestrator Configuration +
    +f5WafTls -Below are the steps for manually configuring the F5 WAF Orchestrator in Keyfactor Command, assuming the Keyfactor Universal Orchestrator is installed and has the F5 WAF Orchestrator extension: +The f5WafTls certificate store type is used to manage F5 Distributed Multi-Cloud App Connect TLS certificates. -1. Create F5WafTls and F5WafCa Certificate Store Types for the F5 WAF Orchestrator extension. -2. Create certificate stores in Keyfactor Command for the F5WafTls and F5WafCa certificate store types. +Use cases supported: +1. Discovery of TLS stores. Discovery for F5 WAF returns any discoverable namespaces in the F5 WAF instance. +2. Inventory of a TLS store. All TLS certificates, bound or unbound, within a namespace will be returned to Keyfactor Command. +3. Management-Add. Add a new certificate or renew an existing one. Renew will work for both bound and unbound certificates. All existing binding will remain in place, bound to the same alias with the newly replaced/renewed certificate. +4. Management-Delete. Remove an existing certificate. Will only work for unbound certificates. -View the Certificate Store Type and certificate store configuration instructions for the F5 WAF Orchestrator below. +
    -## F5WafTls Certificate Store Type Configuration +
    +f5WafCa -The `F5WafTls` Certificate Store Type can be created manually by following the below steps: +The f5WafCa certificate store type is used to manage F5 Distributed Multi-Cloud App Connect CA Root certificates. -Create a store type called `F5WafTls` with the attributes in the tables below: +Use cases supported: +1. Discovery of TLS stores. Discovery for F5 WAF returns any discoverable namespaces in the F5 WAF instance. +2. Inventory of a TLS store. All CA Root certificates within a namespace will be returned to Keyfactor Command. +3. Management-Add. Add a new certificate or renew an existing one. +4. Management-Delete. Remove an existing certificate. Please note, for CA Root certicates, deleting an existing certificate will replace ALL instances of the same certificate and not only the one represented by the intended alias. This is an F5 WAF feature that the integration has no control over. -### Basic Tab -| Attribute | Value | Description | -| --------- |----------| ----- | -| Name | F5WafTls | Display name for the store type (may be customized) | -| Short Name | F5WafTls | Short display name for the store type | -| Capability | | Store type name orchestrator will register with. Check the box to allow entry of value | -| Supported Job Types (check the box for each) | Inventory, Add, Discovery, Remove | Job types the extension supports | -| Needs Server | ✓ | Determines if a target server name is required when creating store | -| Blueprint Allowed | | Determines if store type may be included in an Orchestrator blueprint | -| Uses PowerShell | | Determines if underlying implementation is PowerShell | -| Requires Store Password | | Determines if a store password is required when configuring an individual store. | -| Supports Entry Password | | Determines if an individual entry within a store can have a password. | +
    -The Basic tab should look like this: +## F5 WAF Orchestrator Extension Installation -![Insert Image](../.github/images/AzureApp-basic-store-type-dialog.png) +1. Refer to the [Creating Certificate Store Types](#creating-certificate-store-types) section to create the certificate store types you wish to manage. +2. Stop the Keyfactor Universal Orchestrator Service on the server you plan to install this extension to run on. +3. In the Keyfactor Orchestrator installation folder (by convention usually C:\Program Files\Keyfactor\Keyfactor Orchestrator for a Windows install or /opt/keyfactor/orchestrator/ for a Linux install), find the "Extensions" folder. Underneath that, create a new folder named "F5Waf". You may choose to use a different name if you wish. +4. Download the latest version of the F5 WAF orchestrator extension from [GitHub](https://github.com/Keyfactor/f5-waf-orchestrator). Click on the "Latest" release link on the right hand side of the main page and download the first zip file. +5. Copy the contents of the download installation zip file to the folder created in step 3. +6. (Optional) If you decide to create one or more certificate store types with short names different than the suggested values, edit the manifest.json file in the folder you created in step 3, and modify each "ShortName" in each "Certstores.{ShortName}.{Operation}" line with the ShortName you used to create the respective certificate store type. +7. Start the Keyfactor Universal Orchestrator Service. -### Advanced Tab -| Attribute | Value | Description | -| --------- |----------| ----- | -| Supports Custom Alias | Required | Determines if an individual entry within a store can have a custom Alias. | -| Private Key Handling | Required | This determines if Keyfactor can send the private key associated with a certificate to the store. | -| PFX Password Style | Default | 'Default' - PFX password is randomly generated, 'Custom' - PFX password may be specified when the enrollment job is created (Requires the Allow Custom Password application setting to be enabled.) | +## Creating Certificate Store Types -The Advanced tab should look like this: +Below are the two certificate store types that the F5 WAF Orchestator Extension manages. To create a new Certificate Store Type in Keyfactor Command, first click on settings (the gear icon on the top right) => Certificate Store Types => Add. Next, follow the instructions under each store type you wish to set up. -![Insert Image](../.github/images/AzureApp-advanced-store-type-dialog.png) +
    +f5WafTls - TLS certificates in a namespace -### Custom Fields Tab -Custom fields operate at the certificate store level and are used to control how the orchestrator connects to the remote target server containing the certificate store to be managed. The following custom fields should be added to the store type: +- Basic Tab: -| Name | Display Name | Type | Default Value/Options | Required | Description | -| ---- | ------------ | ---- | --------------------- | -------- |-------------------| -| ServerUsername | Server Username | Secret | | ✓ | The username used to log in to the F5 Distributed Cloud instance (typically an email). | -| ServerPassword | Server Password | Secret | | ✓ | The API Token configured in the F5 Distributed Cloud instance's Account Settings. | -| ServerUseSsl | Use SSL | Bool | true | ✓ | Specifies whether SSL should be used for communication with the server. Set to 'true' to enable SSL, and 'false' to disable it. | + - **Name** – Required. The display name you wish to use for the new Certificate Store Type. + - **Short Name** – Required. Suggested value - **f5WafTls**. If you choose to use a different value you must make the corresponding modification to the manifest.json file. See [F5 WAF Orchestrator Extension Installation](#f5-waf-orchestrator-extension-installation), step 6 above. + - **Custom Capability** - Unchecked + - **Supported Job Types** - Inventory, Add, Remove, and Discovery should all be checked. + - **Needs Server** - Checked + - **Blueprint Allowed** - Checked if you wish to make use of blueprinting. Please refer to the Keyfactor Command Reference Guide for more details on this feature. + - **Uses PowerShell** - Unchecked + - **Requires Store Password** - Unchecked + - **Supports Entry Password** - Unchecked +- Advanced Tab: -The Custom Fields tab should look like this: + - **Store Path Type** - Freeform + - **Supports Custom Alias** - Required. + - **Private Key Handling** - Required. + - **PFX Password Style** - Default -![Insert Image](../.github/images/AzureApp-custom-fields-store-type-dialog.png) +- Custom Fields Tab: -## F5WafCa Certificate Store Type Configuration + - no additional custom fields -The `F5WafCa` Certificate Store Type can be created manually by following the below steps: +- Entry Parameters Tab: -Create a store type called `F5WafCa` with the attributes in the tables below: + - no additional entry parameters -### Basic Tab -| Attribute | Value | Description | -| --------- |----------| ----- | -| Name | F5WafTls | Display name for the store type (may be customized) | -| Short Name | F5WafTls | Short display name for the store type | -| Capability | | Store type name orchestrator will register with. Check the box to allow entry of value | -| Supported Job Types (check the box for each) | Inventory, Add, Discovery, Remove | Job types the extension supports | -| Needs Server | ✓ | Determines if a target server name is required when creating store | -| Blueprint Allowed | | Determines if store type may be included in an Orchestrator blueprint | -| Uses PowerShell | | Determines if underlying implementation is PowerShell | -| Requires Store Password | | Determines if a store password is required when configuring an individual store. | -| Supports Entry Password | | Determines if an individual entry within a store can have a password. | +
    +
    +f5WafCa - CA Root certificates in a namespace -The Basic tab should look like this: +- Basic Tab: -![Insert Image](../.github/images/AzureApp-basic-store-type-dialog.png) + - **Name** – Required. The display name you wish to use for the new Certificate Store Type. + - **Short Name** – Required. Suggested value - **f5WafCa**. If you choose to use a different value you must make the corresponding modification to the manifest.json file. See [F5 WAF Orchestrator Extension Installation](#f5-waf-orchestrator-extension-installation), step 6 above. + - **Custom Capability** - Unchecked + - **Supported Job Types** - Inventory, Add, Remove, and Discovery should all be checked. + - **Needs Server** - Checked + - **Blueprint Allowed** - Checked if you wish to make use of blueprinting. Please refer to the Keyfactor Command Reference Guide for more details on this feature. + - **Uses PowerShell** - Unchecked + - **Requires Store Password** - Unchecked + - **Supports Entry Password** - Unchecked -### Advanced Tab -| Attribute | Value | Description | -| --------- |-----------| ----- | -| Supports Custom Alias | Required | Determines if an individual entry within a store can have a custom Alias. | -| Private Key Handling | Forbidden | This determines if Keyfactor can send the private key associated with a certificate to the store. | -| PFX Password Style | Default | 'Default' - PFX password is randomly generated, 'Custom' - PFX password may be specified when the enrollment job is created (Requires the Allow Custom Password application setting to be enabled.) | +- Advanced Tab: + - **Store Path Type** - Freeform + - **Supports Custom Alias** - Required. + - **Private Key Handling** - Forbidden. + - **PFX Password Style** - Default -The Advanced tab should look like this: +- Custom Fields Tab: -![Insert Image](../.github/images/AzureApp-advanced-store-type-dialog.png) + - no additional custom fields -### Custom Fields Tab -Custom fields operate at the certificate store level and are used to control how the orchestrator connects to the remote target server containing the certificate store to be managed. The following custom fields should be added to the store type: +- Entry Parameters Tab: -| Name | Display Name | Type | Default Value/Options | Required | Description | -| ---- | ------------ | ---- | --------------------- | -------- |-------------------| -| ServerUsername | Server Username | Secret | | ✓ | The username used to log in to the F5 Distributed Cloud instance (typically an email). | -| ServerPassword | Server Password | Secret | | ✓ | The API Token configured in the F5 Distributed Cloud instance's Account Settings. | -| ServerUseSsl | Use SSL | Bool | true | ✓ | Specifies whether SSL should be used for communication with the server. Set to 'true' to enable SSL, and 'false' to disable it. | + - no additional entry parameters +
    -The Custom Fields tab should look like this: -![Insert Image](../.github/images/AzureApp-custom-fields-store-type-dialog.png) +## Creating Certificate Stores and Scheduling Discovery Jobs -## F5WafTls and F5WafCa Certificate Store Configurations +When creating new certificate stores or scheduling discovery jobs in Keyfactor Command, there are a few fields that are important to highlight here: -After creating the `F5WafTls` and `F5WafCa` Certificate Store Types and installing the F5 WAF Orchestrator extension, you can create new [Certificate Stores](https://software.keyfactor.com/Core-OnPrem/Current/Content/ReferenceGuide/Certificate%20Stores.htm?Highlight=certificate%20store) to manage certificates in the remote platform. +
    +Certificate Stores -The following table describes the required and optional fields for the `F5WafTls` and `F5WafCa` certificate store types. +The following table describes the required and optional fields for the `f5WafTls` and `f5WafCa` certificate store types when creating a certificate store. -In Keyfactor Command, navigate to Certificate Stores from the Locations Menu. Click the Add button to create a new Certificate Store using the attributes in the table above. +In Keyfactor Command, navigate to Certificate Stores from the Locations Menu. Click the Add button to create a new Certificate Store. | Attribute | Description | | --------- |------------------------------------------------------------------------------------------------------------------------------------------------| -| Category | Select either F5WafTls or F5WafCa depending on whether you want to manage TLS certificates or Root CAs. | +| Category | Select either f5WafTls or f5WafCa depending on whether you want to manage TLS certificates or Root CA certificates. | | Container | Optional container to associate certificate store with. | -| Client Machine | The URL for the F5 Distributed Cloud instance (typically ending in '.console.ves.volterra.io'. | +| Client Machine | The URL for the F5 Distributed Cloud instance (typically ending in '.console.ves.volterra.io'). | | Store Path | The Multi-Cloud App Connect namespace containing the certificates you wish to manage. | -| Orchestrator | Select an approved orchestrator capable of managing F5 WAF certificates. Specifically, one with the F5WafCa and F5WafTls capabilities. | +| Orchestrator | Select an approved orchestrator capable of managing F5 WAF certificates. Specifically, one with the f5WafTls and f5WafCa capabilities. | +| Server Username | The username used to log in to the F5 Distributed Cloud instance (typically an email). | +| Server Password | The API Token configured in the F5 Distributed Cloud instance's Account Settings. Please see [Creating an F5 WAF API Token](#creating-an-f5-waf-api-token) for more details on creating this token. | +| Use SSL | Not used for this integration, so either setting is fine. | + +
    + +
    +Discovery Jobs + +The following table describes the required and optional fields to schedule a Discovery job for the `f5WafTls` and `f5WafCa` certificate store types. + +In Keyfactor Command, navigate to Certificate Stores from the Locations Menu and then click on the Discover tab. + +| Attribute | Description | +| --------- |------------------------------------------------------------------------------------------------------------------------------------------------| +| Category | Select either F5WafTls or F5WafCa depending on whether you want to return namespaces for TLS certificates or CA Root certificates. | +| Orchestrator | Select an approved orchestrator capable of managing F5 WAF certificates. Specifically, one with the f5WafTls and f5WafCa capabilities. | +| Schedule | Enter the schedule for when you want the job to run | +| Client Machine | The URL for the F5 Distributed Cloud instance (typically ending in '.console.ves.volterra.io'. | | Server Username | The username used to log in to the F5 Distributed Cloud instance (typically an email). | -| Server Password | The API Token configured in the F5 Distributed Cloud instance's Account Settings. | -| Use SSL | Specifies whether SSL should be used for communication with the server. Set to 'true' to enable SSL, and 'false' to disable it. | +| Server Password | The API Token configured in the F5 Distributed Cloud instance's Account Settings. Please see [Creating an F5 WAF API Token](#creating-an-f5-waf-api-token) for more details on creating this token. | +| Directories to Search | Not used for this integration. Leave Blank. | +| Directories to ignore | Not used for this integration. Leave Blank. | +| Extensions | Not used for this integration. Leave Blank. | +| File name patterns to match | Not used for this integration. Leave Blank. | +| Follow SymLinks | Not used for this integration. Leave Unchecked. | +| Follow SymLinks | Not used for this integration. Leave Unchecked. | +| Use SSL? | Not used for this integration. Leave Unchecked. | + +Discovery jobs will return all known namespaces for this F5 WAF instance. Please note that because Keyfactor Command has a restriction on multiple certificate stores having the same Client Machine and Store Path, certificate stores for f5WafTls will return stores with a "tls-" prefixed to the beginning of the store path (namespace); while f5WafCA stores will have "ca-" prefixed. Any jobs that run for stores with these prefixes will have these prefixes removed before calling any F5 WAF APIs. What this means is a store path (namespace) for an f5WafTls store of "tls-namespace1" will be the same as one labeled "namespace1". + +
    + + +## Creating an F5 WAF API Token + +In lieu of providing a server password when setting up an F5 WAF certificate store, F5 Multi-Cloud App Connect uses API tokens combined with the user id to authenticate when calling APIs. API Tokens can be created through the F5 Distributed Cloud Console after logging in with the ID you wish to use for the Keyfactor certificate store. Once logged in, select Multi-Cloud App Connect from the options under "Common services". Next, select Account Services from the pull down at the top right of the screen, and select "Account Settings". From there, click on "Credentials" on the left nav and "Add Credentials" on the subsequent screen. In the form shown, select "API Token" from the Credential Type dropdown, and enter the name of the credential and the expiration date. Please note that credentials can only be created for up to 90 day periods of time. After 90 days, a new API token will need to be generated and replaced in your F5 WAF certificate store(s). Clicking Generate will then show the value of the newly created API Token. Copy this and save to a safe place, as this will be the value you will enter in the Server Password field when setting up your certificate store. If you forget or lose this token value, there is no way to access it again in the F5 Distributed Cloud portal. You will need to create a new API Token. + +![](Images/image1.gif) +![](Images/image2.gif) +![](Images/image3.gif) +![](Images/image4.gif) +![](Images/image5.gif) +![](Images/image6.gif) + + +When creating cert store type manually, that store property names and entry parameter names are case sensitive + --- diff --git a/integration-manifest.json b/integration-manifest.json new file mode 100644 index 0000000..7cd4ebc --- /dev/null +++ b/integration-manifest.json @@ -0,0 +1,88 @@ +{ + "$schema": "https://keyfactor.github.io/integration-manifest-schema.json", + "integration_type": "orchestrator", + "name": "F5 WAF", + "status": "production", + "link_github": true, + "update_catalog": true, + "release_dir": "F5WafOrchestrator/bin/Release", + "support_level": "kf-supported", + "description": "The F5 WAF Orchestrator is an extension to the Keyfactor Universal Orchestrator. It Integrates with Multi-Cloud App Connect, which is F5 Distributed Cloud's service for connecting apps across clouds and within on premise installationss using load balancers. The purpose of the F5 WAF orchestrator is to manage the TLS and CA Root certificates. The TLS certificates may be bound to load balancers. The orchestrator facilitates the inventory, addition, renewal, and removal of these certificates as well as the discovery of namespaces (certificate stores) within the F5 Multi-Cloud App Connect instance.", + "about": { + "orchestrator": { + "UOFramework": "10.4.1", + "pam_support": true, + "keyfactor_platform_version": "9.10", + "win": { + "supportsCreateStore": false, + "supportsDiscovery": true, + "supportsManagementAdd": true, + "supportsManagementRemove": true, + "supportsReenrollment": false, + "supportsInventory": true, + "platformSupport": "Unused" + }, + "linux": { + "supportsCreateStore": false, + "supportsDiscovery": true, + "supportsManagementAdd": true, + "supportsManagementRemove": true, + "supportsReenrollment": false, + "supportsInventory": true, + "platformSupport": "Unused" + }, + "store_types": { + "f5WafTls": { + "Name": "F5 WAF TLS", + "ShortName": "f5WafTls", + "Capability": "f5WafTls", + "SupportedOperations": { + "Add": true, + "Create": false, + "Discovery": true, + "Enrollment": false, + "Remove": true + }, + "Properties": [], + "EntryParameters": [], + "PasswordOptions": { + "EntrySupported": false, + "StoreRequired": false, + "Style": "Default" + }, + "PrivateKeyAllowed": "Required", + "JobProperties": [], + "ServerRequired": true, + "PowerShell": false, + "BlueprintAllowed": true, + "CustomAliasAllowed": "Required" + }, + "f5WafCa": { + "Name": "F5 WAF CA", + "ShortName": "f5WafCa", + "Capability": "f5WafCa", + "SupportedOperations": { + "Add": true, + "Create": false, + "Discovery": true, + "Enrollment": false, + "Remove": true + }, + "Properties": [], + "EntryParameters": [], + "PasswordOptions": { + "EntrySupported": false, + "StoreRequired": false, + "Style": "Default" + }, + "PrivateKeyAllowed": "Forbidden", + "JobProperties": [], + "ServerRequired": true, + "PowerShell": false, + "BlueprintAllowed": true, + "CustomAliasAllowed": "Required" + } + } + } + } +} diff --git a/readme-src/readme-pam-support.md b/readme-src/readme-pam-support.md new file mode 100644 index 0000000..afa937b --- /dev/null +++ b/readme-src/readme-pam-support.md @@ -0,0 +1,5 @@ +|Name|Description| +|----|-----------| +|ServerUsername|The user id that will be used to authenticate to the F5 WAF API endpoints| +|ServerPassword|The API token that will be used to authenticate to the F5 WAF API endpoints| + diff --git a/readme_source.md b/readme_source.md new file mode 100644 index 0000000..bacb491 --- /dev/null +++ b/readme_source.md @@ -0,0 +1,173 @@ +## Overview +The F5 WAF Orchestrator extension remotely manages TLS and CA Root certificates uploaded to F5 Distributed Multi-Cloud App Connect, which is the F5 platform that manages WAF services. Certificates bound to Http Load Balancers within Multi-Cloud App Connect can be renewed/replaced, but they cannot be removed. Certificate store types f5WafTls and f5WafCa are used to manage stores containing TLS and CA Root certificates, respectively. + +
    +f5WafTls + +The f5WafTls certificate store type is used to manage F5 Distributed Multi-Cloud App Connect TLS certificates. + +Use cases supported: +1. Discovery of TLS stores. Discovery for F5 WAF returns any discoverable namespaces in the F5 WAF instance. +2. Inventory of a TLS store. All TLS certificates, bound or unbound, within a namespace will be returned to Keyfactor Command. +3. Management-Add. Add a new certificate or renew an existing one. Renew will work for both bound and unbound certificates. All existing binding will remain in place, bound to the same alias with the newly replaced/renewed certificate. +4. Management-Delete. Remove an existing certificate. Will only work for unbound certificates. + +
    + +
    +f5WafCa + +The f5WafCa certificate store type is used to manage F5 Distributed Multi-Cloud App Connect CA Root certificates. + +Use cases supported: +1. Discovery of TLS stores. Discovery for F5 WAF returns any discoverable namespaces in the F5 WAF instance. +2. Inventory of a TLS store. All CA Root certificates within a namespace will be returned to Keyfactor Command. +3. Management-Add. Add a new certificate or renew an existing one. +4. Management-Delete. Remove an existing certificate. Please note, for CA Root certicates, deleting an existing certificate will replace ALL instances of the same certificate and not only the one represented by the intended alias. This is an F5 WAF feature that the integration has no control over. + +
    + + +## F5 WAF Orchestrator Extension Installation + +1. Refer to the [Creating Certificate Store Types](#creating-certificate-store-types) section to create the certificate store types you wish to manage. +2. Stop the Keyfactor Universal Orchestrator Service on the server you plan to install this extension to run on. +3. In the Keyfactor Orchestrator installation folder (by convention usually C:\Program Files\Keyfactor\Keyfactor Orchestrator for a Windows install or /opt/keyfactor/orchestrator/ for a Linux install), find the "Extensions" folder. Underneath that, create a new folder named "F5Waf". You may choose to use a different name if you wish. +4. Download the latest version of the F5 WAF orchestrator extension from [GitHub](https://github.com/Keyfactor/f5-waf-orchestrator). Click on the "Latest" release link on the right hand side of the main page and download the first zip file. +5. Copy the contents of the download installation zip file to the folder created in step 3. +6. (Optional) If you decide to create one or more certificate store types with short names different than the suggested values, edit the manifest.json file in the folder you created in step 3, and modify each "ShortName" in each "Certstores.{ShortName}.{Operation}" line with the ShortName you used to create the respective certificate store type. +7. Start the Keyfactor Universal Orchestrator Service. + + +## Creating Certificate Store Types + +Below are the two certificate store types that the F5 WAF Orchestator Extension manages. To create a new Certificate Store Type in Keyfactor Command, first click on settings (the gear icon on the top right) => Certificate Store Types => Add. Next, follow the instructions under each store type you wish to set up. + +
    +f5WafTls - TLS certificates in a namespace + +- Basic Tab: + + - **Name** – Required. The display name you wish to use for the new Certificate Store Type. + - **Short Name** – Required. Suggested value - **f5WafTls**. If you choose to use a different value you must make the corresponding modification to the manifest.json file. See [F5 WAF Orchestrator Extension Installation](#f5-waf-orchestrator-extension-installation), step 6 above. + - **Custom Capability** - Unchecked + - **Supported Job Types** - Inventory, Add, Remove, and Discovery should all be checked. + - **Needs Server** - Checked + - **Blueprint Allowed** - Checked if you wish to make use of blueprinting. Please refer to the Keyfactor Command Reference Guide for more details on this feature. + - **Uses PowerShell** - Unchecked + - **Requires Store Password** - Unchecked + - **Supports Entry Password** - Unchecked + +- Advanced Tab: + + - **Store Path Type** - Freeform + - **Supports Custom Alias** - Required. + - **Private Key Handling** - Required. + - **PFX Password Style** - Default + +- Custom Fields Tab: + + - no additional custom fields + +- Entry Parameters Tab: + + - no additional entry parameters + +
    + +
    +f5WafCa - CA Root certificates in a namespace + +- Basic Tab: + + - **Name** – Required. The display name you wish to use for the new Certificate Store Type. + - **Short Name** – Required. Suggested value - **f5WafCa**. If you choose to use a different value you must make the corresponding modification to the manifest.json file. See [F5 WAF Orchestrator Extension Installation](#f5-waf-orchestrator-extension-installation), step 6 above. + - **Custom Capability** - Unchecked + - **Supported Job Types** - Inventory, Add, Remove, and Discovery should all be checked. + - **Needs Server** - Checked + - **Blueprint Allowed** - Checked if you wish to make use of blueprinting. Please refer to the Keyfactor Command Reference Guide for more details on this feature. + - **Uses PowerShell** - Unchecked + - **Requires Store Password** - Unchecked + - **Supports Entry Password** - Unchecked + +- Advanced Tab: + + - **Store Path Type** - Freeform + - **Supports Custom Alias** - Required. + - **Private Key Handling** - Forbidden. + - **PFX Password Style** - Default + +- Custom Fields Tab: + + - no additional custom fields + +- Entry Parameters Tab: + + - no additional entry parameters + +
    + + +## Creating Certificate Stores and Scheduling Discovery Jobs + +When creating new certificate stores or scheduling discovery jobs in Keyfactor Command, there are a few fields that are important to highlight here: + +
    +Certificate Stores + +The following table describes the required and optional fields for the `f5WafTls` and `f5WafCa` certificate store types when creating a certificate store. + +In Keyfactor Command, navigate to Certificate Stores from the Locations Menu. Click the Add button to create a new Certificate Store. + +| Attribute | Description | +| --------- |------------------------------------------------------------------------------------------------------------------------------------------------| +| Category | Select either f5WafTls or f5WafCa depending on whether you want to manage TLS certificates or Root CA certificates. | +| Container | Optional container to associate certificate store with. | +| Client Machine | The URL for the F5 Distributed Cloud instance (typically ending in '.console.ves.volterra.io'). | +| Store Path | The Multi-Cloud App Connect namespace containing the certificates you wish to manage. | +| Orchestrator | Select an approved orchestrator capable of managing F5 WAF certificates. Specifically, one with the f5WafTls and f5WafCa capabilities. | +| Server Username | The username used to log in to the F5 Distributed Cloud instance (typically an email). | +| Server Password | The API Token configured in the F5 Distributed Cloud instance's Account Settings. Please see [Creating an F5 WAF API Token](#creating-an-f5-waf-api-token) for more details on creating this token. | +| Use SSL | Not used for this integration, so either setting is fine. | + +
    + +
    +Discovery Jobs + +The following table describes the required and optional fields to schedule a Discovery job for the `f5WafTls` and `f5WafCa` certificate store types. + +In Keyfactor Command, navigate to Certificate Stores from the Locations Menu and then click on the Discover tab. + +| Attribute | Description | +| --------- |------------------------------------------------------------------------------------------------------------------------------------------------| +| Category | Select either F5WafTls or F5WafCa depending on whether you want to return namespaces for TLS certificates or CA Root certificates. | +| Orchestrator | Select an approved orchestrator capable of managing F5 WAF certificates. Specifically, one with the f5WafTls and f5WafCa capabilities. | +| Schedule | Enter the schedule for when you want the job to run | +| Client Machine | The URL for the F5 Distributed Cloud instance (typically ending in '.console.ves.volterra.io'. | +| Server Username | The username used to log in to the F5 Distributed Cloud instance (typically an email). | +| Server Password | The API Token configured in the F5 Distributed Cloud instance's Account Settings. Please see [Creating an F5 WAF API Token](#creating-an-f5-waf-api-token) for more details on creating this token. | +| Directories to Search | Not used for this integration. Leave Blank. | +| Directories to ignore | Not used for this integration. Leave Blank. | +| Extensions | Not used for this integration. Leave Blank. | +| File name patterns to match | Not used for this integration. Leave Blank. | +| Follow SymLinks | Not used for this integration. Leave Unchecked. | +| Follow SymLinks | Not used for this integration. Leave Unchecked. | +| Use SSL? | Not used for this integration. Leave Unchecked. | + +Discovery jobs will return all known namespaces for this F5 WAF instance. Please note that because Keyfactor Command has a restriction on multiple certificate stores having the same Client Machine and Store Path, certificate stores for f5WafTls will return stores with a "tls-" prefixed to the beginning of the store path (namespace); while f5WafCA stores will have "ca-" prefixed. Any jobs that run for stores with these prefixes will have these prefixes removed before calling any F5 WAF APIs. What this means is a store path (namespace) for an f5WafTls store of "tls-namespace1" will be the same as one labeled "namespace1". + +
    + + +## Creating an F5 WAF API Token + +In lieu of providing a server password when setting up an F5 WAF certificate store, F5 Multi-Cloud App Connect uses API tokens combined with the user id to authenticate when calling APIs. API Tokens can be created through the F5 Distributed Cloud Console after logging in with the ID you wish to use for the Keyfactor certificate store. Once logged in, select Multi-Cloud App Connect from the options under "Common services". Next, select Account Services from the pull down at the top right of the screen, and select "Account Settings". From there, click on "Credentials" on the left nav and "Add Credentials" on the subsequent screen. In the form shown, select "API Token" from the Credential Type dropdown, and enter the name of the credential and the expiration date. Please note that credentials can only be created for up to 90 day periods of time. After 90 days, a new API token will need to be generated and replaced in your F5 WAF certificate store(s). Clicking Generate will then show the value of the newly created API Token. Copy this and save to a safe place, as this will be the value you will enter in the Server Password field when setting up your certificate store. If you forget or lose this token value, there is no way to access it again in the F5 Distributed Cloud portal. You will need to create a new API Token. + +![](Images/image1.gif) +![](Images/image2.gif) +![](Images/image3.gif) +![](Images/image4.gif) +![](Images/image5.gif) +![](Images/image6.gif) +