Skip to content

Commit 3df18d1

Browse files
committed
Refactor documentation for improved readability using various hugo-book shortcodes
1 parent 3c01d29 commit 3df18d1

2 files changed

Lines changed: 28 additions & 66 deletions

File tree

README.md

Lines changed: 19 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -35,25 +35,11 @@ This architecture addresses typical enterprise constraints that prevent direct c
3535
- Legacy DNS infrastructure lacks REST API support or ACME client integration
3636
- Security policies restrict distribution of API tokens or TSIG keys for large DNS zones
3737

38-
For more information on DNS-01 security considerations:
38+
For more information on security considerations when using DNS-01 challenge:
3939

4040
- [EFF: Technical Deep Dive on ACME DNS Challenge Validation](https://www.eff.org/deeplinks/2018/02/technical-deep-dive-securing-automation-acme-dns-challenge-validation)
4141
- [LetsEncrypt: DNS-01 Challenge](https://letsencrypt.org/docs/challenge-types/#dns-01-challenge)
4242

43-
## Benefits
44-
45-
Using ACME with commercial CAs in enterprise environments provides several advantages:
46-
47-
**Trusted Certificates:**
48-
49-
- Certificates are signed by publicly trusted CAs are already in system trust stores
50-
- Eliminates the operational burden of distributing and maintaining custom root certificates across endpoints, servers, and client devices
51-
52-
**Automation and Self-Service:**
53-
54-
- Leverage standard ACME clients (Certbot, acme.sh, cert-manager.io) for certificate issuance, automatic renewals.
55-
- Enable self-service certificate requests for development teams
56-
5743
## Quick Start
5844

5945
```sh
@@ -87,17 +73,6 @@ Requirements: Go >= 1.25
8773
cd acme-proxy && make
8874
```
8975

90-
### Using Docker
91-
92-
You can either use our [pre-built container images](https://github.com/esnet/acme-proxy/pkgs/container/acme-proxy) or you can build the image yourself.
93-
94-
**DIY - Build docker image**
95-
96-
```sh
97-
❯ git clone https://github.com/esnet/acme-proxy.git
98-
cd acme-proxy && docker build -t acme-proxy:latest .
99-
```
100-
10176
## Usage
10277

10378
Review and update configuration options in [ca.json](./ca.json) before starting the acme-proxy server.
@@ -106,7 +81,7 @@ Review and update configuration options in [ca.json](./ca.json) before starting
10681
vim ca.json
10782
```
10883

109-
The most important parts of the config are -
84+
Checkout our [official docs](https://software.es.net/acme-proxy/install/#configuration) for full set of configuration options. For quick start the most relevant config bits are:
11085

11186
```json
11287
"dnsNames": ["acmeproxy.example.com"],
@@ -121,7 +96,7 @@ The most important parts of the config are -
12196
"metrics": {
12297
"enabled": true,
12398
"port": 9234,
124-
"dataSource": "db/metrics"
99+
"dataSource": "/opt/acme-proxy/db/metrics"
125100
}
126101
},
127102
...
@@ -170,41 +145,6 @@ badger 2025/07/15 22:12:24 INFO: Replay took: 5.99µs
170145
2025/07/15 22:12:33 Serving HTTPS on proxy.example.com:443 ...
171146
```
172147

173-
When using acme-proxy with docker take a note of the bind mount and port
174-
175-
```sh
176-
$ docker run -itd -p 443:443 -v ./ca-dev.json:/acme-proxy/config/ca.json --name acme-proxy acme-proxy:latest
177-
29c1ca374832dc50d3215b404f620c2a08d988c30f630464bf9d7d35aa44345f
178-
179-
$ docker logs acme-proxy
180-
2026/03/17 23:04:06 Building new tls configuration using step-ca x509 Signer Interface
181-
2026/03/17 23:04:07 [INFO] acme: Registering account for certadmin@example.com
182-
2026/03/17 23:04:07 INFO processing certificate request domains=[proxy.example.com]
183-
2026/03/17 23:04:07 [INFO] [proxy.example.com] acme: Obtaining bundled SAN certificate given a CSR
184-
2026/03/17 23:04:08 [INFO] [proxy.example.com] AuthURL: https://acme.sectigo.com/v2/InCommonRSAOV/authz/jQJHRdd-0kKdm-JVQVhjHQ
185-
2026/03/17 23:04:08 [INFO] [proxy.example.com] acme: authorization already valid; skipping challenge
186-
2026/03/17 23:04:08 [INFO] [proxy.example.com] acme: Validations succeeded; requesting certificates
187-
2026/03/17 23:04:08 [INFO] Wait for certificate [timeout: 30s, interval: 500ms]
188-
2026/03/17 23:04:13 [INFO] [proxy.example.com] Server responded with a certificate.
189-
2026/03/17 23:04:13 INFO obtained certificate from external CA domains=[proxy.example.com]
190-
2026/03/17 23:04:13 Starting Smallstep CA/0000000-dev (linux/amd64)
191-
2026/03/17 23:04:13 Documentation: https://u.step.sm/docs/ca
192-
2026/03/17 23:04:13 Community Discord: https://u.step.sm/discord
193-
2026/03/17 23:04:13 Config file: /acme-proxy/config/ca.json
194-
2026/03/17 23:04:13 The primary server URL is https://proxy.example.com:443
195-
2026/03/17 23:04:13 Root certificates are available at https://proxy.example.com:443/roots.pem
196-
2026/03/17 23:04:13 Serving HTTPS on :443 ...
197-
198-
$ curl -s https://proxy.example.com/acme/acme/directory | jq .
199-
{
200-
"newNonce": "https://proxy.example.com/acme/acme/new-nonce",
201-
"newAccount": "https://proxy.example.com/acme/acme/new-account",
202-
"newOrder": "https://proxy.example.com/acme/acme/new-order",
203-
"revokeCert": "https://proxy.example.com/acme/acme/revoke-cert",
204-
"keyChange": "https://proxy.example.com/acme/acme/key-change"
205-
}
206-
```
207-
208148
### Obtaining a certificate
209149

210150
While the example below uses `acme.sh` as the ACME client, we've also tested using `certbot` with equal success.
@@ -287,11 +227,11 @@ Certificate:
287227
288228
```
289229

290-
We have our certificate signed by InCommon 🎉
230+
We have our certificate signed by our certificate authority i.e InCommon 🎉
291231

292232
### Renewing a certificate
293233

294-
Issuing a certificate is *generally* not a problem in enterprise environments. But the ability to reliably renew certificates and reload services gracefully post renewal is. I am using the `--force` flag for renewal only because the default configuration in ACME clients only performs automatic renewal `1 < N < 30` number of days before certificate expiration.
234+
Issuing a certificate is *generally* not a problem in enterprise environments. But the ability to automatically renew certificates and reload services gracefully post renewal is. I am using the `--force` flag for renewal only because the default configuration in ACME clients only performs automatic renewal `1 < N < 30` number of days before certificate expiration.
295235

296236
```sh
297237
$ ./acme.sh --renew --domain myserver.example.com --force
@@ -346,3 +286,17 @@ N+c9XyDLAiEAkbrRKBsYc8YSgYviREF9u+gz7jK5JY2dsaRatEfb8Eg=
346286
```
347287

348288
Cert renewal was a success!
289+
290+
## Benefits
291+
292+
Using ACME with commercial CAs in enterprise environments provides several advantages:
293+
294+
**Trusted Certificates:**
295+
296+
- Certificates are signed by publicly trusted CAs are already in system trust stores
297+
- Eliminates the operational burden of distributing and maintaining custom root certificates across endpoints, servers, and client devices
298+
299+
**Automation and Self-Service:**
300+
301+
- Leverage standard ACME clients (Certbot, acme.sh, cert-manager.io) for certificate issuance, automatic renewals.
302+
- Enable self-service certificate requests for development teams

docs/content/install.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,14 @@ docker logs -f acme-proxy
339339

340340
```sh
341341
curl -s https://acmeproxy.example.com/acme/acme/directory | jq .
342+
343+
{
344+
"newNonce": "https://proxy.example.com/acme/acme/new-nonce",
345+
"newAccount": "https://proxy.example.com/acme/acme/new-account",
346+
"newOrder": "https://proxy.example.com/acme/acme/new-order",
347+
"revokeCert": "https://proxy.example.com/acme/acme/revoke-cert",
348+
"keyChange": "https://proxy.example.com/acme/acme/key-change"
349+
}
342350
```
343351

344-
A JSON object with `newNonce`, `newAccount`, `newOrder` keys confirms the server is running and accepting ACME requests.
352+
A JSON object with `newNonce`, `newAccount`, `newOrder` keys confirms the ACME server is running and accepting requests.

0 commit comments

Comments
 (0)