|
1 | 1 | ## Overview |
2 | 2 |
|
3 | | -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: |
| 3 | +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. |
4 | 4 |
|
5 | | -1. **ThunderSsl**: Manages SSL certificates for securing traffic handled by the device, such as in SSL offloading, SSL intercept, and reverse proxy configurations. |
6 | | -2. **ThunderMgmt**: Manages certificates securing HTTPS access to the A10 management interface (GUI/API). |
| 5 | +The A10 vThunder Orchestrator provides automated certificate lifecycle management for A10 Networks vThunder appliances. It implements two distinct certificate store types: |
7 | 6 |
|
8 | | -- **A10 Thunder Version**: Tested with A10 Thunder v6.0.5-P5 (Build 51). |
9 | | -- **Automated Certificate Deployment**: Streamlines the deployment of SSL certificates to the A10 vThunder appliance. |
10 | | -- **Certificate Inventory Management**: Provides visibility into existing certificates on the appliance. |
11 | | -- **Integration with Keyfactor Command**: Enables centralized certificate lifecycle management. |
| 7 | +1. **ThunderSsl**: Direct API-based management of SSL certificates for load balancing and application delivery |
| 8 | +2. **ThunderMgmt**: SCP-based management of certificates for the A10 management interface (GUI/API access) |
12 | 9 |
|
13 | | -## Test Cases |
14 | | -<details> |
15 | | -<summary>Management & SSL Certificate Operations</summary> |
| 10 | +### Key Features |
16 | 11 |
|
17 | | -Case Number|Case Name|Store Path|Enrollment Params|Expected Results|Passed|Screenshots |
18 | | --------|----------|------------------|--------------------|----------------------------|----|-------- |
19 | | -TC1|Add Unbound Certificate|shared|**Alias**:<br><random><br>**Overwrite**:<br>false|Cert and Chain Added|True| |
20 | | -TC2|Remove Unbound Certificate|shared|**Alias**:<br><same-random><br>**Overwrite**:<br>false|Cert Removed Successfully|True| |
21 | | -TC3|Add Certificate to New Partition|keyfactor2|**Alias**:<br><random><br>**Overwrite**:<br>false|Cert Added to Partition|True| |
22 | | -TC4|Remove Cert from Partition|keyfactor2|**Alias**:<br><same-random><br>**Overwrite**:<br>false|Cert Removed from Partition|True| |
23 | | -TC5|Renew Bound Cert With Overwrite|shared|**Alias**:<br><entered-name><br>**Overwrite**:<br>true|Cert Renamed and Rebound|True| |
24 | | -TC6|Renew Bound Cert in Different Partition|keyfactor2|**Alias**:<br><entered-name><br>**Overwrite**:<br>true|Cert Renamed and Rebound|True| |
25 | | -TC7|Attempt to Remove Bound Cert (Not Allowed)|keyfactor2|**Alias**:<br><entered-name><br>**Overwrite**:<br>true|Error: Bound Cert Cannot Be Removed|True| |
| 12 | +- **Direct SSL Certificate Management**: Native A10 API integration for SSL certificate deployment and management |
| 13 | +- **Template-Aware Operations**: Intelligent handling of certificates bound to SSL templates and virtual services |
| 14 | +- **Multi-API Version Support**: Automatic detection and support for A10 API v4 and v6 |
| 15 | +- **Partition Support**: Full support for A10 partitions for multi-tenant deployments |
| 16 | +- **Certificate Inventory**: Comprehensive discovery and inventory of existing certificates |
| 17 | +- **Management Interface Certificates**: SCP-based deployment for A10 management interface certificates |
| 18 | +- **PAM Integration**: Support for Privileged Access Management systems |
| 19 | +- **Advanced Certificate Replacement**: Zero-downtime certificate replacement with automatic template rebinding |
26 | 20 |
|
27 | | -</details> |
| 21 | +### Architecture |
28 | 22 |
|
29 | | -<details> |
30 | | -<summary>Inventory Tests</summary> |
| 23 | +#### ThunderSsl Store Type |
| 24 | +Uses A10's native REST API (AXAPI) for direct certificate management: |
| 25 | +- Certificates are uploaded directly to the A10 appliance |
| 26 | +- Supports both certificate-only and certificate-with-private-key operations |
| 27 | +- Automatically detects and handles template bindings and virtual service configurations |
| 28 | +- Implements intelligent certificate replacement to avoid service disruption |
31 | 29 |
|
32 | | -Case Number|Case Name|Store Path|Enrollment Params|Expected Results|Passed|Screenshots |
33 | | --------|----------|------------------|--------------------|----------------------------|----|-------- |
34 | | -TC8|Inventory From Partition|keyfactor2|—|Partition Certs Listed|True| |
35 | | -TC9|Inventory From Shared Location|shared|—|Shared Certs Listed|True| |
36 | | -TC14|Inventory Management Certs from SCP|/home/ec2-user|—|Mgmt Certs Retrieved from SCP|True| |
| 30 | +#### ThunderMgmt Store Type |
| 31 | +Uses SCP (Secure Copy Protocol) for management interface certificates: |
| 32 | +- Orchestrator uploads certificates to an intermediate Linux SCP server |
| 33 | +- A10 appliance retrieves certificates from the SCP server via API calls |
| 34 | +- Designed for management interface SSL certificate deployment |
37 | 35 |
|
38 | | -</details> |
| 36 | +#### A10 vThunder Requirements |
| 37 | +- A10 vThunder appliance with AXAPI support |
| 38 | +- API versions 4.x or 6.x supported (automatically detected) |
| 39 | +- Valid user account with certificate management privileges |
| 40 | +- For ThunderMgmt: SSH/SCP access enabled |
| 41 | + |
| 42 | +#### Required A10 Permissions |
| 43 | +The orchestrator requires an A10 user account with permissions to: |
| 44 | +- Access AXAPI (REST API) |
| 45 | +- Manage SSL certificates and private keys |
| 46 | +- Read/write SSL templates (server-ssl and client-ssl) |
| 47 | +- Query and modify virtual services |
| 48 | +- Write configuration to memory |
| 49 | +- Set active partitions |
| 50 | +- For ThunderMgmt: SSH/SCP file operations |
| 51 | + |
| 52 | +## Certificate Alias Management |
| 53 | + |
| 54 | +Understanding how aliases work is crucial for proper certificate management across both store types. |
| 55 | + |
| 56 | +#### ThunderSsl Aliases |
| 57 | + |
| 58 | +In the ThunderSsl store type, the **alias** directly corresponds to the certificate and private key names stored on the A10 appliance: |
| 59 | + |
| 60 | +- **Certificate Name**: The alias becomes the SSL certificate identifier in A10's certificate store |
| 61 | +- **Private Key Name**: The same alias is used for the associated private key |
| 62 | +- **Template References**: SSL templates reference certificates by this exact alias name |
| 63 | +- **API Operations**: All A10 API calls use this alias to identify the certificate/key pair |
| 64 | + |
| 65 | +##### Example ThunderSsl Usage |
| 66 | +``` |
| 67 | +Alias: "webserver-prod-2025" |
| 68 | +→ A10 Certificate: "webserver-prod-2025" |
| 69 | +→ A10 Private Key: "webserver-prod-2025" |
| 70 | +→ Template Reference: server-ssl template uses cert "webserver-prod-2025" |
| 71 | +``` |
| 72 | + |
| 73 | +##### Alias Renaming for Template-Bound Certificates |
| 74 | + |
| 75 | +When replacing a certificate that's bound to SSL templates, the orchestrator uses an intelligent renaming strategy: |
| 76 | + |
| 77 | +1. **Timestamp Generation**: Creates a Unix timestamp (10 digits) |
| 78 | +2. **Alias Pattern Matching**: |
| 79 | + - If alias contains existing timestamp: `webserver-prod_1640995200` → `webserver-prod_1672531200` |
| 80 | + - If no timestamp found: `webserver-prod` → `webserver-prod_1672531200` |
| 81 | +3. **Length Validation**: Ensures final alias stays within A10's 240-character limit |
| 82 | +4. **Template Updates**: All SSL templates are updated to reference the new timestamped alias |
| 83 | +5. **Cleanup**: Original certificate is removed after successful template updates |
| 84 | + |
| 85 | +##### Replacement Workflow Example |
| 86 | +``` |
| 87 | +Original: "api-gateway-cert" |
| 88 | +Step 1: Generate new alias → "api-gateway-cert_1672531200" |
| 89 | +Step 2: Upload certificate with new alias |
| 90 | +Step 3: Update server-ssl templates: cert "api-gateway-cert" → "api-gateway-cert_1672531200" |
| 91 | +Step 4: Update client-ssl templates: cert "api-gateway-cert" → "api-gateway-cert_1672531200" |
| 92 | +Step 5: Remove old certificate "api-gateway-cert" |
| 93 | +Step 6: Rebind templates to virtual services |
| 94 | +``` |
| 95 | + |
| 96 | +#### ThunderMgmt Aliases |
| 97 | + |
| 98 | +In the ThunderMgmt store type, the **alias** determines the filename for certificates stored on the SCP server: |
| 99 | + |
| 100 | +- **Certificate File**: `{alias}.crt` on the SCP server |
| 101 | +- **Private Key File**: `{alias}.key` on the SCP server |
| 102 | +- **A10 API Reference**: The A10 management interface loads certificates using SCP URLs pointing to these files |
| 103 | + |
| 104 | +##### Example ThunderMgmt Usage |
| 105 | +``` |
| 106 | +Alias: "mgmt-interface-cert" |
| 107 | +→ SCP Server Files: |
| 108 | + - /home/scpuser/mgmt-interface-cert.crt |
| 109 | + - /home/scpuser/mgmt-interface-cert.key |
| 110 | +→ A10 API Call: |
| 111 | + - Certificate URL: scp://scpuser:[email protected]:/home/scpuser/mgmt-interface-cert.crt |
| 112 | + - Key URL: scp://scpuser:[email protected]:/home/scpuser/mgmt-interface-cert.key |
| 113 | +``` |
| 114 | + |
| 115 | +##### ThunderMgmt File Management |
| 116 | + |
| 117 | +The orchestrator handles file operations as follows: |
| 118 | + |
| 119 | +1. **Add Operation**: |
| 120 | + - Uploads `{alias}.crt` and `{alias}.key` to SCP server |
| 121 | + - Calls A10 API to load certificate from SCP URLs |
| 122 | + - A10 device pulls files directly from SCP server |
| 123 | + |
| 124 | +2. **Remove Operation**: |
| 125 | + - Deletes `{alias}.crt` and `{alias}.key` from SCP server |
| 126 | + - Does not modify A10 management interface configuration |
| 127 | + |
| 128 | +3. **Replace Operation** (with Overwrite=true): |
| 129 | + - Overwrites existing `{alias}.crt` and `{alias}.key` files |
| 130 | + - Calls A10 API to reload certificate from same SCP URLs |
| 131 | + |
| 132 | +#### Alias Best Practices |
| 133 | + |
| 134 | +##### For ThunderSsl |
| 135 | +- Use descriptive names that indicate purpose: `web-frontend-ssl`, `api-backend-tls` |
| 136 | +- Avoid special characters that might conflict with A10 naming rules |
| 137 | +- Consider including environment indicators: `prod-web-cert`, `stage-api-cert` |
| 138 | +- Remember that renaming will append timestamps for template-bound certificates |
| 139 | + |
| 140 | +##### For ThunderMgmt |
| 141 | +- Use names that clearly identify the management purpose: `mgmt-interface-2025` |
| 142 | +- Ensure filenames are valid for both SCP server filesystem and A10 API calls |
| 143 | +- Consider including renewal dates: `mgmt-cert-jan2025` |
| 144 | + |
| 145 | +##### Character Limitations |
| 146 | +- **Maximum Length**: 240 characters (enforced by orchestrator) |
| 147 | +- **Recommended Characters**: Letters, numbers, hyphens, underscores |
| 148 | +- **Avoid**: Special characters that might cause issues in API calls or file operations |
| 149 | + |
| 150 | +#### Troubleshooting Alias Issues |
| 151 | + |
| 152 | +##### ThunderSsl Common Issues |
| 153 | +- **Template Update Failures**: Verify templates exist and are accessible |
| 154 | +- **Long Alias Names**: Orchestrator will truncate to fit timestamp if needed |
| 155 | +- **Special Characters**: May cause API call failures |
| 156 | + |
| 157 | +##### ThunderMgmt Common Issues |
| 158 | +- **File Path Issues**: Ensure SCP user has access to the target directory |
| 159 | +- **Invalid Filenames**: Some characters may not be valid for filesystem operations |
| 160 | +- **URL Encoding**: Special characters in aliases may require URL encoding in SCP URLs |
39 | 161 |
|
40 | | -<details> |
41 | | -<summary>Management Port Binding</summary> |
42 | 162 |
|
43 | | -Case Number|Case Name|Store Path|Enrollment Params|Expected Results|Passed|Screenshots |
44 | | --------|----------|------------------|--------------------|----------------------------|----|-------- |
45 | | -TC10|Add New Cert and Bind to Mgmt Port|/home/ec2-user|**Alias**:<br><random><br>**Overwrite**:<br>true|Cert Installed and Bound|True| |
46 | | -TC11|Renew and Rebind Cert to Mgmt Port|/home/ec2-user|**Alias**:<br><same><br>**Overwrite**:<br>true|Cert Renewed and Bound Again|True| |
47 | | -TC13|Remove Mgmt Bound Cert|/home/ec2-user|**Alias**:<br><same><br>**Overwrite**:<br>false|Cert Removed, Binding Left Intact|True| |
48 | 163 |
|
49 | | -</details> |
|
0 commit comments