You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

466 lines
12 KiB

5 years ago
1 month ago
12 months ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. [//]: # (Copyright 2019-2020 Rodolphe Bréard <rodolphe@breard.tf>)
  2. [//]: # (Copying and distribution of this file, with or without modification,)
  3. [//]: # (are permitted in any medium without royalty provided the copyright)
  4. [//]: # (notice and this notice are preserved. This file is offered as-is,)
  5. [//]: # (without any warranty.)
  6. # Changelog
  7. All notable changes to this project will be documented in this file.
  8. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
  9. and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
  10. ## [Unreleased]
  11. ### Added
  12. - Logging facilities can now be defined in the configuration file.
  13. ### Changed
  14. - Instead of loading a default configuration file, ACMEd now loads all the
  15. files from a default configuration directory (by default,
  16. `/etc/acmed/conf-enabled`).
  17. - The configuration arrays for accounts, endpoints, rate limits, hooks and
  18. groups has been replaced by tables.
  19. - The name of user-defined hooks and groups cannot start with `internal:`,
  20. which is now reserved for internal hooks.
  21. - The default logging level is now info.
  22. ### Removed
  23. - OpenSSL support has been removed.
  24. - tacd has been removed.
  25. - The `include` directive has been removed from the configuration.
  26. - The `acmed` command does not accepts the `--log-stderr`, `--log-syslog` and
  27. `--log-level` arguments anymore.
  28. ### Fixed
  29. - Logging to syslog now uses the daemon facility.
  30. ## [0.24.0] - 2024-12-21
  31. ### Added
  32. - The file extension can now be customized.
  33. ### Changed
  34. - tacd does no longer supports OpenSSL 1.0.
  35. ## [0.23.0] - 2024-02-10
  36. ### Added
  37. - The `challenge-tls-alpn-01` hook now exposes the `raw_proof` variable, which
  38. contains the SHA-256 digest of the key authorization, encoded using Base64
  39. URL scheme without padding.
  40. ### Changed
  41. - The minimum supported Rust version (MSRV) is now 1.74.
  42. ## [0.22.2] - 2024-01-09
  43. ### Fixed
  44. - The default hooks were not properly updated during the 0.22.0 release, which
  45. causes the certificate renewal to fail.
  46. ## [0.22.1] - 2023-12-20
  47. ### Fixed
  48. - The `Cargo.lock` file is now updated before a new version is released (GitHub
  49. bug #103).
  50. ## [0.22.0] - 2023-12-20
  51. ### Fixed
  52. - ACMEd no longer crashes when the `random_early_renew` parameter is set to
  53. zero (GitHub bug #102).
  54. ### Changed
  55. - The minimum supported Rust version (MSRV) is now 1.70.
  56. - Manual (and badly designed) threads have been replaced by async.
  57. - Randomized early delay, for spacing out renewals when dealing with a lot of
  58. certificates.
  59. - Replaced the template engine TinyTemplate with MiniJinja.
  60. - The default period of time between the certificate renewal and its expiration
  61. date (`renew_delay`) has been changed from 3 weeks to 30 days.
  62. ## [0.21.0] - 2022-12-19
  63. ### Fixed
  64. - The JWK representation of ECDSA keys now have their coordinates padded.
  65. ### Changed
  66. - The minimal required Rust version is now 1.60.
  67. ## [0.20.0] - 2022-05-08
  68. ### Added
  69. - The `--no-pid-file` argument has been added to ACMEd and tacd.
  70. ### Fixed
  71. - An invalid reference in the command line arguments has been fixed.
  72. - Some missing file path in log messages has been added.
  73. - The calculation of the certificate's expiration delay does no longer break
  74. compilation on some systems.
  75. ## [0.19.0] - 2022-04-17
  76. ### Added
  77. - The `acmed@user.service` systemd unit configuration has been added as an
  78. alternative to the `acmed.service` unit.
  79. ### Changed
  80. - The minimal required Rust version is now 1.54.
  81. ## [0.18.0] - 2021-06-13
  82. ### Added
  83. - Add support for Ed25519 and Ed448 account keys and certificates.
  84. - In addition to `restart`, the Polkit rule also allows the `reload`,
  85. `try-restart`, `reload-or-restart` and `try-reload-or-restart` verbs.
  86. ## [0.17.0] - 2021-05-04
  87. ### Added
  88. - Allow the configuration of some default values at compile time using
  89. environment variables.
  90. ### Changed
  91. - The template engine has been changed in favor of TinyTemplate, which has a
  92. different syntax than the previous one.
  93. - The default account directory now is `/var/lib/acmed/accounts`.
  94. - The default certificates and private keys directory now is
  95. `/var/lib/acmed/certs`.
  96. - The default for volatile runtime data now is `/run`.
  97. ## [0.16.0] - 2020-11-11
  98. ### Added
  99. - The `pkcs9_email_address`, `postal_address` and `postal_code` subject
  100. attributes has been added.
  101. ### Changed
  102. - The `friendly_name` and `pseudonym` subject attributes has been removed.
  103. - The `street_address` subject attribute has been renamed `street`.
  104. ## [0.15.0] - 2020-11-03
  105. ### Added
  106. - The names of both the certificate file and the associated private key can now
  107. be configured.
  108. ### Fixed
  109. - Configuration files cannot be loaded more than one time, which prevents
  110. infinite recursion.
  111. ### Changed
  112. - Certificates are now allowed to share the same name if their respective key
  113. type is different.
  114. ## [0.14.0] - 2020-10-27
  115. ### Added
  116. - Add proxy support through the `HTTP_PROXY`, `HTTPS_PROXY` and `NO_PROXY`
  117. environment variables.
  118. - Allow to specify a unique name for each certificate.
  119. ### Changed
  120. - The minimal required Rust version is 1.42.0.
  121. ## [0.13.0] - 2020-10-10
  122. ### Added
  123. - In the configuration, `root_certificates` has been added to the `global` and
  124. `endpoint` sections as an array of strings representing the path to root
  125. certificate files.
  126. - At compilation, it is now possible to statically link OpenSSL using the
  127. `openssl_vendored` feature.
  128. - In the Makefile, it is now possible to specify which target triple to build
  129. for.
  130. ## [0.12.0] - 2020-09-26
  131. ### Added
  132. - Some subject attributes can now be specified.
  133. - Support for NIST P-521 certificates and account keys.
  134. ### Fixed
  135. - Support for Let's Encrypt non-standard account creation object.
  136. ## [0.11.0] - 2020-09-19
  137. ### Added
  138. - The `contacts` account configuration field has been added.
  139. - External account binding.
  140. ### Changed
  141. - The `email` account configuration field has been removed. In replacement, use
  142. the `contacts` field.
  143. - Accounts now have their own hooks and environment.
  144. - Accounts are now stored in a single binary file.
  145. ### Fixed
  146. - ACMEd can now build on platforms with a `time_t` not defined as an `i64`.
  147. - The Makefile is now fully works on FreeBSD.
  148. ## [0.10.0] - 2020-08-27
  149. ### Added
  150. - The account key type and signature algorithm can now be specified in the
  151. configuration using the `key_type` and `signature_algorithm` parameters.
  152. - The delay to renew a certificate before its expiration date can be specified
  153. in the configuration using the `renew_delay` parameter at either the
  154. certificate, endpoint and global level.
  155. - It is now possible to specify IP identifiers (RFC 8738) using the `ip`
  156. parameter instead of the `dns` one.
  157. - The hook templates of type `challenge-*` have a new `identifier_tls_alpn`
  158. field which contains, if available, the identifier in a form that is suitable
  159. to the TLS ALPN challenge.
  160. - Globing is now supported for configuration files inclusion.
  161. - The CSR's digest algorithm can now be specified using the `csr_digest`
  162. parameter.
  163. ### Changed
  164. - In the certificate configuration, the `domains` field has been renamed
  165. `identifiers`.
  166. - The `algorithm` certificate configuration field has been renamed `key_type`.
  167. - The `algorithm` hook template variable has been renamed `key_type`.
  168. - The `domain` hook template variable has been renamed `identifier`.
  169. - The default hooks have been updated.
  170. ### Fixed
  171. - The Makefile now works on FreeBSD. It should also work on other BSD although
  172. it has not been tested.
  173. ## [0.9.0] - 2020-08-01
  174. ### Added
  175. - System users and groups can now be specified by name in addition to uid/gid.
  176. ### Changed
  177. - The HTTP(S) part is now handled by `attohttpc` instead of `reqwest`.
  178. ### Fixed
  179. - In tacd, the `--acme-ext-file` parameter is now in conflict with `acme-ext`
  180. instead of itself.
  181. ## [0.8.0] - 2020-06-12
  182. ### Changed
  183. - The HTTP(S) part is now handled by `reqwest` instead of `http_req`.
  184. ### Fixed
  185. - `make install` now work with the busybox toolchain.
  186. ## [0.7.0] - 2020-03-12
  187. ### Added
  188. - Wildcard certificates are now supported. In the file name, the `*` is
  189. replaced by `_`.
  190. - Internationalized domain names are now supported.
  191. ### Changed
  192. - The PID file is now always written whether or not ACMEd is running in the
  193. foreground. Previously, it was written only when running in the background.
  194. ### Fixed
  195. - In the directory, the `externalAccountRequired` field is now a boolean
  196. instead of a string.
  197. ## [0.6.1] - 2019-09-13
  198. ### Fixed
  199. - A race condition when requesting multiple certificates on the same
  200. non-existent account has been fixed.
  201. - The `foregroung` option has been renamed `foreground`.
  202. ## [0.6.0] - 2019-06-05
  203. ### Added
  204. - Hooks now have the optional `allow_failure` field.
  205. - In hooks, the `stdin_str` has been added in replacement of the previous
  206. `stdin` behavior.
  207. - HTTPS request rate limits.
  208. ### Changed
  209. - Certificates are renewed in parallel.
  210. - Hooks are now cleaned right after the current challenge has been validated
  211. instead of after the certificate's retrieval.
  212. - In hooks, the `stdin` field now refers to the path of the file that should be
  213. written into the hook's standard input.
  214. - The logging format has been re-written.
  215. ### Fixed
  216. - The http-01-echo hook now correctly sets the file's access rights
  217. ## [0.5.0] - 2019-05-09
  218. ### Added
  219. - ACMEd now displays a warning when the server indicates an error in an order
  220. or an authorization.
  221. - A configuration file can now include several other files.
  222. - Hooks have access to environment variables.
  223. - In the configuration, the global section, certificates and domains can define
  224. environment variables for the hooks.
  225. - tacd is now able to listen on a unix socket.
  226. ## [0.4.0] - 2019-05-08
  227. ### Added
  228. - Man pages.
  229. - The project can now be built and installed using `make`.
  230. - The post-operation hooks now have access to the `is_success` template
  231. variable.
  232. - Challenge hooks now have the `is_clean_hook` template variable.
  233. - An existing certificate will be renewed if more domains have been added in
  234. the configuration.
  235. ### Changed
  236. - Unknown configuration fields are no longer tolerated.
  237. ### Removed
  238. - In challenge hooks, the `algorithm` template variable has been removed.
  239. ### Fixed
  240. - In some cases, ACMEd was unable to parse a certificate's expiration date.
  241. ## [0.3.0] - 2019-04-30
  242. ### Added
  243. - tacd, the TLS-ALPN-01 validation daemon.
  244. - An account object has been added in the configuration.
  245. - In the configuration, hooks now have a mandatory `type` variable.
  246. - It is now possible to declare hooks to clean after the challenge validation
  247. hooks.
  248. - The CLI `--root-cert` option has been added.
  249. - Failure recovery: HTTPS requests rejected by the server that are recoverable,
  250. like the badNonce error, are now retried several times before being
  251. considered a hard failure.
  252. - The TLS-ALPN-01 challenge is now supported. The proof is a string
  253. representation of the acmeIdentifier extension. The self-signed certificate
  254. itself has to be built by a hook.
  255. ### Changed
  256. - In the configuration, the `email` certificate field has been replaced by the
  257. `account` field which matches an account object.
  258. - The format of the `domain` configuration variable has changed and now
  259. includes the challenge type.
  260. - The `token` challenge hook variable has been renamed `file_name`.
  261. - The `challenge_hooks`, `post_operation_hooks`, `file_pre_create_hooks`,
  262. `file_post_create_hooks`, `file_pre_edit_hooks` and `file_post_edit_hooks`
  263. certificate variables has been replaced by `hooks`.
  264. - The logs has been purged from many useless debug and trace entries.
  265. ### Removed
  266. - The DER storage format has been removed.
  267. - The `challenge` certificate variables has been removed.
  268. ## [0.2.1] - 2019-03-30
  269. ### Fixed
  270. - The bug that prevented from requesting more than two certificates has been
  271. fixed.
  272. ## [0.2.0] - 2019-03-27
  273. ### Added
  274. - The `kp_reuse` flag allow to reuse a key pair instead of creating a new one
  275. at each renewal.
  276. - It is now possible to define hook groups that can reference either hooks or
  277. other hook groups.
  278. - Hooks can be defined when before and after a file is created or edited
  279. (`file_pre_create_hooks`, `file_post_create_hooks`, `file_pre_edit_hooks` and
  280. `file_post_edit_hooks`).
  281. - It is now possible to send logs either to syslog or stderr using the
  282. `--to-syslog` and `--to-stderr` arguments.
  283. ### Changed
  284. - `post_operation_hook` has been renamed `post_operation_hooks`.
  285. - By default, logs are now sent to syslog instead of stderr.
  286. - The process is now daemonized by default. It is possible to still run it in
  287. the foreground using the `--foregroung` flag.