diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/Registration.java b/acme4j-client/src/main/java/org/shredzone/acme4j/Account.java similarity index 88% rename from acme4j-client/src/main/java/org/shredzone/acme4j/Registration.java rename to acme4j-client/src/main/java/org/shredzone/acme4j/Account.java index 14869b4d..7916631b 100644 --- a/acme4j-client/src/main/java/org/shredzone/acme4j/Registration.java +++ b/acme4j-client/src/main/java/org/shredzone/acme4j/Account.java @@ -45,11 +45,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Represents a registration at the ACME server. + * Represents an account at the ACME server. */ -public class Registration extends AcmeResource { - private static final long serialVersionUID = -8177333806740391140L; - private static final Logger LOG = LoggerFactory.getLogger(Registration.class); +public class Account extends AcmeResource { + private static final long serialVersionUID = 7042863483428051319L; + private static final Logger LOG = LoggerFactory.getLogger(Account.class); private static final String KEY_TOS_AGREED = "terms-of-service-agreed"; private static final String KEY_ORDERS = "orders"; @@ -62,23 +62,23 @@ public class Registration extends AcmeResource { private URL orders; private boolean loaded = false; - protected Registration(Session session, URL location) { + protected Account(Session session, URL location) { super(session); setLocation(location); session.setKeyIdentifier(location.toString()); } /** - * Creates a new instance of {@link Registration} and binds it to the {@link Session}. + * Creates a new instance of {@link Account} and binds it to the {@link Session}. * * @param session * {@link Session} to be used * @param location - * Location URI of the registration - * @return {@link Registration} bound to the session and location + * Location URI of the account + * @return {@link Account} bound to the session and location */ - public static Registration bind(Session session, URL location) { - return new Registration(session, location); + public static Account bind(Session session, URL location) { + return new Account(session, location); } /** @@ -101,7 +101,7 @@ public class Registration extends AcmeResource { } /** - * Returns the current status of the registration. + * Returns the current status of the account. */ public Status getStatus() { load(); @@ -109,8 +109,7 @@ public class Registration extends AcmeResource { } /** - * Returns an {@link Iterator} of all {@link Order} belonging to this - * {@link Registration}. + * Returns an {@link Iterator} of all {@link Order} belonging to this {@link Account}. *
* Using the iterator will initiate one or more requests to the ACME server. * @@ -126,7 +125,7 @@ public class Registration extends AcmeResource { } /** - * Updates the registration to the current account status. + * Updates the account to the current account status. */ public void update() throws AcmeException { LOG.debug("update"); @@ -141,7 +140,7 @@ public class Registration extends AcmeResource { } /** - * Orders a certificate. The certificate will be associated with this registration. + * Orders a certificate. The certificate will be associated with this account. * * @param csr * CSR containing the parameters for the certificate being requested @@ -222,7 +221,7 @@ public class Registration extends AcmeResource { } /** - * Changes the {@link KeyPair} associated with the registration. + * Changes the {@link KeyPair} associated with the account. *
* After a successful call, the new key pair is used in the bound {@link Session},
* and the old key pair can be disposed of.
@@ -305,7 +304,7 @@ public class Registration extends AcmeResource {
}
/**
- * Sets registration properties according to the given JSON data.
+ * Sets account properties according to the given JSON data.
*
* @param json
* JSON data
@@ -335,22 +334,22 @@ public class Registration extends AcmeResource {
}
/**
- * Modifies the registration data of the account.
+ * Modifies the account data of the account.
*
- * @return {@link EditableRegistration} where the account can be modified
+ * @return {@link EditableAccount} where the account can be modified
*/
- public EditableRegistration modify() {
- return new EditableRegistration();
+ public EditableAccount modify() {
+ return new EditableAccount();
}
/**
- * Editable {@link Registration}.
+ * Editable {@link Account}.
*/
- public class EditableRegistration {
+ public class EditableAccount {
private final List
* This is a convenience call for {@link #addContact(URI)}.
*
@@ -382,7 +381,7 @@ public class Registration extends AcmeResource {
* Contact URI as string
* @return itself
*/
- public EditableRegistration addContact(String contact) {
+ public EditableAccount addContact(String contact) {
addContact(URI.create(contact));
return this;
}
diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/RegistrationBuilder.java b/acme4j-client/src/main/java/org/shredzone/acme4j/AccountBuilder.java
similarity index 87%
rename from acme4j-client/src/main/java/org/shredzone/acme4j/RegistrationBuilder.java
rename to acme4j-client/src/main/java/org/shredzone/acme4j/AccountBuilder.java
index 9077369a..0ef66e80 100644
--- a/acme4j-client/src/main/java/org/shredzone/acme4j/RegistrationBuilder.java
+++ b/acme4j-client/src/main/java/org/shredzone/acme4j/AccountBuilder.java
@@ -34,10 +34,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * A builder for a new account registration.
+ * A builder for registering a new account.
*/
-public class RegistrationBuilder {
- private static final Logger LOG = LoggerFactory.getLogger(RegistrationBuilder.class);
+public class AccountBuilder {
+ private static final Logger LOG = LoggerFactory.getLogger(AccountBuilder.class);
private List
- * This is a simple way of finding your {@link Registration}. A better way is to get
- * the URI of your new registration with {@link Registration#getLocation()} and store
+ * This is a simple way of finding your {@link Account}. A better way is to get
+ * the URI of your new account with {@link Account#getLocation()} and store
* it somewhere. If you need to get access to your account later, reconnect to it via
- * {@link Registration#bind(Session, URI)} by using the stored location.
+ * {@link Account#bind(Session, URI)} by using the stored location.
*
* @param session
* {@link Session} to bind with
- * @return {@link Registration} connected to your account
+ * @return {@link Account} connected to your account
*/
- private Registration findOrRegisterAccount(Session session) throws AcmeException {
+ private Account findOrRegisterAccount(Session session) throws AcmeException {
// Ask the user to accept the TOS, if server provides us with a link.
URI tos = session.getMetadata().getTermsOfService();
if (tos != null) {
acceptAgreement(tos);
}
- Registration reg = new RegistrationBuilder().agreeToTermsOfService().create(session);
- LOG.info("Registered a new user, URI: " + reg.getLocation());
+ Account acct = new AccountBuilder().agreeToTermsOfService().create(session);
+ LOG.info("Registered a new user, URI: " + acct.getLocation());
- return reg;
+ return acct;
}
/**
@@ -202,14 +202,14 @@ public class ClientTest {
* You need separate authorizations for subdomains (e.g. "www" subdomain). Wildcard
* certificates are not currently supported.
*
- * @param reg
- * {@link Registration} of your account
+ * @param acct
+ * {@link Account} of your account
* @param domain
* Name of the domain to authorize
*/
- private void authorize(Registration reg, String domain) throws AcmeException {
+ private void authorize(Account acct, String domain) throws AcmeException {
// Authorize the domain.
- Authorization auth = reg.preAuthorizeDomain(domain);
+ Authorization auth = acct.preAuthorizeDomain(domain);
LOG.info("Authorization for domain " + domain);
// Find the desired challenge and prepare it.
diff --git a/acme4j-it/src/test/java/org/shredzone/acme4j/it/RegistrationIT.java b/acme4j-it/src/test/java/org/shredzone/acme4j/it/AccountIT.java
similarity index 55%
rename from acme4j-it/src/test/java/org/shredzone/acme4j/it/RegistrationIT.java
rename to acme4j-it/src/test/java/org/shredzone/acme4j/it/AccountIT.java
index f527ef27..014febb2 100644
--- a/acme4j-it/src/test/java/org/shredzone/acme4j/it/RegistrationIT.java
+++ b/acme4j-it/src/test/java/org/shredzone/acme4j/it/AccountIT.java
@@ -22,17 +22,17 @@ import java.security.KeyPair;
import org.junit.Ignore;
import org.junit.Test;
-import org.shredzone.acme4j.Registration;
-import org.shredzone.acme4j.RegistrationBuilder;
+import org.shredzone.acme4j.Account;
+import org.shredzone.acme4j.AccountBuilder;
import org.shredzone.acme4j.Session;
import org.shredzone.acme4j.Status;
import org.shredzone.acme4j.exception.AcmeException;
import org.shredzone.acme4j.exception.AcmeUnauthorizedException;
/**
- * Registration related integration tests.
+ * Account related integration tests.
*/
-public class RegistrationIT extends PebbleITBase {
+public class AccountIT extends PebbleITBase {
@Test
public void testCreate() throws AcmeException {
@@ -40,29 +40,29 @@ public class RegistrationIT extends PebbleITBase {
Session session = new Session(pebbleURI(), keyPair);
// Register a new user
- RegistrationBuilder rb = new RegistrationBuilder();
- rb.addContact("mailto:acme@example.com");
- rb.agreeToTermsOfService();
+ AccountBuilder ab = new AccountBuilder();
+ ab.addContact("mailto:acme@example.com");
+ ab.agreeToTermsOfService();
- Registration reg = rb.create(session);
- URL location = reg.getLocation();
+ Account acct = ab.create(session);
+ URL location = acct.getLocation();
assertIsPebbleUrl(location);
assertThat(session.getKeyIdentifier(), is(location.toString()));
// Check registered data
- assertThat(reg.getContacts(), contains(URI.create("mailto:acme@example.com")));
+ assertThat(acct.getContacts(), contains(URI.create("mailto:acme@example.com")));
// TODO PEBBLE: Sends UNKNOWN instead of VALID
- // assertThat(reg.getStatus(), is(Status.VALID));
- assertThat(reg.getTermsOfServiceAgreed(), is(true));
+ // assertThat(acct.getStatus(), is(Status.VALID));
+ assertThat(acct.getTermsOfServiceAgreed(), is(true));
- // Bind another Registration object
+ // Bind another Account object
// TODO PEBBLE: Not supported yet
// Session session2 = new Session(pebbleURI(), keyPair);
- // Registration reg2 = Registration.bind(session2, location);
- // assertThat(reg2.getLocation(), is(location));
- // assertThat(reg2.getContacts(), contains(URI.create("mailto:acme@example.com")));
- // assertThat(reg2.getStatus(), is(Status.VALID));
- // assertThat(reg2.getTermsOfServiceAgreed(), is(true));
+ // Account acct2 = Account.bind(session2, location);
+ // assertThat(acct2.getLocation(), is(location));
+ // assertThat(acct2.getContacts(), contains(URI.create("mailto:acme@example.com")));
+ // assertThat(acct2.getStatus(), is(Status.VALID));
+ // assertThat(acct2.getTermsOfServiceAgreed(), is(true));
}
@Test
@@ -71,23 +71,23 @@ public class RegistrationIT extends PebbleITBase {
KeyPair keyPair = createKeyPair();
Session session = new Session(pebbleURI(), keyPair);
- RegistrationBuilder rb = new RegistrationBuilder();
- rb.addContact("mailto:acme@example.com");
- rb.agreeToTermsOfService();
+ AccountBuilder ab = new AccountBuilder();
+ ab.addContact("mailto:acme@example.com");
+ ab.agreeToTermsOfService();
- Registration reg = rb.create(session);
- URL location = reg.getLocation();
+ Account acct = ab.create(session);
+ URL location = acct.getLocation();
assertIsPebbleUrl(location);
- reg.modify().addContact("mailto:acme2@example.com").commit();
+ acct.modify().addContact("mailto:acme2@example.com").commit();
- assertThat(reg.getContacts(), contains(
+ assertThat(acct.getContacts(), contains(
URI.create("mailto:acme@example.com"),
URI.create("mailto:acme2@example.com")));
// Still the same after updating
- reg.update();
- assertThat(reg.getContacts(), contains(
+ acct.update();
+ assertThat(acct.getContacts(), contains(
URI.create("mailto:acme@example.com"),
URI.create("mailto:acme2@example.com")));
}
@@ -98,23 +98,23 @@ public class RegistrationIT extends PebbleITBase {
KeyPair keyPair = createKeyPair();
Session session = new Session(pebbleURI(), keyPair);
- Registration reg = new RegistrationBuilder().agreeToTermsOfService().create(session);
- URL location = reg.getLocation();
+ Account acct = new AccountBuilder().agreeToTermsOfService().create(session);
+ URL location = acct.getLocation();
KeyPair newKeyPair = createKeyPair();
- reg.changeKey(newKeyPair);
+ acct.changeKey(newKeyPair);
try {
Session sessionOldKey = new Session(pebbleURI(), keyPair);
- Registration oldRegistration = Registration.bind(sessionOldKey, location);
- oldRegistration.update();
+ Account oldAccount = Account.bind(sessionOldKey, location);
+ oldAccount.update();
} catch (AcmeUnauthorizedException ex) {
// Expected
}
Session sessionNewKey = new Session(pebbleURI(), newKeyPair);
- Registration newRegistration = Registration.bind(sessionNewKey, location);
- assertThat(newRegistration.getStatus(), is(Status.VALID));
+ Account newAccount = Account.bind(sessionNewKey, location);
+ assertThat(newAccount.getStatus(), is(Status.VALID));
}
@Test
@@ -123,15 +123,15 @@ public class RegistrationIT extends PebbleITBase {
KeyPair keyPair = createKeyPair();
Session session = new Session(pebbleURI(), keyPair);
- Registration reg = new RegistrationBuilder().agreeToTermsOfService().create(session);
- URL location = reg.getLocation();
+ Account acct = new AccountBuilder().agreeToTermsOfService().create(session);
+ URL location = acct.getLocation();
- reg.deactivate();
+ acct.deactivate();
Session session2 = new Session(pebbleURI(), keyPair);
- Registration reg2 = Registration.bind(session2, location);
- assertThat(reg2.getLocation(), is(location));
- assertThat(reg2.getStatus(), is(Status.DEACTIVATED));
+ Account acct2 = Account.bind(session2, location);
+ assertThat(acct2.getLocation(), is(location));
+ assertThat(acct2.getStatus(), is(Status.DEACTIVATED));
}
}
diff --git a/acme4j-it/src/test/java/org/shredzone/acme4j/it/OrderIT.java b/acme4j-it/src/test/java/org/shredzone/acme4j/it/OrderIT.java
index 5c9b3b23..faaa39ed 100644
--- a/acme4j-it/src/test/java/org/shredzone/acme4j/it/OrderIT.java
+++ b/acme4j-it/src/test/java/org/shredzone/acme4j/it/OrderIT.java
@@ -30,8 +30,8 @@ import org.junit.Test;
import org.shredzone.acme4j.Authorization;
import org.shredzone.acme4j.Certificate;
import org.shredzone.acme4j.Order;
-import org.shredzone.acme4j.Registration;
-import org.shredzone.acme4j.RegistrationBuilder;
+import org.shredzone.acme4j.Account;
+import org.shredzone.acme4j.AccountBuilder;
import org.shredzone.acme4j.Session;
import org.shredzone.acme4j.Status;
import org.shredzone.acme4j.challenge.Challenge;
@@ -145,7 +145,7 @@ public class OrderIT extends PebbleITBase {
KeyPair keyPair = createKeyPair();
Session session = new Session(pebbleURI(), keyPair);
- Registration registration = new RegistrationBuilder()
+ Account account = new AccountBuilder()
.agreeToTermsOfService()
.create(session);
@@ -159,7 +159,7 @@ public class OrderIT extends PebbleITBase {
Instant notBefore = Instant.now();
Instant notAfter = notBefore.plus(Duration.ofDays(20L));
- Order order = registration.orderCertificate(encodedCsr, notBefore, notAfter);
+ Order order = account.orderCertificate(encodedCsr, notBefore, notAfter);
assertThat(order.getCsr(), is(encodedCsr));
assertThat(order.getNotBefore(), is(notBefore));
assertThat(order.getNotAfter(), is(notAfter));
diff --git a/src/site/markdown/usage/account.md b/src/site/markdown/usage/account.md
new file mode 100644
index 00000000..06feb3a0
--- /dev/null
+++ b/src/site/markdown/usage/account.md
@@ -0,0 +1,55 @@
+# Register an Account
+
+If it is the first time you connect to the ACME server, you need to register your account key.
+
+To do so, create an `AccountBuilder`, optionally add some contact information, agree to the terms of service, then invoke `create()`. If the account was successfully created, you will get an `Account` object in return. Invoking its `getLocation()` method will return the location URL of your account. You should store it somewhere, because you will need it later. Unlike your key pair, the location is a public information that does not need security precautions.
+
+```java
+AccountBuilder builder = new AccountBuilder();
+builder.addContact("mailto:acme@example.com");
+builder.agreeToTermsOfService();
+
+Account account = builder.create(session);
+
+URL accountLocationUrl = account.getLocation();
+```
+
+## Update your Account
+
+At some point, you may want to update your account. For example your contact address might have changed. To do so, invoke `Account.modify()`, perform the changes, and invoke `commit()` to make them permanent.
+
+The following example adds another email address.
+
+```java
+account.modify()
+ .addContact("mailto:acme2@example.com")
+ .commit();
+```
+
+## Account Key Roll-Over
+
+It is also possible to change the key pair that is associated with your account, for example if you suspect that your key has been compromised.
+
+The following example changes the key pair:
+
+```java
+KeyPair newKeyPair = ... // new KeyPair to be used
+
+account.changeKey(newKeyPair);
+```
+
+After a successful change, all subsequent calls related to this account must use the new key pair. The key is automatically updated on the `Session` that was bound to this `Account`.
+
+The old key pair can be disposed of after that. However, I recommend to keep a backup of the old key pair until the key change was proven to be successful, by making a subsequent call with the new key pair. Otherwise you might lock yourself out from your account if the key change should have failed silently, for whatever reason.
+
+## Deactivate an Account
+
+You can deactivate your account if you don't need it any more:
+
+```java
+account.deactivate();
+```
+
+Depending on the CA, the related authorizations may be automatically deactivated as well. The certificates may still be valid until expiration or explicit revocation. If you want to make sure the certificates are invalidated as well, revoke them prior to deactivation of your account.
+
+Be very careful: There is no way to reactivate the account once it is deactivated!
diff --git a/src/site/markdown/usage/authorization.md b/src/site/markdown/usage/authorization.md
index cd7c7144..36223e47 100644
--- a/src/site/markdown/usage/authorization.md
+++ b/src/site/markdown/usage/authorization.md
@@ -3,9 +3,9 @@
Once you have your account set up, you need to associate your domains with it. This is done by creating an `Authorization` object:
```java
-Registration registration = ... // your Registration object
+Account account = ... // your Account object
-Authorization auth = registration.authorizeDomain("example.org");
+Authorization auth = account.authorizeDomain("example.org");
```
The `Authorization` instance contains further details about how you can prove ownership of your domain. An ACME server offers combinations of different authorization methods, called `Challenge`s.
diff --git a/src/site/markdown/usage/certificate.md b/src/site/markdown/usage/certificate.md
index 9bd4b5aa..ca0d0381 100644
--- a/src/site/markdown/usage/certificate.md
+++ b/src/site/markdown/usage/certificate.md
@@ -31,7 +31,7 @@ try (FileWriter fw = new FileWriter("example.csr")) {
Now all you need to do is to pass in a binary representation of the CSR and request the certificate:
```java
-Certificate cert = registration.requestCertificate(csr);
+Certificate cert = account.requestCertificate(csr);
```
`cert.getLocation()` returns an URL where the signed certificate can be downloaded from. Optionally (if delivered by the ACME server) `cert.getChainLocation()` returns the URL of the first part of the CA chain.
@@ -114,13 +114,13 @@ For renewal, just request a new certificate using the original CSR:
PKCS10CertificationRequest csr = CertificateUtils.readCSR(
new FileInputStream("example.csr"));
-Certificate cert = registration.requestCertificate(csr);
+Certificate cert = account.requestCertificate(csr);
X509Certificate cert = cert.download();
```
Instead of loading the original CSR, you can also generate a new one. So renewing a certificate is basically the same as requesting a new certificate.
-If `registration.requestCertificate(csr)` throws an `AcmeUnauthorizedException`, the authorizations of some or all involved domains have expired. In this case, you need to go through the [authorization](./authorization.html) process again, before requesting the renewed certificate.
+If `account.requestCertificate(csr)` throws an `AcmeUnauthorizedException`, the authorizations of some or all involved domains have expired. In this case, you need to go through the [authorization](./authorization.html) process again, before requesting the renewed certificate.
## Revocation
diff --git a/src/site/markdown/usage/register.md b/src/site/markdown/usage/register.md
index 9fa5ef0b..06feb3a0 100644
--- a/src/site/markdown/usage/register.md
+++ b/src/site/markdown/usage/register.md
@@ -2,26 +2,26 @@
If it is the first time you connect to the ACME server, you need to register your account key.
-To do so, create a `RegistrationBuilder`, optionally add some contact information, agree to the terms of service, then invoke `create()`. If the account was successfully created, you will get a `Registration` object in return. Invoking its `getLocation()` method will return the location URL of your account. You should store it somewhere, because you will need it later. Unlike your key pair, the location is a public information that does not need security precautions.
+To do so, create an `AccountBuilder`, optionally add some contact information, agree to the terms of service, then invoke `create()`. If the account was successfully created, you will get an `Account` object in return. Invoking its `getLocation()` method will return the location URL of your account. You should store it somewhere, because you will need it later. Unlike your key pair, the location is a public information that does not need security precautions.
```java
-RegistrationBuilder builder = new RegistrationBuilder();
+AccountBuilder builder = new AccountBuilder();
builder.addContact("mailto:acme@example.com");
builder.agreeToTermsOfService();
-Registration registration = builder.create(session);
+Account account = builder.create(session);
-URL accountLocationUrl = registration.getLocation();
+URL accountLocationUrl = account.getLocation();
```
-## Update your Registration
+## Update your Account
-At some point, you may want to update your registration. For example your contact address might have changed. To do so, invoke `Registration.modify()`, perform the changes, and invoke `commit()` to make them permanent.
+At some point, you may want to update your account. For example your contact address might have changed. To do so, invoke `Account.modify()`, perform the changes, and invoke `commit()` to make them permanent.
The following example adds another email address.
```java
-registration.modify()
+account.modify()
.addContact("mailto:acme2@example.com")
.commit();
```
@@ -35,10 +35,10 @@ The following example changes the key pair:
```java
KeyPair newKeyPair = ... // new KeyPair to be used
-registration.changeKey(newKeyPair);
+account.changeKey(newKeyPair);
```
-After a successful change, all subsequent calls related to this account must use the new key pair. The key is automatically updated on the `Session` that was bound to this `Registration`.
+After a successful change, all subsequent calls related to this account must use the new key pair. The key is automatically updated on the `Session` that was bound to this `Account`.
The old key pair can be disposed of after that. However, I recommend to keep a backup of the old key pair until the key change was proven to be successful, by making a subsequent call with the new key pair. Otherwise you might lock yourself out from your account if the key change should have failed silently, for whatever reason.
@@ -47,7 +47,7 @@ The old key pair can be disposed of after that. However, I recommend to keep a b
You can deactivate your account if you don't need it any more:
```java
-registration.deactivate();
+account.deactivate();
```
Depending on the CA, the related authorizations may be automatically deactivated as well. The certificates may still be valid until expiration or explicit revocation. If you want to make sure the certificates are invalidated as well, revoke them prior to deactivation of your account.
diff --git a/src/site/markdown/usage/session.md b/src/site/markdown/usage/session.md
index 39cce1b7..00807896 100644
--- a/src/site/markdown/usage/session.md
+++ b/src/site/markdown/usage/session.md
@@ -28,15 +28,15 @@ Session session = new Session("acme://letsencrypt.org/staging", keyPair);
Instead of a generic provider, this call uses a special _Let's Encrypt_ provider that also accepts the _Let's Encrypt_ certificate.
-Now that you have a `Session` object, you can use it to bind ACME resource objects. For example, this is the way to get a `Registration` object to an existing registration:
+Now that you have a `Session` object, you can use it to bind ACME resource objects. For example, this is the way to get an `Account` object to an existing account:
```java
-URL accountLocationUrl = ... // your account's URL, as returned by Registration.getLocation()
+URL accountLocationUrl = ... // your account's URL, as returned by Account.getLocation()
-Registration registration = Registration.bind(session, accountLocationUrl);
+Account account = Account.bind(session, accountLocationUrl);
```
-You can create any of the resource objects `Registration`, `Authorization`, `Challenge` and `Certificate` like that, as long as you know the corresponding resource URL. To get the resource URL, use the `getLocation()` method.
+You can create any of the resource objects `Account`, `Authorization`, `Challenge` and `Certificate` like that, as long as you know the corresponding resource URL. To get the resource URL, use the `getLocation()` method.
## Serialization
diff --git a/src/site/site.xml b/src/site/site.xml
index a364133d..b3314289 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -32,7 +32,7 @@