View Source Changelog

0.6.0

Breaking: changed the endpoint setup. Previously the client code had to configure https via the Phoenix.Endpoint.init/2 callback. However, this callback is deprecated in the latest Phoenix, which now favours passing endpoint options via an argument to start_link/1 (or child_spec/1). This style was previously not supported by site_encrypt.

So to make all of this work, the setup flow has been changed and simplified. To upgrade from the previous version you need to do the following:

  1. Remove use SiteEncrypt.Phoenix from the endpoint module.
  2. Replace use Phoenix.Endpoint with use SiteEncrypt.Phoenix.Endpoint. Keep the :otp_app option.
  3. Remove invocation of SiteEncrypt.Phoenix.configure_https/1 from your endpoint's init/1.
  4. In the parent supervisor children list, replace the child {SiteEncrypt.Phoenix, MyEndpoint} with MyEndpoint.

Note that init/1 callback is deprecated. To specify endpoint config at runtime, you can use the spec {MyEndpoint, endpoint_config}. Alternatively, you can override the child_spec/1 function in the endpoint module:

# in your endpoint module

defoverridable child_spec: 1

def child_spec(_arg) do
  endpoint_config = [
    http: [...],
    https: [...],
    ...
  ]

  super(endpoint_config)
end

0.5.1

  • Support bandit 1.x

0.5.0

0.4.2

  • correctly handle relative paths

0.4.1

  • use dialyxir only on dev

0.4.0

This version upgrades to the Parent 0.11 and changes the internals. Strictly speaking this version doesn't change anything, so it could have been a patch update. However, moving to Parent 0.11 might introduce breaking changes in the client code, so the major version is bumped.

0.3.1

  • Fixes invalid dependency requirement.

0.3.0

Additions and non-breaking changes

  • Exposed lower-level ACME client API functions through SiteEncrypt.Acme.Client and SiteEncrypt.Acme.Client.API.
  • Native client keeps the history of old keys.
  • Key size is configurable, with the default of 4096.
  • Added support for manual production testing through SiteEncrypt.dry_certify/2. See "Testing in production" section in readme for details.
  • Renewal happens at a random time of day to avoid possible spikes on CA.

Breaking changes

  • The internal folders structure has been changed. If you're running a site_encrypt system in production and using the certbot client, you need to create the folder acme-v02.api.letsencrypt.org (assuming you're using Let's Encrypt production) under db_folder/certbot, and then recursively copy the contents of db_folder/certbot into the new folder. If you're using the native client, you don't need to do anything.

0.2.0

Breaking changes

  • The interface for writing tests has been changed. A certification test should now be written as

      defmodule MyEndpoint.CertificationTest do
        use ExUnit.Case, async: false
        import SiteEncrypt.Phoenix.Test
    
        test "certification" do
          clean_restart(MyEndpoint)
          cert = get_cert(MyEndpoint)
          assert cert.domains == ~w/mysite.com www.mysite.com/
        end
      end

0.1.0

  • added a basic native ACME client
  • simplified interface
  • improved tests
  • expanded docs

This version introduces many breaking changes. If you've been using a pre 0.1 version, here's how to upgrade your project:

  1. In your endpoint, replace @behaviour SiteEncrypt with use SiteEncrypt.Phoenix
  2. Also in the endpoint, change the certification/0 callback to pass the options to SiteEncrypt.configure/1 instead of just returning them.
  3. Changes in options:
    • :mode is no longer supported. Manual mode will be automatically set in tests.
    • use :domains instead of :domain and :extra_domain
    • :ca_url has been renamed to directory_url
    • :email has been renamed to emails and must be a list
    • :base_folder has been renamed to :db_folder
    • :cert_folder is no longer supported. It will chosen automatically inside the :db_folder
  4. The internal folders structure has been changed. If you're running a site_encrypt system in production, you need to create the folder called certbot inside the :db_folder, and recurisvely copy top-level folders under :db_folder into the newly created certbot folder.
  5. If you have been using SiteEncrypt.Phoenix.Test.verify_certification for certification testing, drop that test, and add the following module somewhere in your test suite:
     defmodule CertificationTest do
       use SiteEncrypt.Phoenix.Test, endpoint: MyEndpoint
     end