Commit Graph

783 Commits

Author SHA1 Message Date
Richard Körber
dd7c873750 [maven-release-plugin] prepare for next development iteration 2023-08-11 09:55:47 +02:00
Richard Körber
eea08053a2 [maven-release-plugin] prepare release v3.0.0 v3.0.0 2023-08-11 09:55:46 +02:00
Richard Körber
2336de4416 Announce EOL for v2 2023-08-11 09:47:08 +02:00
Richard Körber
af9f236f90 Control gzip compression via system property 2023-08-11 09:45:38 +02:00
Richard Körber
b7d17f3fba Link to sponsor sites 2023-08-11 09:12:30 +02:00
Mathias Loesch
0a45dcb4eb PebbleAcmeProvider: allow setting custom port w/o custom host
Simplifies usage with testcontainers where the Pebble port in
the Docker container usually gets mapped to a random host port.
2023-08-11 08:48:51 +02:00
Richard Körber
f2104335a8 Update dependency 2023-08-05 14:22:00 +02:00
Richard Körber
54f8b0d73f Enable sponsoring 2023-08-05 14:21:46 +02:00
Richard Körber
79c2ab7688 Minor documentation updates 2023-07-21 15:01:51 +02:00
Richard Körber
a648a513f6 Find certificates by issuer 2023-05-20 17:20:13 +02:00
Richard Körber
7f20545e14 Keep alternate certificate instances 2023-05-20 17:19:12 +02:00
Richard Körber
d9894f42eb Add support for draft-ietf-acme-ari-01 2023-05-20 16:53:18 +02:00
Richard Körber
727cd94028 Add method to read Retry-After header 2023-05-19 12:28:46 +02:00
Richard Körber
160f507767 Add method to get optional resource URL 2023-05-19 12:21:46 +02:00
Richard Körber
e8b83d6423 Automatically generate CSR in Order class
With this change, it is not stricly required anymore to create the CSR
oneself. The Order class contains all information to generate a basic
CSR itself.
2023-05-19 10:20:35 +02:00
Richard Körber
e22b47f140 Create tls-alpn-01 cert in challenge class 2023-05-19 10:20:07 +02:00
Richard Körber
16b02efe23 Merge acme4j-utils into acme4j-client
The separation of acme4j-client and acme4j-utils was a design decision
that should avoid BouncyCastle to be a hard dependency of acme4j-client.
Anyhow acme4j is not really usable without BouncyCastle, so acme4j-utils
is used in almost all projects anyway.

This merge allows to extend the client API with some nice methods that
will make it easier to use.
2023-05-19 09:58:08 +02:00
Richard Körber
c1ea9200ec Verify tls-alpn-01 certificate 2023-05-19 09:57:51 +02:00
Richard Körber
22e8969b89 Add utility method to write public key 2023-05-07 11:29:55 +02:00
Richard Körber
5db82b1ad7 Keep Authorization and Certificate
Before this patch, Order generated and bound new Authorization and
Certificate objects everytime the respective getters were invoked. Each
of these instances keeps a separate copy of the server state, which causes
unnecessary traffic.

With this patch, the list of Authorizations and the Certificates are now
loaded lazily and kept in a cache, so the same instance is returned
everytime the getter is invoked.
2023-05-07 10:48:34 +02:00
Richard Körber
c08c85b95c Return certificate on getAutoRenewalCertificate
Similar to getCertificate(), getAutoRenewalCertificate() would only
return an empty optional if the order state is not valid. To keep the
API simple, getAutoRenewalCertificate() now always returns a non-null
certificate, and throws an exception otherwise.
2023-05-07 09:25:22 +02:00
Richard Körber
c26d6b1f8a Optimize AssertJ exception checks 2023-05-07 09:25:04 +02:00
Richard Körber
aa5e78c525 getLocation() throws if header is missing
While reviewing the code, it turned out that the invoker of
getLocation() always expected to find a location header. To keep the API
simple, getLocation() now always returns the non-null Location header.
If the header is not present, an AcmeProtocolException is now thrown
instead.
2023-05-06 17:36:16 +02:00
Richard Körber
23906ff39c Add AcmeNotSupportedException
- Some Optional return values could only be empty if a method was
  invoked although the server did not support that feature. In order to
  keep the API simple, a newly introduced AcmeNotSupportedException is
  now thrown in that case, so these methods will immediately return a
  non-null value. There is always a method to check if a feature is
  available or not, so the invoker can check in advance and does not
  need to actively handle that exception.
- Some other places that previously threw an exception because of
  missing features, are now also throwing AcmeNotSupportedException for
  consistency.
2023-05-06 17:31:12 +02:00
Richard Körber
5bbf1b5966 getCertificate() is not Optional
getCertificate() would only return Optional.empty() if it was invoked
before the order was finalized. In order to keep the API simple, that
state will now throw an IllegalStateException, and getCertificate()
directly returns a non-null Certificate now.
2023-05-06 17:29:16 +02:00
Richard Körber
1907545e5d Review all @Nullable return values
- Most methods now return an Optional instead of a null value
- Reviewed all Collection return values. They may now be empty, but
  never null.
2023-05-06 17:27:36 +02:00
Richard Körber
18e56c9d4f Add Session.purgeDirectoryCache() 2023-04-29 15:15:41 +02:00
Richard Körber
d0c2aafaf1 Optimize collection handling 2023-04-29 15:15:22 +02:00
Richard Körber
00830858ca Add Login.newOrder() method 2023-04-29 15:14:51 +02:00
Richard Körber
01a2206c62 Accept mailto if present 2023-04-29 15:13:21 +02:00
Richard Körber
09a72d606b Review and extend JavaDocs 2023-04-29 15:11:00 +02:00
Richard Körber
41bc574f75 Enhance Accept-Language header
Before this patch, it was only the language tag of the selected Locale.
Now it also offers the language itself (without the country) and any
other available language as fallback. It is also possible to set the
locale to null, which will accept any language.
2023-04-24 21:52:18 +02:00
Richard Körber
b0287d4d94 Accept gzip compression 2023-04-24 21:23:58 +02:00
Richard Körber
783fdde013 Use the java.net.http client
With this patch, the old HttpURLConnection client is replaced with
the new java.net.http client that was introduced in Java 11.
2023-04-24 21:16:07 +02:00
Richard Körber
d6296111f7 Use wiremock to test HTTP client 2023-04-23 22:43:18 +02:00
Richard Körber
aeb68c0cb4 Remove deprecated methods 2023-04-23 13:13:27 +02:00
Richard Körber
0d55898379 Port codebase to Java 11 2023-04-23 13:13:27 +02:00
Richard Körber
fdc0fb94f1 Require Java 11 or higher 2023-04-23 13:12:27 +02:00
Richard Körber
41d9855bc0 Bump to v3.0.0, adhere to SemVer 2023-04-23 08:44:21 +02:00
Richard Körber
3b4591884b Extend FAQ 2023-04-21 12:52:49 +02:00
Richard Körber
65613afbd3 Temporarily disable blocking unit tests 2023-04-21 11:48:22 +02:00
Richard Körber
590b4e975b [maven-release-plugin] prepare for next development iteration 2023-02-11 16:55:27 +01:00
Richard Körber
9e3a5061c8 [maven-release-plugin] prepare release v2.16 v2.16 2023-02-11 16:55:27 +01:00
Richard Körber
372e39c28e Update dependencies 2023-02-11 16:53:10 +01:00
Richard Körber
db8eb4d012 Code cleanup
- Remove unused code
- Fix deprecated warnings
2023-02-11 16:45:13 +01:00
Richard Körber
aae98d7ce8 Add unit tests
- Unit tests for RFC-7508 type signatures
- Unit tests for evaluation of trusted headers
2023-02-11 16:42:48 +01:00
Richard Körber
2118fb8593 Update documentation 2023-01-28 16:10:19 +01:00
Richard Körber
9bddc07ed3 Add EmailProcessor.Builder for configuring verification 2023-01-28 16:10:02 +01:00
Richard Körber
0dff988b26 Add generateResponse without mail Session 2023-01-28 16:09:05 +01:00
Richard Körber
6f0a5c8707 Enhance validation of S/MIME challenge messages [WIP]
- Fully support S/MIME header protection
- Validation of signature using cacerts, certificates or other
  trust stores
- Improved checks of protected headers

Still missing:

- Unit tests
- EmailProcessor supporting all new features
2023-01-28 13:28:28 +01:00