Skip to content

feat: add Redis SSL/TLS certificate authentication support#23624

Merged
GarfieldDai merged 1 commit intomainfrom
clock
Aug 18, 2025
Merged

feat: add Redis SSL/TLS certificate authentication support#23624
GarfieldDai merged 1 commit intomainfrom
clock

Conversation

@laipz8200
Copy link
Copy Markdown
Member

Summary

Changes

New Features

  • Client Certificate Authentication: Support for mutual TLS with client certificates
  • Flexible Certificate Verification: Three modes - CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED
  • CA Certificate Validation: Custom CA certificates for validating Redis server certificates
  • Environment Variable Configuration: All SSL options configurable via environment variables

Technical Improvements

  • Fixed SSL constant usage (replaced None with proper ssl.CERT_NONE)
  • Refactored Redis client initialization with cleaner separation of concerns
  • Added dedicated functions for SSL, Sentinel, Cluster, and standalone configurations

Configuration

New environment variables added:

  • REDIS_SSL_CERT_REQS: Certificate verification mode
  • REDIS_SSL_CA_CERTS: Path to CA certificate file
  • REDIS_SSL_CERTFILE: Path to client certificate file
  • REDIS_SSL_KEYFILE: Path to client private key file

Testing

  • Tested with Redis SSL enabled (REDIS_USE_SSL=true)
  • Tested client certificate authentication
  • Tested with different certificate verification modes
  • Verified backward compatibility with non-SSL Redis
  • Tested with Redis Sentinel mode
  • Tested with Redis Cluster mode

Security Considerations

  • Enables compliance with security standards requiring encrypted data in transit
  • Supports zero-trust network architectures with mutual TLS
  • No breaking changes to existing deployments

@laipz8200 laipz8200 self-assigned this Aug 8, 2025
@laipz8200 laipz8200 marked this pull request as draft August 8, 2025 08:18
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. 💪 enhancement New feature or request labels Aug 8, 2025
@laipz8200 laipz8200 requested a review from GarfieldDai August 8, 2025 08:29
@laipz8200 laipz8200 marked this pull request as ready for review August 8, 2025 08:29
@laipz8200 laipz8200 force-pushed the clock branch 2 times, most recently from 5503dc0 to 0980054 Compare August 17, 2025 15:15
- Add comprehensive SSL configuration parameters for Redis connections
- Support client certificate authentication with cert/key files
- Add configurable certificate verification modes (CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED)
- Fix SSL constant usage by replacing None with ssl.CERT_NONE
- Refactor Redis client initialization for better code organization
- Update environment variables and Docker compose configuration

Closes #23623

fix: add SSL/TLS support for Celery Redis connections

- Extract SSL configuration logic into _get_celery_ssl_options() function
- Use REDIS_USE_SSL flag consistently with main Redis client configuration
- Apply same SSL certificate settings (CA cert, client cert/key) to Celery
- Support all certificate verification modes (CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED)
- Apply SSL configuration to both broker and backend when using Redis
- Add comprehensive unit tests for SSL configuration scenarios

This ensures Celery workers can connect to Redis with SSL/TLS enabled,
using the same security configuration as the main application.

[autofix.ci] apply automated fixes

fix: resolve type error and formatting issues for dev/reformat

- Add validation check for REDIS_SENTINEL_SERVICE_NAME to fix mypy type error
- Ensure service name is set when using Redis Sentinel configuration
- Clean up test file formatting (remove unused import, fix EOF newline)
- All checks now pass: ruff, mypy, and tests
Copy link
Copy Markdown
Contributor

@GarfieldDai GarfieldDai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Aug 18, 2025
@GarfieldDai GarfieldDai merged commit 052d0e0 into main Aug 18, 2025
14 checks passed
@GarfieldDai GarfieldDai deleted the clock branch August 18, 2025 02:59
bowenliang123 pushed a commit to bowenliang123/dify that referenced this pull request Aug 18, 2025
asukaminato0721 added a commit to asukaminato0721/dify that referenced this pull request Aug 20, 2025
* Restore useLabelStore mistakenly removed in commit 403e2d5 (langgenius#24052)

Co-authored-by: Yongtao Huang <[email protected]>
Co-authored-by: crazywoola <[email protected]>

* chore: synchronize translations (langgenius#24044)

* feat: add testcontainers based tests for metadata service (langgenius#24048)

* feat: add testcontainers based tests for model loadbalancing service (langgenius#24066)

* feat: add select input support to the conversation opener (langgenius#24043)

* feat: add CLAUDE.md for LLM-assisted development guidance (langgenius#23946)

* feat: add Redis SSL/TLS certificate authentication support (langgenius#23624)

* Fix sticky table header transparency with backdrop-filter blur in dark mode (langgenius#23999)

* fix: update first_id logic to use the oldest answer item in chat messages (langgenius#23992)

Co-authored-by: Copilot <[email protected]>
Co-authored-by: crazywoola <[email protected]>

* refactor: improve loading animation and debug panel styles (langgenius#24075)

* fix(oauth): redis compatibility (langgenius#23959)

* feat: enchance prompt and code (langgenius#23633)

Co-authored-by: stream <[email protected]>
Co-authored-by: Stream <[email protected]>
Co-authored-by: Stream <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* fix: return empty list instead of raising exception for qdrant search when score_threshold is 1 (langgenius#24032)

* chore: translate i18n files (langgenius#24081)

Co-authored-by: Stream29 <[email protected]>

* fix: no current code caused code generation show error (langgenius#24086)

* fix(ui): Optimize UI component styles and layouts (langgenius#24090) (langgenius#24092)

* feat: no longer enable auto upgrade when marketplace is disabled (langgenius#24… (langgenius#24101)

* Feature/improve goto anything commands (langgenius#24091)

* chore: translate i18n files (langgenius#24102)

Co-authored-by: crazywoola <[email protected]>

* fix  pg_vector extension requires SUPERUSER, but not available on Huawei Cloud RDS (langgenius#24093)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* Revert "fix  pg_vector extension requires SUPERUSER, but not availabl… (langgenius#24108)

* fix: validate checklist before publishing workflow (langgenius#24104)

* Chore: remove some dead code in experience-enhance-group (langgenius#24110)

Co-authored-by: Yongtao Huang <[email protected]>

* fix: treat default template of code as empty (langgenius#24106)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* Bump pyobvector to 0.2.15 (langgenius#24120)

* Use typing.Literal to replace str places (langgenius#24099)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* feat: add delete avatar functionality with confirmation modal (langgenius#24127)

Co-authored-by: crazywoola <[email protected]>

* chore: translate i18n files (langgenius#24131)

Co-authored-by: crazywoola <[email protected]>

* an example of suppress (langgenius#24136)

* feat: add testcontainers based tests for feature service (langgenius#24026)

* feat: Implements periodic deletion of workflow run logs that exceed t… (langgenius#23881)

Co-authored-by: shiyun.li973792 <[email protected]>
Co-authored-by: 1wangshu <[email protected]>
Co-authored-by: Blackoutta <[email protected]>
Co-authored-by: crazywoola <[email protected]>

* try ast-grep (langgenius#24149)

* fix: correct behaviour of code fix (langgenius#24152)

Co-authored-by: Joel <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* Fix number input in  tool configure form of agent node tool item (langgenius#24154)

* Remove the second `if self.runtime is None:` check (langgenius#24171)

Co-authored-by: Yongtao Huang <[email protected]>

* Fix: correctly match http/https URLs in image upload file (langgenius#24180)

* feat: add testcontainers based tests for model provider service (langgenius#24193)

* Fix: replace `get_builtin_provider` with `get_plugin_provider` (langgenius#24191)

* docs: format all md files (langgenius#24195)

Signed-off-by: yihong0618 <[email protected]>

* hotfix: fix multiple case match syntax (langgenius#24204)

---------

Signed-off-by: yihong0618 <[email protected]>
Co-authored-by: Yongtao Huang <[email protected]>
Co-authored-by: Yongtao Huang <[email protected]>
Co-authored-by: crazywoola <[email protected]>
Co-authored-by: lyzno1 <[email protected]>
Co-authored-by: NeatGuyCoding <[email protected]>
Co-authored-by: Zhehao Peng <[email protected]>
Co-authored-by: -LAN- <[email protected]>
Co-authored-by: Guangdong Liu <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Wu Tianwei <[email protected]>
Co-authored-by: Maries <[email protected]>
Co-authored-by: Joel <[email protected]>
Co-authored-by: stream <[email protected]>
Co-authored-by: Stream <[email protected]>
Co-authored-by: Stream <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Bo Wu <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Stream29 <[email protected]>
Co-authored-by: HyaCinth <[email protected]>
Co-authored-by: Junyan Qin (Chin) <[email protected]>
Co-authored-by: GuanMu <[email protected]>
Co-authored-by: Elvis_LEE <[email protected]>
Co-authored-by: He Wang <[email protected]>
Co-authored-by: crazywoola <[email protected]>
Co-authored-by: 9527MrLi <[email protected]>
Co-authored-by: shiyun.li973792 <[email protected]>
Co-authored-by: 1wangshu <[email protected]>
Co-authored-by: Blackoutta <[email protected]>
Co-authored-by: KVOJJJin <[email protected]>
Co-authored-by: yihong <[email protected]>
HarryReidx pushed a commit to HarryReidx/dify that referenced this pull request Sep 1, 2025
@dosubot dosubot bot mentioned this pull request Oct 16, 2025
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💪 enhancement New feature or request lgtm This PR has been approved by a maintainer size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Redis SSL/TLS Certificate Authentication Support

2 participants