Commit Graph

794 Commits

Author SHA1 Message Date
Richard Körber
86c2647ff0 [maven-release-plugin] prepare release v3.1.1 v3.1.1 2023-11-15 07:06:11 +01:00
Richard Körber
be7e9a690a Update dependencies 2023-11-15 07:04:52 +01:00
Richard Körber
a9bfc8b46e [maven-release-plugin] prepare for next development iteration 2023-10-11 07:20:24 +02:00
Richard Körber
04fe10c55b [maven-release-plugin] prepare release v3.1.0 v3.1.0 2023-10-11 07:20:24 +02:00
Richard Körber
e041decf48 Mark ARI related methods as draft 2023-10-11 07:17:59 +02:00
Richard Körber
78d73d96aa Update dependencies 2023-10-11 07:15:42 +02:00
aarcloudera
f61ef3ede7 Accepting hmac key of all sizes (#144) 2023-10-11 07:09:55 +02:00
Richard Körber
5ef39534ec Remove spotbugs workaround 2023-09-27 18:45:29 +02:00
Richard Körber
2485666b87 Add missing acme-ari-01 call 2023-09-27 18:45:20 +02:00
Richard Körber
3ad325782b Add method to set arbitrary MAC algorithm (#141) 2023-09-22 11:20:31 +02:00
Richard Körber
4da80d4da7 Update dependencies 2023-09-21 12:03:45 +02:00
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