Commit Graph

482 Commits

Author SHA1 Message Date
Richard Körber
b5a7e00ac3 Use example IPs according to RFC3849/RFC5737 2024-03-13 20:27:12 +01:00
Richard Körber
97a6708db3 [maven-release-plugin] prepare for next development iteration 2024-03-11 17:28:06 +01:00
Richard Körber
565eab9fa4 [maven-release-plugin] prepare release v3.2.1 2024-03-11 17:28:06 +01:00
Richard Körber
511954171d Use en locale for uppercase/lowercase (fixes #156) 2024-03-09 16:14:20 +01:00
Richard Körber
bbc057b81f Align unit test names 2024-02-29 17:06:18 +01:00
Richard Körber
65e6e28bff [maven-release-plugin] prepare for next development iteration 2024-02-28 18:02:55 +01:00
Richard Körber
c16d1a45cc [maven-release-plugin] prepare release v3.2.0 2024-02-28 18:02:55 +01:00
Richard Körber
f9d479a8f7 Simplify handling of Retry-After header 2024-02-26 18:26:45 +01:00
Richard Körber
908e11b152 Workaround for ssl.com metadata bug
ssl.com requires EAB for account creation, but the metadata's
"externalAccountRequired" property gives "false", indicating that no EAB
is used.

This fix patches the read directory's metadata if the ssl.com provider
is used.
2024-02-26 18:26:45 +01:00
Richard Körber
081e53f137 SSL.com: Add support for ECC and RSA mode 2024-02-26 18:26:45 +01:00
Richard Körber
98ef2b8466 Give instance URL if user action is required 2024-02-26 18:26:45 +01:00
Richard Körber
7c17645212 Add missing ssl.com unit tests 2024-02-26 18:26:45 +01:00
Richard Körber
60342c435f Add ZeroSSL provider
As ZeroSSL makes use of the Retry-After header, the example
implementation has also been changed accordingly.
2024-02-26 18:26:45 +01:00
George Fergadis
9c6eb5e610 Add SSL.com provider 2024-02-20 16:22:39 +01:00
Richard Körber
48c32f612d Upgrade to draft-ietf-acme-ari-03 2024-02-19 07:44:40 +01:00
Richard Körber
6a4770c23a Get unique identifier according to draft-ietf-acme-ari-03 2024-02-18 16:16:29 +01:00
Richard Körber
edb7ec83b6 Generic ACME URIs forward query parameters (#152) 2024-02-06 18:20:44 +01:00
Richard Körber
216d30b600 Minor JavaDoc change 2023-11-24 11:56:12 +01:00
Richard Körber
67a90df47f Do not set two CNs 2023-11-24 11:38:29 +01:00
Richard Körber
50a74251e0 setCommonName() sets CN only 2023-11-24 11:18:45 +01:00
Matthew McPherrin
278f9bd57b Test value changes
These are genuine functionality changes, and may represent unexpected
impact.  Having two CNs doesn't seem right, but that case is tested so
I'm leaving that here for discussion's sake.

The other test case doesn't have a CN anymore, as expected
2023-11-24 11:05:27 +01:00
Matthew McPherrin
beb1d53dc0 Make setCommonName go through the addValue path
This ensures the CN is present as a SAN
2023-11-24 11:05:27 +01:00
Matthew McPherrin
78ccae6bc9 SubjectAlternativeName should be critical for empty subject
Required by Java as well as the Baseline Requirements, RFC5280, etc.

If the subject field of the certificate is an empty SEQUENCE, this
extension MUST be marked critical, as specified in RFC 5280, Section
4.2.1.6. Otherwise, this extension MUST NOT be marked critical.
2023-11-24 11:05:27 +01:00
Matthew McPherrin
1cf53b6cf4 Make the Common Name optional in CSRs
This change doesn't set it by default when adding domains, and adds a
method to explicitly set it if desired.
2023-11-24 11:05:27 +01:00
Richard Körber
f428f1be9c [maven-release-plugin] prepare for next development iteration 2023-11-15 07:06:11 +01:00
Richard Körber
86c2647ff0 [maven-release-plugin] prepare release v3.1.1 2023-11-15 07:06:11 +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 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
aarcloudera
f61ef3ede7 Accepting hmac key of all sizes (#144) 2023-10-11 07:09:55 +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
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 2023-08-11 09:55:46 +02:00
Richard Körber
af9f236f90 Control gzip compression via system property 2023-08-11 09:45:38 +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
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
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