Disable ssl.com staging unit tests

The ssl.com staging server's certificate seems to be unmonitored,
causing the acme4j build chain to break from time to time when their
certificate has expired. As this is blocking development, I have
decided to disable all related unit tests, and add a corresponding
note to the documentation.

The acme4j ssl.com provider is marked as experimental now, since it
is not fully covered by unit tests anymore.
pull/168/head
Richard Körber 2024-06-30 10:43:36 +02:00
parent a9ce33a921
commit ae60431a79
No known key found for this signature in database
GPG Key ID: AAB9FD19C78AA3E0
3 changed files with 26 additions and 7 deletions

View File

@ -19,6 +19,7 @@ import static org.assertj.core.api.Assertions.assertThatNoException;
import java.net.MalformedURLException;
import java.net.URL;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.shredzone.acme4j.Session;
import org.shredzone.acme4j.connector.Resource;
@ -67,7 +68,7 @@ public class ProviderIT {
}
/**
* Test ssl.com
* Test ssl.com, production
*/
@Test
public void testSslCom() throws AcmeException, MalformedURLException {
@ -83,6 +84,18 @@ public class ProviderIT {
assertThat(sessionRsa.getMetadata().isExternalAccountRequired()).isTrue();
assertThat(sessionRsa.getMetadata().isAutoRenewalEnabled()).isFalse();
// If this test fails, the metadata has been fixed on server side. Then remove
// the patch at ZeroSSLAcmeProvider, and update the documentation.
var sessionEABCheck = new Session("https://acme.ssl.com/sslcom-dv-ecc");
assertThat(sessionEABCheck.getMetadata().isExternalAccountRequired()).isFalse();
}
/**
* Test ssl.com, staging server
*/
@Test
@Disabled("Instable due to frequent certificate expiration of acme-try.ssl.com")
public void testSslComStaging() throws AcmeException, MalformedURLException {
var sessionEccStage = new Session("acme://ssl.com/staging/ecc");
assertThat(sessionEccStage.getMetadata().getWebsite()).hasValue(new URL("https://www.ssl.com"));
assertThatNoException().isThrownBy(() -> sessionEccStage.resourceUrl(Resource.NEW_ACCOUNT));
@ -95,10 +108,8 @@ public class ProviderIT {
assertThat(sessionRsaStage.getMetadata().isExternalAccountRequired()).isTrue();
assertThat(sessionRsaStage.getMetadata().isAutoRenewalEnabled()).isFalse();
// If these tests fail, the metadata have been fixed on server side. Then remove
// If this test fails, the metadata has been fixed on server side. Then remove
// the patch at ZeroSSLAcmeProvider, and update the documentation.
var sessionEABCheck = new Session("https://acme.ssl.com/sslcom-dv-ecc");
assertThat(sessionEABCheck.getMetadata().isExternalAccountRequired()).isFalse();
var sessionEABCheckStage = new Session("https://acme-try.ssl.com/sslcom-dv-ecc");
assertThat(sessionEABCheckStage.getMetadata().isExternalAccountRequired()).isFalse();
}

11
pom.xml
View File

@ -55,6 +55,7 @@
<httpclient.version>4.5.14</httpclient.version>
<jakarta.mail.version>2.0.1</jakarta.mail.version>
<jose4j.version>0.9.6</jose4j.version>
<junit.version>5.10.2</junit.version>
<slf4j.version>2.0.13</slf4j.version>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding>
@ -189,13 +190,19 @@
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.10.2</version>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.10.2</version>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>

View File

@ -2,7 +2,7 @@
Web site: [SSL.com](https://ssl.com)
Available since acme4j 3.2.0
Available since acme4j 3.2.0. **This provider is experimental!**
## Connection URIs
@ -14,6 +14,7 @@ Available since acme4j 3.2.0
## Note
* This CA requires [External Account Binding (EAB)](../usage/account.md#external-account-binding) for account creation. However, the CA's directory resource returns `externalAccountRequired` as `false`, which is incorrect. If you use one of the `acme:` URIs above, _acme4j_ will patch the metadata transparently. If you directly connect to SSL.com via `https:` URI though, `Metadata.isExternalAccountRequired()` could return a wrong value. (As of February 2024)
* The certificate of the ssl.com staging server seems to be unmonitored. When it expires, an `AcmeNetworkException` is thrown which is caused by a `CertificateExpiredException`. There is nothing you can do to fix this error, except to ask the ssl.com support to renew the expired certificate on their server. **Please do not open an issue at acme4j.** (As of June 2024)
## Disclaimer