18 Commits
Author SHA1 Message Date
Andras Bacsai 284adede6c fix(ssl): issue P-256 server certificates so Electron clients connect
Server certificates now use a prime256v1 (P-256) EC key. The CA keeps
secp521r1. BoringSSL-based Electron clients such as MongoDB Compass
cannot use a P-521 server key.

Add a feature test that checks the CA stays on P-521 and the server
certificate uses P-256. It also checks that the server key matches its
certificate and that the CA signature verifies.
2026-09-30 20:31:33 +02:00
Andras Bacsai a2cd6351b2 fix(databases): keep SSL certificate files and CA in sync with each engine
- Regenerate SSL Certificates now writes server.crt/server.key for every
  engine except MongoDB, which keeps the combined server.pem. Before, the
  button always wrote server.pem, so Postgres, MySQL, MariaDB, Redis, KeyDB
  and Dragonfly failed to start after a regenerate.
- The certificate renewal job uses the same rule, so MongoDB no longer
  switches to server.crt/server.key on renewal and fails on restart.
- Starting an SSL database writes the CA that signs its certificate to
  /data/coolify/ssl/coolify-ca.crt, so a stale CA file (for example one
  written by another server entry for the same host) no longer causes
  "certificate signature failure".
- Saving a custom CA certificate that does not match the stored CA
  private key is rejected.
- The CA file write commands live in SslHelper::caCertificateFileCommands().

Fixes #10388
Fixes #6771
Fixes #11926
2026-09-30 19:01:11 +02:00
Andras Bacsai 4b8c50a546 Improve file storage metadata handling 2026-09-24 12:28:12 +02:00
peaklabs-dev 35cd9573ab fix(ssl): add mount path to DB to fix regeneration of certs 2025-02-07 18:11:26 +01:00
peaklabs-dev f92c170db1 feat(ssl): ability to create .pem certs and add clientAuth to extendedKeyUsage 2025-02-07 18:07:55 +01:00
peaklabs-dev 6eabfd5c8e feat/fix(ssl): fix some issues and improve ssl generation helper
- set default country to XX
- fix array handling of the subjectAlternativeNames so that no indexes are added or skipped
- add extendedKeyUsage to server certs to make them more secure
- add keyAgreement to server certs
- remove authorityKeyIdentifier as it caused the following issue: unable to get local issuer certificate
- removed duplicated distinguished_name entries
- improved formatting
2025-02-06 15:13:08 +01:00
peaklabs-dev 806d9af569 feat(ssl): improve SSL generation and security a lot
- rename some variables for better clarity
- format subjectAltNames correctly
- setup extensions more securely and improve them a lot
- use finally block to remove tempConfig
2025-02-05 22:09:37 +01:00
peaklabs-dev 1003858632 feat(ssl): Add openssl.conf to configure SSL extension properly 2025-02-05 18:06:38 +01:00
peaklabs-dev 80fc7c7b97 fix(ssl): use mountPath parameter not a hardcoded path 2025-02-04 18:31:09 +01:00
peaklabs-dev 3c62130e86 fix(ssl): improve SSL cert file mounts
- If SSL is disabled, delete the SSL crt and file mounts in the DB
- If SSL is disabled, delete the SSL folder
- If SSL is enabled, make sure the file mounts are added inside the helper
- remove old file mounts first to make sure the ssl crt content is always up to date and no duplicates are added
2025-02-04 16:34:24 +01:00
peaklabs-dev cd335e9e00 fix(ssl): make sure the subjectAlternativeNames are unique and stored correctly 2025-02-03 22:42:15 +01:00
peaklabs-dev fba95c3729 fix(migration): store subjectAlternativeNames as a json array in the db 2025-02-03 22:35:00 +01:00
peaklabs-dev 72a2f79d88 feat(ssl): improve ssl generation
- add default state and country
- rename parameters for more clarity
- set subjectAltName
- delete old certificate before creating new one
- Set CN and subjectAltNames in DB for automatic renewal
2025-02-03 22:11:29 +01:00
peaklabs-dev 02475c5232 feat(ssl): improve SSL helper
- improve function parameters
- set default validity to 1 year as resources need to be manually restarted to use the new certificates
- use the CA cert to sign certificates
2025-01-31 13:37:34 +01:00
peaklabs-dev 34188450eb feat(ssl): improve SSL helper
- improve security by making certificates valid for only 90 days instead of 10 years
- add SubjectAltName
- remove unnecessary parameters
- use carbon immutable to make sure expiration date stays the same
2025-01-30 19:52:21 +01:00
peaklabs-dev d280f11b6b feat(ssl): migrate to ECCcertificates using secp521r1
- Replace RSA 4096 with ECDSA secp521r1 for stronger security (256-bit vs 112-bit)
- Faster certificate generation (3-4x speed improvement)
- 75% smaller key sizes (0.8KB vs 3.2KB) improves storage and transmission
2025-01-30 19:21:18 +01:00
peaklabs-dev 546001890c chore(ssl): improve code in ssl helper 2025-01-30 14:37:12 +01:00
peaklabs-dev 3632f29af8 feat(ssl): ssl generation helper 2025-01-30 14:17:12 +01:00