Commit Graph

806 Commits (edb7ec83b64a1dea9348bc3731e5610171b5b700)

Author SHA1 Message Date
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 e26f8fc572
Add question to FAQ 2023-11-24 11:02:49 +01:00
Richard Körber f9b3242f4c
Improve documentation
- Rearranged all chapters. It makes content easier to find, as it is not
  buried in unrelated information now.
- Reviewed the content.
- Fixed broken links.
- Added documentation about Renewal Information and Exceptions
2023-11-24 11:00:29 +01:00
Richard Körber e3cc271cd8
Fix unit tests 2023-11-19 21:33:21 +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 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 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 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