certpost 1.0.0b8__py3-none-win_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: certpost
|
|
3
|
+
Version: 1.0.0b8
|
|
4
|
+
Summary: Let's Encrypt certificate manager with DNS-01 challenges, web admin panel, and TLS termination proxy
|
|
5
|
+
Home-page: https://gitlab.com/waterjuice/certpost
|
|
6
|
+
Author: WaterJuice
|
|
7
|
+
License: Unlicense
|
|
8
|
+
Requires-Python: >=3.7
|
|
9
|
+
Classifier: Programming Language :: Go
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
# certpost
|
|
12
|
+
|
|
13
|
+
Let's Encrypt certificate manager with DNS-01 challenges, web admin panel, and TLS termination proxy. Written in Go — single static binary, no dependencies. Supports Cloudflare and Technitium DNS Server.
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- **Automatic certificate issuance** — Let's Encrypt via ACME v2, DNS-01 challenges
|
|
18
|
+
- **Multiple DNS providers** — Cloudflare and Technitium DNS Server, with split provider support (e.g. Cloudflare for ACME, Technitium for records)
|
|
19
|
+
- **Web admin panel** — manage domains, view status, download certs, view logs (protected by admin key login)
|
|
20
|
+
- **DNS management** — automatically creates and manages A/CNAME records for your subdomains
|
|
21
|
+
- **Background renewal** — proactively renews the 2 oldest certs daily, with a 30-day expiry safety net
|
|
22
|
+
- **Per-domain API tokens** — each domain gets its own bearer token for certificate retrieval
|
|
23
|
+
- **TLS termination proxy** — built-in proxy with SNI routing and automatic cert refresh
|
|
24
|
+
- **Certificate fetching** — download `.crt` and `.key` files via CLI or admin panel
|
|
25
|
+
- **Interactive setup** — `certpost-server setup` and `certpost init` wizards for easy configuration
|
|
26
|
+
- **Single static binary** — no runtime dependencies, no openssl required
|
|
27
|
+
- **Modular DNS** — protocol-based design makes it easy to add new providers
|
|
28
|
+
|
|
29
|
+
## Requirements
|
|
30
|
+
|
|
31
|
+
- Go 1.22+ (for building)
|
|
32
|
+
- A supported DNS provider: Cloudflare (API token + zone ID) or Technitium DNS Server (server URL + API token)
|
|
33
|
+
|
|
34
|
+
## Building
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
make build
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Produces `output/certpost-server` and `output/certpost`.
|
|
41
|
+
|
|
42
|
+
Cross-compile for Linux:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
make build-linux-amd64
|
|
46
|
+
make build-linux-arm64
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Server
|
|
50
|
+
|
|
51
|
+
### Initial setup
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
certpost-server setup -d /path/to/data
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
This walks you through creating a `config.json` with your DNS provider settings, base domain, and port. An admin key is generated automatically.
|
|
58
|
+
|
|
59
|
+
### Starting the server
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
certpost-server run -d /path/to/data
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
The admin panel is available at `http://localhost:8443`. Log in with the admin key (printed on startup). From the panel you can:
|
|
66
|
+
|
|
67
|
+
- Add subdomains — enter an IP address or CNAME target, creates the DNS record via the configured provider, and issues a Let's Encrypt certificate
|
|
68
|
+
- View certificate status and expiry dates
|
|
69
|
+
- Copy or rotate per-domain API tokens
|
|
70
|
+
- Download certificate files
|
|
71
|
+
- View server logs
|
|
72
|
+
|
|
73
|
+
### Configuration
|
|
74
|
+
|
|
75
|
+
The `config.json` in your data directory. Use a single `dns` key when one provider handles everything:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"base_domain": "example.com",
|
|
80
|
+
"admin_key": "auto-generated-admin-key",
|
|
81
|
+
"bind": "0.0.0.0",
|
|
82
|
+
"port": 8443,
|
|
83
|
+
"dns": {
|
|
84
|
+
"provider": "cloudflare",
|
|
85
|
+
"api_token": "your-cloudflare-api-token",
|
|
86
|
+
"zone_id": "your-zone-id"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
For split configurations, use `dns_acme` and `dns_records`:
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"base_domain": "example.com",
|
|
96
|
+
"admin_key": "auto-generated-admin-key",
|
|
97
|
+
"bind": "0.0.0.0",
|
|
98
|
+
"port": 8443,
|
|
99
|
+
"dns_acme": {
|
|
100
|
+
"provider": "cloudflare",
|
|
101
|
+
"api_token": "your-cloudflare-api-token",
|
|
102
|
+
"zone_id": "your-zone-id"
|
|
103
|
+
},
|
|
104
|
+
"dns_records": {
|
|
105
|
+
"provider": "technitium",
|
|
106
|
+
"server_url": "https://dns.example.com",
|
|
107
|
+
"api_token": "your-technitium-api-token",
|
|
108
|
+
"zone": "example.com"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Client
|
|
114
|
+
|
|
115
|
+
### Fetch certificates
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
certpost fetch -s http://certpost:8443 -t <token> -d app.example.com -o /etc/ssl/certs
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
With automatic refresh every 24 hours:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
certpost fetch -s http://certpost:8443 -t <token> -d app.example.com --refresh 24
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### TLS termination proxy
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
certpost proxy -c proxy.json
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Generate a config interactively
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
certpost init
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Security
|
|
140
|
+
|
|
141
|
+
- Admin panel is protected by an admin key with cookie-based auth
|
|
142
|
+
- Certificate API uses per-domain bearer tokens (not shared)
|
|
143
|
+
- Private keys are stored in JSON files — protect the data directory with filesystem permissions
|
|
144
|
+
- TLS proxy loads certs directly into memory via `tls.X509KeyPair` — no temp files
|
|
145
|
+
|
|
146
|
+
## Licence
|
|
147
|
+
|
|
148
|
+
Released under the [Unlicense](https://unlicense.org/) — public domain.
|
|
149
|
+
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
certpost-1.0.0b8.data/scripts/certpost-server.exe,sha256=qNrXUXthzb-UO_sg7CEVcf94skcthymQPenpZyO23oc,6573568
|
|
2
|
+
certpost-1.0.0b8.data/scripts/certpost.exe,sha256=sgNMt0NaXx8UaDIs5c3l33r6wXt8IeEhZzcqDWCP9vc,6172160
|
|
3
|
+
certpost-1.0.0b8.dist-info/METADATA,sha256=54zjgSZxBhEyUZqltA0vCKsVx2ZNfdzuTtKCMutBTK4,4391
|
|
4
|
+
certpost-1.0.0b8.dist-info/WHEEL,sha256=wNZVzVl1pV29tNEH9u1e8IeMEQyIPKucDoXN7wnf9VE,85
|
|
5
|
+
certpost-1.0.0b8.dist-info/RECORD,,
|