Commit Graph

879 Commits (3adab36f05f001b29a541455c8c6992ba61b7aaa)

Author SHA1 Message Date
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 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
Richard Körber 8535bb1698
Remove JetBrains from sponsors
Thank you for the time you sponsored the Ultimate edition.
2023-01-28 13:14:38 +01:00
Richard Körber 120701494f
Fix broken README markdown 2022-11-26 12:30:31 +01:00
Richard Körber 39ddc8e837
Add reference to Mastodon feed 2022-11-26 12:23:47 +01:00
Richard Körber 861b3a1f81
[maven-release-plugin] prepare for next development iteration 2022-11-25 13:24:12 +01:00