Skip to content

Commit 8f84821

Browse files
author
Keyfactor
committed
Update generated docs
1 parent 204c408 commit 8f84821

File tree

1 file changed

+149
-38
lines changed

1 file changed

+149
-38
lines changed

README.md

Lines changed: 149 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,54 @@
3131

3232
## Overview
3333

34-
The Keyfactor A10 vThunder Universal Orchestrator Extension facilitates the management of SSL certificates on A10 Networks' vThunder appliances. It offers two primary certificate store types:
35-
36-
1. **ThunderSsl**: Manages SSL certificates for securing traffic handled by the device, such as in SSL offloading, SSL intercept, and reverse proxy configurations.
37-
2. **ThunderMgmt**: Manages certificates securing HTTPS access to the A10 management interface (GUI/API).
38-
39-
- **A10 Thunder Version**: Tested with A10 Thunder v6.0.5-P5 (Build 51).
40-
- **Automated Certificate Deployment**: Streamlines the deployment of SSL certificates to the A10 vThunder appliance.
41-
- **Certificate Inventory Management**: Provides visibility into existing certificates on the appliance.
42-
- **Integration with Keyfactor Command**: Enables centralized certificate lifecycle management.
34+
A Keyfactor Universal Orchestrator extension for managing SSL/TLS certificates on A10 Networks vThunder load balancers through direct API integration and SCP-based management interface certificate deployment.
35+
36+
The A10 vThunder Orchestrator provides automated certificate lifecycle management for A10 Networks vThunder appliances. It implements two distinct certificate store types:
37+
38+
1. **ThunderSsl**: Direct API-based management of SSL certificates for load balancing and application delivery
39+
2. **ThunderMgmt**: SCP-based management of certificates for the A10 management interface (GUI/API access)
40+
41+
### Key Features
42+
43+
- **Direct SSL Certificate Management**: Native A10 API integration for SSL certificate deployment and management
44+
- **Template-Aware Operations**: Intelligent handling of certificates bound to SSL templates and virtual services
45+
- **Multi-API Version Support**: Automatic detection and support for A10 API v4 and v6
46+
- **Partition Support**: Full support for A10 partitions for multi-tenant deployments
47+
- **Certificate Inventory**: Comprehensive discovery and inventory of existing certificates
48+
- **Management Interface Certificates**: SCP-based deployment for A10 management interface certificates
49+
- **PAM Integration**: Support for Privileged Access Management systems
50+
- **Advanced Certificate Replacement**: Zero-downtime certificate replacement with automatic template rebinding
51+
52+
### Architecture
53+
54+
#### ThunderSsl Store Type
55+
Uses A10's native REST API (AXAPI) for direct certificate management:
56+
- Certificates are uploaded directly to the A10 appliance
57+
- Supports both certificate-only and certificate-with-private-key operations
58+
- Automatically detects and handles template bindings and virtual service configurations
59+
- Implements intelligent certificate replacement to avoid service disruption
60+
61+
#### ThunderMgmt Store Type
62+
Uses SCP (Secure Copy Protocol) for management interface certificates:
63+
- Orchestrator uploads certificates to an intermediate Linux SCP server
64+
- A10 appliance retrieves certificates from the SCP server via API calls
65+
- Designed for management interface SSL certificate deployment
66+
67+
#### A10 vThunder Requirements
68+
- A10 vThunder appliance with AXAPI support
69+
- API versions 4.x or 6.x supported (automatically detected)
70+
- Valid user account with certificate management privileges
71+
- For ThunderMgmt: SSH/SCP access enabled
72+
73+
#### Required A10 Permissions
74+
The orchestrator requires an A10 user account with permissions to:
75+
- Access AXAPI (REST API)
76+
- Manage SSL certificates and private keys
77+
- Read/write SSL templates (server-ssl and client-ssl)
78+
- Query and modify virtual services
79+
- Write configuration to memory
80+
- Set active partitions
81+
- For ThunderMgmt: SSH/SCP file operations
4382

4483
The a10vThunder Universal Orchestrator extension implements 2 Certificate Store Types. Depending on your use case, you may elect to use one, or both of these Certificate Store Types. Descriptions of each are provided below.
4584

@@ -686,43 +725,115 @@ Please refer to the **Universal Orchestrator (remote)** usage section ([PAM prov
686725

687726

688727

689-
## Test Cases
690-
<details>
691-
<summary>Management & SSL Certificate Operations</summary>
728+
## Certificate Alias Management
692729

693-
Case Number|Case Name|Store Path|Enrollment Params|Expected Results|Passed|Screenshots
694-
-------|----------|------------------|--------------------|----------------------------|----|--------
695-
TC1|Add Unbound Certificate|shared|**Alias**:<br>&lt;random&gt;<br>**Overwrite**:<br>false|Cert and Chain Added|True|![](images/TC1.gif)
696-
TC2|Remove Unbound Certificate|shared|**Alias**:<br>&lt;same-random&gt;<br>**Overwrite**:<br>false|Cert Removed Successfully|True|![](images/TC2.gif)
697-
TC3|Add Certificate to New Partition|keyfactor2|**Alias**:<br>&lt;random&gt;<br>**Overwrite**:<br>false|Cert Added to Partition|True|![](images/TC3.gif)
698-
TC4|Remove Cert from Partition|keyfactor2|**Alias**:<br>&lt;same-random&gt;<br>**Overwrite**:<br>false|Cert Removed from Partition|True|![](images/TC4.gif)
699-
TC5|Renew Bound Cert With Overwrite|shared|**Alias**:<br>&lt;entered-name&gt;<br>**Overwrite**:<br>true|Cert Renamed and Rebound|True|![](images/TC5.gif)
700-
TC6|Renew Bound Cert in Different Partition|keyfactor2|**Alias**:<br>&lt;entered-name&gt;<br>**Overwrite**:<br>true|Cert Renamed and Rebound|True|![](images/TC6.gif)
701-
TC7|Attempt to Remove Bound Cert (Not Allowed)|keyfactor2|**Alias**:<br>&lt;entered-name&gt;<br>**Overwrite**:<br>true|Error: Bound Cert Cannot Be Removed|True|![](images/TC7.gif)
730+
Understanding how aliases work is crucial for proper certificate management across both store types.
702731

703-
</details>
732+
#### ThunderSsl Aliases
704733

705-
<details>
706-
<summary>Inventory Tests</summary>
734+
In the ThunderSsl store type, the **alias** directly corresponds to the certificate and private key names stored on the A10 appliance:
707735

708-
Case Number|Case Name|Store Path|Enrollment Params|Expected Results|Passed|Screenshots
709-
-------|----------|------------------|--------------------|----------------------------|----|--------
710-
TC8|Inventory From Partition|keyfactor2||Partition Certs Listed|True|![](images/TC8.gif)
711-
TC9|Inventory From Shared Location|shared||Shared Certs Listed|True|![](images/TC9.gif)
712-
TC14|Inventory Management Certs from SCP|/home/ec2-user||Mgmt Certs Retrieved from SCP|True|![](images/TC14.gif)
736+
- **Certificate Name**: The alias becomes the SSL certificate identifier in A10's certificate store
737+
- **Private Key Name**: The same alias is used for the associated private key
738+
- **Template References**: SSL templates reference certificates by this exact alias name
739+
- **API Operations**: All A10 API calls use this alias to identify the certificate/key pair
713740
714-
</details>
741+
##### Example ThunderSsl Usage
742+
```
743+
Alias: "webserver-prod-2025"
744+
→ A10 Certificate: "webserver-prod-2025"
745+
→ A10 Private Key: "webserver-prod-2025"
746+
→ Template Reference: server-ssl template uses cert "webserver-prod-2025"
747+
```
715748
716-
<details>
717-
<summary>Management Port Binding</summary>
749+
##### Alias Renaming for Template-Bound Certificates
718750
719-
Case Number|Case Name|Store Path|Enrollment Params|Expected Results|Passed|Screenshots
720-
-------|----------|------------------|--------------------|----------------------------|----|--------
721-
TC10|Add New Cert and Bind to Mgmt Port|/home/ec2-user|**Alias**:<br>&lt;random&gt;<br>**Overwrite**:<br>true|Cert Installed and Bound|True|![](images/TC10.gif)
722-
TC11|Renew and Rebind Cert to Mgmt Port|/home/ec2-user|**Alias**:<br>&lt;same&gt;<br>**Overwrite**:<br>true|Cert Renewed and Bound Again|True|![](images/TC11.gif)
723-
TC13|Remove Mgmt Bound Cert|/home/ec2-user|**Alias**:<br>&lt;same&gt;<br>**Overwrite**:<br>false|Cert Removed, Binding Left Intact|True|![](images/TC13.gif)
751+
When replacing a certificate that's bound to SSL templates, the orchestrator uses an intelligent renaming strategy:
724752

725-
</details>
753+
1. **Timestamp Generation**: Creates a Unix timestamp (10 digits)
754+
2. **Alias Pattern Matching**:
755+
- If alias contains existing timestamp: `webserver-prod_1640995200``webserver-prod_1672531200`
756+
- If no timestamp found: `webserver-prod``webserver-prod_1672531200`
757+
3. **Length Validation**: Ensures final alias stays within A10's 240-character limit
758+
4. **Template Updates**: All SSL templates are updated to reference the new timestamped alias
759+
5. **Cleanup**: Original certificate is removed after successful template updates
760+
761+
##### Replacement Workflow Example
762+
```
763+
Original: "api-gateway-cert"
764+
Step 1: Generate new alias → "api-gateway-cert_1672531200"
765+
Step 2: Upload certificate with new alias
766+
Step 3: Update server-ssl templates: cert "api-gateway-cert" → "api-gateway-cert_1672531200"
767+
Step 4: Update client-ssl templates: cert "api-gateway-cert" → "api-gateway-cert_1672531200"
768+
Step 5: Remove old certificate "api-gateway-cert"
769+
Step 6: Rebind templates to virtual services
770+
```
771+
772+
#### ThunderMgmt Aliases
773+
774+
In the ThunderMgmt store type, the **alias** determines the filename for certificates stored on the SCP server:
775+
776+
- **Certificate File**: `{alias}.crt` on the SCP server
777+
- **Private Key File**: `{alias}.key` on the SCP server
778+
- **A10 API Reference**: The A10 management interface loads certificates using SCP URLs pointing to these files
779+
780+
##### Example ThunderMgmt Usage
781+
```
782+
Alias: "mgmt-interface-cert"
783+
→ SCP Server Files:
784+
- /home/scpuser/mgmt-interface-cert.crt
785+
- /home/scpuser/mgmt-interface-cert.key
786+
→ A10 API Call:
787+
- Certificate URL: scp://scpuser:[email protected]:/home/scpuser/mgmt-interface-cert.crt
788+
- Key URL: scp://scpuser:[email protected]:/home/scpuser/mgmt-interface-cert.key
789+
```
790+
791+
##### ThunderMgmt File Management
792+
793+
The orchestrator handles file operations as follows:
794+
795+
1. **Add Operation**:
796+
- Uploads `{alias}.crt` and `{alias}.key` to SCP server
797+
- Calls A10 API to load certificate from SCP URLs
798+
- A10 device pulls files directly from SCP server
799+
800+
2. **Remove Operation**:
801+
- Deletes `{alias}.crt` and `{alias}.key` from SCP server
802+
- Does not modify A10 management interface configuration
803+
804+
3. **Replace Operation** (with Overwrite=true):
805+
- Overwrites existing `{alias}.crt` and `{alias}.key` files
806+
- Calls A10 API to reload certificate from same SCP URLs
807+
808+
#### Alias Best Practices
809+
810+
##### For ThunderSsl
811+
- Use descriptive names that indicate purpose: `web-frontend-ssl`, `api-backend-tls`
812+
- Avoid special characters that might conflict with A10 naming rules
813+
- Consider including environment indicators: `prod-web-cert`, `stage-api-cert`
814+
- Remember that renaming will append timestamps for template-bound certificates
815+
816+
##### For ThunderMgmt
817+
- Use names that clearly identify the management purpose: `mgmt-interface-2025`
818+
- Ensure filenames are valid for both SCP server filesystem and A10 API calls
819+
- Consider including renewal dates: `mgmt-cert-jan2025`
820+
821+
##### Character Limitations
822+
- **Maximum Length**: 240 characters (enforced by orchestrator)
823+
- **Recommended Characters**: Letters, numbers, hyphens, underscores
824+
- **Avoid**: Special characters that might cause issues in API calls or file operations
825+
826+
#### Troubleshooting Alias Issues
827+
828+
##### ThunderSsl Common Issues
829+
- **Template Update Failures**: Verify templates exist and are accessible
830+
- **Long Alias Names**: Orchestrator will truncate to fit timestamp if needed
831+
- **Special Characters**: May cause API call failures
832+
833+
##### ThunderMgmt Common Issues
834+
- **File Path Issues**: Ensure SCP user has access to the target directory
835+
- **Invalid Filenames**: Some characters may not be valid for filesystem operations
836+
- **URL Encoding**: Special characters in aliases may require URL encoding in SCP URLs
726837
727838
728839
## License

0 commit comments

Comments
 (0)