################## 3.0.0 (2026-04-05) ################## * **BACKWARDS INCOMPATIBLE:** Drop support for ``SECT*`` binary elliptic curves. Cryptography deprecated them in ``cryptography==46.0.5`` and will remove them in their next release. * Quickstart guides have been rewritten using `structured-tutorials `_ to make them testable. * The :doc:`Quickstart from source ` was extensively rewritten to include setup instructions for MariaDB, RabbitMQ and Memcached in addition to the default PostreSQL and Redis. ******** Settings ******** * Mirroring upcoming changes to the maximum lifespan of public certificates, the *default* for validity for certificates was changed: * :ref:`CA_DEFAULT_EXPIRES ` now defaults to 100 days. * :ref:`CA_ACME_DEFAULT_CERT_VALIDITY ` now defaults to 45 days. * Note that this only affects the default, you can still change the settings to whatever you want. * :ref:`CA_DEFAULT_EXPIRES ` and :ref:`CA_ACME_MAX_CERT_VALIDITY ` will be reduced to 47 days in ``django-ca~=4.0.0``. * Some standard non-string Django settings (like ``ALLOWED_HOSTS``, ``CACHES`` and ``DATABASES``) can now also be set with environment variables, see :ref:`settings-project-3rd-party` for more information. * Boolean settings (e.g. :ref:`CA_ENABLE_ACME ` or :ref:`CA_ENABLE_REST_API `) are now parsed using Pydantic model validation. This makes parsing of environment variables more strict, as the value is no longer lower-cased and stripped of whitespace. As a result, values like ``" true "`` or ``"yEs"`` are no longer recognized. * `EXTEND_*` settings from environment variables no longer override settings from files. * ``CA_CUSTOM_APPS`` was removed, it is replaced with :ref:`EXTEND_INSTALLED_APPS ` (the setting was deprecated since ``django-ca==2.2.0`` and was even marked for removal for ``django-ca==2.5.0`` already). * The ``CA_DEFAULT_KEY_BACKEND`` setting was removed, as changing the setting can lead to an unexpected configurations. Minor changes ============= * Raise an error if :ref:`CA_ACME_MAX_CERT_VALIDITY ` is *lower* then :ref:`CA_ACME_DEFAULT_CERT_VALIDITY `. * The (previously undocumented) ``CA_DEFAULT_OCSP_KEY_BACKEND`` setting was removed. ******************* Setup and packaging ******************* * Systemd services now use various security directives (such as ``ProtectSystem=``) to secure the system. * Docker images now also load configuration from ``conf/local/``. Previously, this directory was only added in the Compose setup. * The Alpine variant of the Docker image now also sets ``VIRTUAL_ENV`` as environment variable. * **BACKWARDS INCOMPATIBLE:** For Docker images, the ``DJANGO_CA_STARTUP_REGENERATE_OCSP_KEYS`` environment variable was renamed to ``DJANGO_CA_STARTUP_GENERATE_OCSP_KEYS`` for consistency. ************* OCSP and CRLs ************* * CRLs are now only regenerated if they expire within a renewal interval, similar to OCSP keys. This enables running the task to generate CRLs much more frequently and only re-generating CRLs when required. * Celery tasks and management commands now accept key backend options when acting on a single CA and an `exclude` parameter to exclude CAs. This allows you to exclude CAs that require special key backend options (e.g. a password) from the default periodic task, and adding an additional, dedicated periodic task with key backend options for that CA. ************ Command-line ************ * **BACKWARDS INCOMPATIBLE:** The `dump_ca` and `dump_cert` commands where removed (deprecated since 2.4.0). * The `cache_crls` command was renamed to :command:`manage.py generate_crls` for consistency. The old name will be removed in ``django-ca~=3.2.0``. * The `regenerate_ocsp_keys` command was renamed to :command:`manage.py generate_ocsp_keys` for consistency. The old name will be removed in ``django-ca~=3.2.0``. * :command:`manage.py generate_crls` now allows passing key backend options if exactly one CA is specified. * :command:`manage.py generate_crls` and :command:`manage.py generate_ocsp_keys` now use a unified interface and have the same arguments. * :command:`manage.py generate_crls` and :command:`manage.py generate_ocsp_keys` now allow forcing generation of CRLs/OCSP keys (even if not due for renewal) and excluding CAs from renewal. ************ Celery tasks ************ * The `cache_crl` task was renamed to :py:func:`~django_ca.tasks.generate_crl` for consistency. The old task name will be removed in ``django-ca~=3.1.0``. * The `cache_crls` task was renamed to :py:func:`~django_ca.tasks.generate_crls` for consistency. The old task name will be removed in ``django-ca~=3.1.0``. * **BACKWARDS INCOMPATIBLE:** Arguments to Celery tasks are now passed as Pydantic models, greatly improving type safety. This will require you to change your code if you call the task directly. * :py:func:`~django_ca.tasks.generate_crls` and :py:func:`~django_ca.tasks.generate_ocsp_keys` now support the `force` parameter to force generating CRLs/OCSP keys, even if not due for renewal. * :py:func:`~django_ca.tasks.generate_crls` and :py:func:`~django_ca.tasks.generate_ocsp_keys` now support the `exclude` parameter to exclude CAs from generating CRLs/OCSP keys. ***** Views ***** * The `expires` parameter for :py:class:`~django_ca.views.OCSPView` should now be a :py:class:`~datetime.timedelta`. Support for passing an ``int`` is deprecated and will be removed in ``django-ca~=3.1.0``. ************ Dependencies ************ * Add support for ``acme~=5.3.0`` and ``acme~=5.4.0`` . * Add a ``memcached`` extra to install Memcached support via `pymemcache `_. * **BACKWARDS INCOMPATIBLE:** Dropped support for Python 3.10. * **BACKWARDS INCOMPATIBLE:** Dropped support for ``cryptography~=45.0``. * **BACKWARDS INCOMPATIBLE:** Dropped support for ``pydantic~=2.11.0``. * **BACKWARDS INCOMPATIBLE:** Dropped support for ``acme~=5.0.0`` and ``acme~=5.1.0``. * **BACKWARDS INCOMPATIBLE:** Dropped support for ``josepy~=2.1.0``. * **BACKWARDS INCOMPATIBLE:** Dropped support for Alpine 3.20 and Alpine 3.21. * **BACKWARDS INCOMPATIBLE:** Dropped support for Debian 11 (Bullseye) and Debian 12 (Bookworm). * **BACKWARDS INCOMPATIBLE:** Dropped support for Ubuntu 25.04 (Plucky Puffin). ******************* Deprecation notices ******************* * This is the last release to support ``acme~=5.2.0`` and ``acme~=5.3.0``.