3.7 KiB
3.7 KiB
SmartProxy ACME Simplification Implementation Summary
Overview
We successfully implemented comprehensive support for both global and route-level ACME configuration in SmartProxy v19.0.0, addressing the certificate acquisition issues and improving the developer experience.
What Was Implemented
1. Enhanced Configuration Support
- Added global ACME configuration at the SmartProxy level
- Maintained support for route-level ACME configuration
- Implemented configuration hierarchy where global settings serve as defaults
- Route-level settings override global defaults when specified
2. Updated Core Components
SmartProxy Class (smart-proxy.ts
)
- Enhanced ACME configuration normalization in constructor
- Added support for both
email
andaccountEmail
fields - Updated
initializeCertificateManager
to prioritize configurations correctly - Added
validateAcmeConfiguration
method for comprehensive validation
SmartCertManager Class (certificate-manager.ts
)
- Added
globalAcmeDefaults
property to store top-level configuration - Implemented
setGlobalAcmeDefaults
method - Updated
provisionAcmeCertificate
to use global defaults - Enhanced error messages to guide users to correct configuration
ISmartProxyOptions Interface (interfaces.ts
)
- Added comprehensive documentation for global ACME configuration
- Enhanced IAcmeOptions interface with better field descriptions
- Added example usage in JSDoc comments
3. Configuration Validation
- Checks for missing ACME email configuration
- Validates port 80 availability for HTTP-01 challenges
- Warns about wildcard domains with auto certificates
- Detects environment mismatches between global and route configs
4. Test Coverage
Created comprehensive test suite (test.acme-configuration.node.ts
):
- Top-level ACME configuration
- Route-level ACME configuration
- Mixed configuration with overrides
- Error handling for missing email
- Support for accountEmail alias
5. Documentation Updates
Main README (readme.md
)
- Added global ACME configuration example
- Updated code examples to show both configuration styles
- Added dedicated ACME configuration section
Certificate Management Guide (certificate-management.md
)
- Updated for v19.0.0 changes
- Added configuration hierarchy explanation
- Included troubleshooting section
- Added migration guide from v18
Readme Hints (readme.hints.md
)
- Added breaking change warning for ACME configuration
- Included correct configuration example
- Added migration considerations
Key Benefits
- Reduced Configuration Duplication: Global ACME settings eliminate need to repeat configuration
- Better Developer Experience: Clear error messages guide users to correct configuration
- Backward Compatibility: Route-level configuration still works as before
- Flexible Configuration: Can mix global defaults with route-specific overrides
- Improved Validation: Warns about common configuration issues
Testing Results
All tests pass successfully:
- Global ACME configuration works correctly
- Route-level configuration continues to function
- Configuration hierarchy behaves as expected
- Error messages provide clear guidance
Migration Path
For users upgrading from v18:
- Existing route-level ACME configuration continues to work
- Can optionally move common settings to global level
- Route-specific overrides remain available
- No breaking changes for existing configurations
Conclusion
The implementation successfully addresses the original issue where SmartAcme was not initialized due to missing configuration. Users now have flexible options for configuring ACME, with clear error messages and comprehensive documentation to guide them.