SSL/TLS Certificate Generator: Self-Signed Certs for Local HTTPS Development
Learn how to generate self-signed SSL/TLS certificates (RSA & ECDSA) for local development and testing with the free, in-browser Certificate Generator tool.
Table of Contents
SSL/TLS Certificate Generator: Self-Signed Certs for Local HTTPS Development
If you have ever tried to run a local development server over HTTPS, you know the friction. Browsers throw "Your connection is not private" warnings, mixed-content errors break your fetch calls, and features like service workers, geolocation, and secure cookies simply refuse to work without a trusted certificate. The traditional fix β installing OpenSSL, memorizing a dozen flags, and hand-editing config files β is overkill for most developers.
That is where the Certificate Generator comes in. It is a free, fully in-browser tool that lets you create self-signed SSL/TLS certificates for development and testing in seconds. No command line, no installs, and no uploading your private key to a third-party server.
Whether you need a quick localhost cert for a weekend project, a multi-domain certificate with Subject Alternative Names (SANs), or an ECDSA key pair for performance testing, the Certificate Generator has you covered. In this guide, we will walk through everything the tool can do and how to get the most out of it.
Why Use the Certificate Generator?
- 100% in-browser and private. All cryptography runs client-side in your browser using the Web Crypto API. Your private key is generated locally and never transmitted to any server, so you stay in full control of sensitive material at all times.
- Both RSA and ECDSA support. Choose between classic RSA keys (2048, 3072, or 4096 bits) and modern ECDSA keys on the P-256, P-384, or P-521 curves, depending on your compatibility and performance needs.
- Built-in SAN support. Add multiple Subject Alternative Names to cover localhost, custom domains, IP addresses, and internal hostnames in a single certificate β no second cert required.
- No installation required. Open the page, fill in the form, and click generate. There is nothing to download, configure, or keep updated, which makes it perfect for quick experiments on any machine.
- Ready-to-use downloads. Export your private key, public key, and certificate as separate PEM files ({commonName}.key, {commonName}.crt, {commonName}-public.key) with one click, plus per-output copy-to-clipboard for instant pasting into configs.
- Completely free. No sign-up, no usage limits, no watermarks. Generate as many certificates as your development workflow demands.
Key Features
| Feature | Details |
|---|---|
| Key Algorithms | RSA and ECDSA, selectable from a single dropdown |
| Key Sizes | RSA: 2048 / 3072 / 4096 bits Β· ECDSA: P-256 / P-384 / P-521 curves |
| Validity Period | 1 to 825 days (browser-imposed cap), defaulting to 365 days |
| Subject Fields | commonName, organization, organizationalUnit, country, state, locality, email |
| SAN Support | Toggle Subject Alternative Names on/off and add unlimited domains |
| Output Format | Standard PEM-encoded .key, .crt, and public key files, plus optional CSR |
- Smart defaults. The commonName field defaults to localhost, so you can generate a working local HTTPS certificate without touching any other field.
- Country picker. A built-in dropdown with ISO codes (US, GB, CA, AU, DE, FR, JP, CN, IN, BR, MX, ES, IT, KR, RU, TH, SG, MY, PH, ID) prevents typos in the country field.
- Clipboard everywhere. Every output block β private key, public key, certificate, and CSR β has its own copy button, so you can paste straight into .env files, nginx configs, or Kubernetes secrets.
How to Use the Certificate Generator
- Fill in the subject fields. Start with the Common Name (the domain or hostname the certificate is for, e.g. localhost or api.local). Optionally add Organization, Organizational Unit, Country, State, Locality, and Email for a more complete certificate.
- Choose your key algorithm and size. Pick RSA with 2048, 3072, or 4096 bits for maximum compatibility, or ECDSA with P-256, P-384, or P-521 for smaller, faster keys.
- Set the validity period. Enter a number of days up to 825. The default of 365 days is a good starting point for most development certificates.
- Add Subject Alternative Names (optional). Toggle "Include SAN" on and list any extra domains or IP addresses the certificate should cover β for example localhost, 127.0.0.1, and myapp.local.
- Generate and download. Click generate to produce your keys and certificate, then download the .key, .crt, and public key files individually, or copy any output straight to your clipboard.
RSA vs ECDSA: Choosing the Right Key Algorithm
One of the first decisions you will make is whether to use RSA or ECDSA keys. Both are fully supported by the Certificate Generator, and the right choice depends on your priorities.
RSA is the veteran algorithm, supported by virtually every browser, server, and library in existence. The trade-off is key size: an RSA 2048-bit key provides roughly 112 bits of security, while RSA 3072 and RSA 4096 push that to 128 and ~150 bits respectively. Larger keys mean stronger security but slower handshakes and bigger files. For development, RSA 2048 is almost always enough; use 3072 or 4096 only when you are explicitly testing stricter security policies.
ECDSA (Elliptic Curve Digital Signature Algorithm) delivers equivalent or stronger security with dramatically smaller keys. A P-256 ECDSA key offers about 128 bits of security β comparable to RSA 3072 β but with a key a fraction of the size. P-384 (~192 bits) and P-521 (~256 bits) step up security further. The practical payoff is faster TLS handshakes, lower CPU usage, and smaller certificates, which matters for high-throughput services or mobile clients.
So which should you pick? Use ECDSA when you want speed and small keys and your toolchain supports it β virtually all modern browsers and servers do. Use RSA when you need to test against legacy systems, older devices, or corporate proxies that may not yet handle elliptic curves. The Certificate Generator lets you try both side by side, so you can benchmark each in your own environment.
Practical Use Cases
Local HTTPS Development
The most common scenario: you are building a web app locally and need HTTPS to test secure cookies, service workers, or browser APIs that require a secure context. Generate a certificate with commonName: localhost, add localhost and 127.0.0.1 as SANs, then import the resulting .crt into your browser's trust store (or simply click through the warning in development). Your local server can now serve HTTPS without errors.
Internal and Intranet Services
For services running on private networks β a staging server on staging.internal, a database admin UI on db.local, or a homelab dashboard β a public Certificate Authority will not issue a certificate for a non-routable domain. A self-signed cert with the right SANs lets you secure those internal endpoints and avoid browser warnings, while keeping everything within your own network.
Testing API Integrations
Many third-party APIs and webhook receivers require HTTPS on your end. If you are developing or testing a webhook handler locally, a self-signed certificate lets you run a local HTTPS server that can receive and validate incoming requests, webhooks, and OAuth callbacks β all without deploying to a public host first.
CI/CD and Automated Testing
In CI pipelines and integration test suites, you often need ephemeral certificates spun up on every run. Because the Certificate Generator runs entirely in the browser, it is easy to script certificate creation for ephemeral environments, or to reproduce the exact same parameters you would use in production tooling. Pair it with an automated trust-store step and your tests can validate real TLS behavior end to end.
Best Practices
- Never use self-signed certificates in production. They are perfect for development and testing, but browsers and clients will not trust them without manual intervention. For public-facing sites, always use a certificate from a trusted CA such as Let's Encrypt.
- Keep your private key private. Treat the .key file like a password. Store it securely, never commit it to version control, and rotate it if you suspect it has been exposed.
- Rotate certificates regularly. Even for local development, generating a fresh certificate every few months keeps your workflow current and prevents stale, long-lived credentials from piling up.
- Use SANs for multi-domain coverage. Modern browsers ignore the commonName field and rely on Subject Alternative Names. Always list every hostname and IP the certificate must protect β localhost, 127.0.0.1, and any .local domains β in the SAN field.
- Prefer ECDSA for performance. If your stack supports it, ECDSA P-256 offers an excellent balance of speed, size, and security for development servers and internal services.
- Mind the 825-day browser limit. Browsers reject certificates with validity periods longer than 825 days. The Certificate Generator enforces this cap, but keep it in mind when scripting certificates in other tools.
Start Generating Secure Certificates
Local HTTPS does not have to be painful. With the Certificate Generator, you can spin up a properly configured, PEM-formatted SSL/TLS certificate β RSA or ECDSA, single domain or multi-SAN β in under a minute, entirely in your browser, without ever exposing your private key.
Give it a try next time you are setting up a local dev server, testing webhooks, or securing an internal service. It is free, private, and ready when you are.
Related Tools You Might Like
Stay secure and happy coding!