# SSL Manager - Certificate Authorities

<article class="text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&:has([data-writing-block])>*]:pointer-events-auto [content-visibility:auto] supports-[content-visibility:auto]:[contain-intrinsic-size:auto_100lvh] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]" data-scroll-anchor="false" data-testid="conversation-turn-20" data-turn="assistant" data-turn-id="request-WEB:d6ffa71c-b040-4199-a144-4b49b9e11a0c-15" dir="auto" id="bkmrk-puqcloud-panel-order" tabindex="-1">### PUQcloud Panel

##### [Order Now](https://puqcloud.com/puqcloud-panel.php) | [Download](https://github.com/puqcloud/PUQcloud) | [FAQ](https://faq.puqcloud.com/)

#### Overview

**Certificate Authorities (CA)** are provider profiles the panel uses to issue and renew SSL/TLS certificates via ACME. PUQcloud follows a simple rule: **one module per CA**.  
Currently supported modules:

<div><div><div><div><div data-message-author-role="assistant" data-message-id="3f828955-9e77-4062-8b3a-2d9922fdd868" data-message-model-slug="gpt-5-thinking"><div><div>- **Let’s Encrypt** (plus **Let’s Encrypt Staging** for safe testing)
- **ZeroSSL**

</div></div></div></div></div></div></div>**Where to find it:** **Settings → SSL Manager → Certificate Authorities**

<div><div><div><div><div data-message-author-role="assistant" data-message-id="3f828955-9e77-4062-8b3a-2d9922fdd868" data-message-model-slug="gpt-5-thinking"><div><div>- - - - - -

</div></div></div></div></div></div></div>#### What you can do here

<div><div><div><div><div data-message-author-role="assistant" data-message-id="3f828955-9e77-4062-8b3a-2d9922fdd868" data-message-model-slug="gpt-5-thinking"><div><div>- Create and configure CA profiles (ACME account, technical DNS zone, timeouts).
- Test connectivity to the CA (**Save and Test**) and see the CA directory endpoints.
- Keep multiple profiles (e.g., Production vs Staging) and select them per-certificate.

- - - - - -

</div></div></div></div></div></div></div>#### Create a CA Profile (step-by-step)

<div><div><div><div><div data-message-author-role="assistant" data-message-id="3f828955-9e77-4062-8b3a-2d9922fdd868" data-message-model-slug="gpt-5-thinking"><div><div>1. Go to **Settings → SSL Manager → Certificate Authorities** and click **+ Create**.
2. Enter **Name** and choose **Module = PUQ ACME (active)** → **Save**.
3. Click **Edit** on the new CA profile and fill in the fields (see the Field Reference below).
4. Click **Save and Test**. A modal should show **API is available** plus a dump of **ACME directory endpoints**.
5. Click **Save**.

- - - - - -

</div></div></div></div></div></div></div>#### Field Reference (when &amp; why)

<div><div><div><div><div data-message-author-role="assistant" data-message-id="3f828955-9e77-4062-8b3a-2d9922fdd868" data-message-model-slug="gpt-5-thinking"><div><div><div><div><table class="w-fit min-w-(--thread-content-width)" data-end="2664" data-start="1251"><thead data-end="1286" data-start="1251"><tr data-end="1286" data-start="1251"><th data-col-size="sm" data-end="1259" data-start="1251">Field</th><th data-col-size="md" data-end="1272" data-start="1259">What it is</th><th data-col-size="md" data-end="1286" data-start="1272">When / Why</th></tr></thead><tbody data-end="2664" data-start="1301"><tr data-end="1401" data-start="1301"><td data-col-size="sm" data-end="1312" data-start="1301">**Name**</td><td data-col-size="md" data-end="1336" data-start="1312">Internal display name</td><td data-col-size="md" data-end="1401" data-start="1336">Use meaningful names like `LE PROD`, `LE STAGING`, `ZeroSSL`.</td></tr><tr data-end="1515" data-start="1402"><td data-col-size="sm" data-end="1420" data-start="1402">**Description**</td><td data-col-size="md" data-end="1441" data-start="1420">Short profile note</td><td data-col-size="md" data-end="1515" data-start="1441">Note target usage: “production issuance”, “sandbox”, or project scope.</td></tr><tr data-end="1661" data-start="1516"><td data-col-size="sm" data-end="1544" data-start="1516">**Certificate Authority**</td><td data-col-size="md" data-end="1568" data-start="1544">Selected CA directory</td><td data-col-size="md" data-end="1661" data-start="1568">Use **Let’s Encrypt Staging** for tests, **Let’s Encrypt** or **ZeroSSL** for production.</td></tr><tr data-end="1834" data-start="1662"><td data-col-size="sm" data-end="1703" data-start="1662">**Email address for the ACME account**</td><td data-col-size="md" data-end="1752" data-start="1703">Email used to register/manage the ACME account</td><td data-col-size="md" data-end="1834" data-start="1752">Required. Prefer a shared ops mailbox (e.g., `it@company.tld`) for continuity.</td></tr><tr data-end="1974" data-start="1835"><td data-col-size="sm" data-end="1867" data-start="1835">**EAB Key ID / EAB HMAC Key**</td><td data-col-size="md" data-end="1894" data-start="1867">External Account Binding</td><td data-col-size="md" data-end="1974" data-start="1894">Needed by some providers/plans (e.g., ZeroSSL). Leave empty if not required.</td></tr><tr data-end="2150" data-start="1975"><td data-col-size="sm" data-end="1990" data-start="1975">**DNS Zone**</td><td data-col-size="md" data-end="2050" data-start="1990">**Technical zone** where TXT records are actually created</td><td data-col-size="md" data-end="2150" data-start="2050">Example: `acme.puqcloud.com`. The target domain’s `_acme-challenge` will **CNAME** to this zone.</td></tr><tr data-end="2260" data-start="2151"><td data-col-size="sm" data-end="2185" data-start="2151">**Allow wildcard certificates**</td><td data-col-size="md" data-end="2205" data-start="2185">Allows `*.domain`</td><td data-col-size="md" data-end="2260" data-start="2205">Enable if you plan wildcard issuance (DNS-01 only).</td></tr><tr data-end="2395" data-start="2261"><td data-col-size="sm" data-end="2292" data-start="2261">**DNS Record TTL (seconds)**</td><td data-col-size="md" data-end="2322" data-start="2292">TTL for created DNS records</td><td data-col-size="md" data-end="2395" data-start="2322">30–60 speeds up DCV; raise slightly if your DNS is slow to propagate.</td></tr><tr data-end="2513" data-start="2396"><td data-col-size="sm" data-end="2424" data-start="2396">**API Timeout (seconds)**</td><td data-col-size="md" data-end="2458" data-start="2424">Max wait for ACME API responses</td><td data-col-size="md" data-end="2513" data-start="2458">Increase (e.g., 20–30) on flaky networks/CI bursts.</td></tr><tr data-end="2664" data-start="2514"><td data-col-size="sm" data-end="2543" data-start="2514">**Save and Test** (button)</td><td data-col-size="md" data-end="2564" data-start="2543">Connectivity check</td><td data-col-size="md" data-end="2664" data-start="2564">Opens a modal with **API is available** and the list of ACME endpoints. Investigate if it fails.</td></tr></tbody></table>

</div></div>- - - - - -

</div></div></div></div></div></div></div>#### Provider specifics

##### Let’s Encrypt (incl. Staging)

<div><div><div><div><div data-message-author-role="assistant" data-message-id="3f828955-9e77-4062-8b3a-2d9922fdd868" data-message-model-slug="gpt-5-thinking"><div><div>- Uses **DNS-01 via a technical zone**:
    
    
    1. On the **target domain** you create a **CNAME** for `_acme-challenge.domain` pointing into your technical zone (e.g., `_acme-challenge.domain CNAME <token>.acme.puqcloud.com`).
    2. Let’s Encrypt queries `_acme-challenge` on the target domain, **follows the CNAME** into the tech zone, and reads the TXT value there.
- **Let’s Encrypt Staging** is ideal for testing without spending production rate limits.
- Wildcards (`*.domain`) require DNS-01 and the **Allow wildcard** flag.

</div></div></div></div></div></div></div>##### ZeroSSL

<div><div><div><div><div data-message-author-role="assistant" data-message-id="3f828955-9e77-4062-8b3a-2d9922fdd868" data-message-model-slug="gpt-5-thinking"><div><div>- Supports **account API keys** so that **issued certificates appear in your ZeroSSL account**.
- If you **don’t** provide keys, the system will create **temporary keys per certificate** automatically.
- With a paid ZeroSSL plan (~$12/month), generate API keys and add them to PUQcloud so all certs are visible/manageable in your ZeroSSL panel.

- - - - - -

</div></div></div></div></div></div></div>#### Good practices

<div><div><div><div><div data-message-author-role="assistant" data-message-id="3f828955-9e77-4062-8b3a-2d9922fdd868" data-message-model-slug="gpt-5-thinking"><div><div>- Start with **Let’s Encrypt Staging** to validate your flow, then enable **Let’s Encrypt** (production).
- Keep **DNS TTL** low (30–60s) in the CA profile to speed up challenges.
- For ZeroSSL at scale, use **account keys** for visibility and auditing.

- - - - - -

</div></div></div></div></div></div></div>#### Migration cheat-sheet (e.g., from Let’s Encrypt to ZeroSSL)

<div><div><div><div><div data-message-author-role="assistant" data-message-id="3f828955-9e77-4062-8b3a-2d9922fdd868" data-message-model-slug="gpt-5-thinking"><div><div>1. **Create** a new CA profile (add EAB/API keys if required by your ZeroSSL plan).
2. **Save and Test** to confirm directory endpoints.
3. Check/update your **technical DNS zone** if it differs from previous setup.
4. **Issue a test cert** on a non-critical domain to validate DCV.
5. For **new** certs, select the new CA in the creation form. For **existing** certs, you cannot “switch issuer”; **issue a new** certificate under the new CA and deploy it.
6. Verify **Days Remaining / Auto Renew** behavior on new certs (and, with ZeroSSL keys, that issues appear in the ZeroSSL account).

- - - - - -

</div></div></div></div></div></div></div>#### Troubleshooting

<div><div><div><div><div data-message-author-role="assistant" data-message-id="3f828955-9e77-4062-8b3a-2d9922fdd868" data-message-model-slug="gpt-5-thinking"><div><div>- **“Save and Test” doesn’t show “API is available”**
    
    
    - Check selected CA, network access, EAB keys (if required), and **API Timeout**.
- **LE DNS validation fails**
    
    
    - Confirm the **CNAME** is correct and already resolves to the tech zone; wait for **TTL**.
- **Wildcard fails**
    
    
    - Ensure **Allow wildcard** is enabled and you are using **DNS-01**.
- **ZeroSSL certificates don’t show in the ZeroSSL dashboard**
    
    
    - Add **account API keys** to the CA profile (temporary per-certificate keys don’t link certs to your account).

</div></div></div></div></div></div></div><div><div><div><div><div data-message-author-role="assistant" data-message-id="3f828955-9e77-4062-8b3a-2d9922fdd868" data-message-model-slug="gpt-5-thinking"><div></div></div></div></div></div></div>#### Related

<div><div><div><div><div data-message-author-role="assistant" data-message-id="3f828955-9e77-4062-8b3a-2d9922fdd868" data-message-model-slug="gpt-5-thinking"><div><div>- **SSL Certificates** — issuance workflow (Draft → CSR → Pending (CNAME) → Active), auto-renew, metadata.
- **DNS Manager** — managing your technical zone and verifying `_acme-challenge` records.
- **Email &amp; Notifications** — reminders for expiry and operational alerts.

</div></div></div></div></div></div></div></article>