SAT Digital Certificates
In Your Browser.

The modern, zero-install platform that replaces the outdated Java desktop application. Generate FIEL, CSD, and more — on any device, with zero friction.

Scroll to explore

SAT's Official Tool is Stuck in 2004

The official Certifica64bits.jar (Solcedi v4.10) is the only way to generate digital certificates for Mexico's tax authority. But it comes with serious limitations.

💻

Painful to Run on macOS & Linux

Technically cross-platform as a .jar, but in practice a nightmare: macOS Gatekeeper blocks it, Finder won't open it, and Java 9+ crashes with module errors. Users must open Terminal and run java --add-opens ... -jar Certifica.jar — impossible for non-technical people.

Requires Java 8

Users must install a specific, outdated Java Runtime Environment. This is a massive barrier for non-technical people — the elderly, students, small business owners.

🌐

No Web or API Version

There is no cloud edition, no REST API, no way to integrate with other software. Every interaction is manual and desktop-bound.

🚧

Hard to Use

An intimidating UI lifted straight from early 2000s enterprise Java. Confusing for anyone who isn't an accountant or systems engineer.

📦
Certifica64bits.jar — The Status Quo Desktop-only · Java 8 · No API · No mobile · No cloud

Certifica: Zero Install. Any Device.

We reverse-engineered and re-implemented every byte of the SAT's output format in Rust — compiled to WebAssembly — so it runs instantly in any modern browser.

🌍

Any Browser

Chrome, Safari, Firefox, Edge — no installs needed.

🔑

Privacy First

Keys generated client-side or in a stateless Worker. Nothing stored.

📦

Byte-Identical

Output matches the SAT tool exactly. Same .key, .req, .ren, .sdg formats.

Always Fresh

We track the SAT's jar with git diff. Every update is caught and ported.

Everything the SAT Tool Does — and More

Three core workflows cover all SAT digital certificate needs. Click any card to see details.

NEW REQUEST

FIEL (e.firma) Requisition

Generate a new electronic signature — the digital identity every Mexican taxpayer needs.

Creates a password-protected .key file (PBES2/PBKDF2 + DES-EDE3-CBC encrypted PKCS#8) and a .req PKCS#10 Certificate Signing Request with SHA1withRSA signature. Drop the .req on the SAT portal and you're done.
RENEWAL

FIEL Renewal

Renew an existing e.firma using your current keys — without losing your certificate.

Upload your current .key and .cer. Certifica decrypts the key, signs a new CSR with the current private key, and produces a CMS SignedData .ren package that the SAT accepts for renewal.
BUSINESS

CSD (Sello Digital)

Generate digital seal certificates for businesses — up to 30 branches in one go.

Produce one .key + .req per branch, zip all .req files, wrap everything in a CMS SignedData .sdg container signed by the company's vigente e.firma. RFC/identity auto-filled from your uploaded .cer.

Bonus tools — all free

✅ RFC Validator
✅ CURP Validator
🔐 Keypair Generator
📄 Certificate Inspector
🔑 .key Password Recovery

How It Works Under the Hood

A three-layer stack engineered for speed, portability, and cryptographic correctness.

Layer 1
Browser
HTML + CSS + JS
Cloudflare Pages
Layer 2
Worker API
TypeScript
Cloudflare Workers
Layer 3
Rust Core
RSA · CMS · PKCS
WebAssembly
Byte-identical to the SAT official tool. Every CSR subject, CMS signed attribute, PBES2 layout, file name, and .sdg ZIP structure matches Certifica64bits.jar exactly — verified by cross-implementation test suite against the real Java output.

Blazing Fast. Powered by Rust.

Every millisecond matters. Certifica's Rust core compiles to WebAssembly, delivering near-native performance — no JVM warmup, no garbage collection pauses, no sluggish Java Swing UI.

🐢

LEGACY SAT Java Tool

BouncyCastle + Java 8 + AWT/Swing
⚠ JVM cold start: 2-5 seconds
⚠ AWT dialog rendering is slow
⚠ No HTTP — no API at all
⚠ Only one operation at a time

Time lost just launching the app, every single use.

MODERN Certifica (Rust + WASM)

Rust → WebAssembly + Cloudflare Workers
✔ Page loads in milliseconds
✔ WASM executes at near-native speed
✔ Zero-install — instant access
✔ API: cold start in ~5ms (V8 isolates)
✔ Concurrent requests, no bottlenecks

Everything happens now. No waiting. No friction.

Rust compiles to WebAssembly with zero runtime overhead. The same code that generates RSA keys, signs CSRs, and encrypts key files runs at compiled-native speed — whether it's in a browser tab or behind a Worker API endpoint. No interpreted JVM bytecode. No GC pauses mid-operation. Just pure, predictable, low-latency performance.

See How Easy It Is

Walk through a FIEL (e.firma) requisition — the most common workflow. Click each step.

certifica — FIEL Requisition
1. Identity
2. Password
3. Generate
4. Download
👤 Step 1: Enter Your Identity

Type in your RFC (tax ID), CURP, full name, and email. Certifica validates each field instantly as you type — no need to guess if your RFC is formatted correctly.

🔒 Step 2: Create a Strong Password

Choose a password to protect your private key. The strength meter gives real-time feedback — mixing OS entropy with your input to ensure cryptographic-grade protection.

⚡ Step 3: Click "Generate"

Your RSA 2048-bit key pair is generated in the browser (or optionally via the stateless Worker API). The private key is encrypted with your password. A PKCS#10 CSR is signed. Nothing is ever stored or transmitted.

📥 Step 4: Download Your Files

You get two files ready to use: Claveprivada_FIEL_*.key (your password-protected private key) and a .req (the signing request). Upload the .req to the SAT portal — that's it.

Stronger Than the Original

The SAT's Java tool collects entropy only from mouse movements. If the user barely moves the mouse, the RSA key can be predictable. Certifica fixes this — without breaking compatibility.

LEGACY SAT Java Tool

BouncyCastle + Java 8
1. User moves mouse on "Random Numbers" screen
2. Each movement yields: (mouseX × 1000) + mouseY → 1 byte
3. 2,048 movements for a 2,048-bit RSA key
4. Raw bytes feed SecureRandom directly
5. Key generated with BouncyCastle

⚠ If the mouse stays still or moves in small patterns, entropy is dangerously low.

MODERN Certifica (Rust + WASM)

Rust rsa crate + getrandom + ChaCha CSPRNG
1. Mouse bytes collected (same contract as SAT)
2. fixed_seed() — expands to key_size bytes via SHA-256
3. rng_from_seed() — mixes in 32 bytes of OS entropy
4. Combined seed hashed with SHA-256
5. ChaCha-based StdRng CSPRNG seeded
6. RSA key generated with rsa crate

✔ Even if the user sits perfectly still, the OS entropy (/dev/urandom or Crypto.getRandomValues()) guarantees an unpredictable key.

Certifica preserves the SAT's mouse-collection contract but adds a mandatory 32-byte OS entropy layer. The mouse still contributes, making keys non-deterministic even on the same device — but security never depends on mouse movement alone. Output is byte-identical to the original format, so the SAT portal accepts it without changes.

It's Completely Free — Today

No accounts. No limits. No tracking. Every feature is open and available.

🎉

$0 · Forever Free

No plan to change this. FIEL, CSD, renewal, validators, certificate inspector, key recovery — all free, forever.

No sign-up
No data stored
No paywalls
Unlimited use
🔗 Try It Live
💰

Future: Individual Pricing

If direct consumer monetization becomes necessary, here's how it could work — simple, fair, and transparent.

Pay-per-generation
Small fee per .req / .ren / .sdg generated. Pay only when you actually use it.
Usage bundles
Prepay for a pack of generations at a discount. Ideal for people who do this yearly.
API tokens for individuals
Pay-as-you-go API access for personal automation scripts and integrations.

Free for Individuals. Monetizable at Scale.

The platform is already production-grade. Here are the paths to revenue — none of which touch the free individual experience.

📡

API-as-a-Service

Sell API access for automated certificate workflows. Tiered pricing: free tier (N calls/day), pro (unlimited), enterprise (SLA). Accountants and payroll SaaS companies would integrate directly.

High margin · Recurring revenue
🏢

B2B White-Label

Despachos contables, notarios, and corporation legal teams need bulk certificate operations. Offer a white-label portal with their branding, user management, and audit logs — priced per seat.

Sticky · Enterprise contracts
💳

Usage-Based Pricing

Organizations pay per certificate generated, per user, or per month. Transparent metered billing that scales from a single accountant to a 500-person firm.

Flexible · Fair pricing
🛡

Enterprise Add-Ons

SSO (SAML/OIDC), role-based access control, audit trails, compliance reports, batch operations API, dedicated support SLAs with guaranteed response times. The stuff big companies pay for.

Premium · High value

Certifica vs. The SAT Official Tool

A direct comparison of what each platform delivers.

Capability
Certifica
SAT Java Jar
Works in any browser
Runs on macOS & Linux
No installation required
REST API for automation
Mobile-friendly (PWA)
OS entropy for key generation
Byte-identical SAT output
FIEL + CSD + Renewal + Tools
Privacy-first (no data stored)
local

One Core. Every Platform.

The Rust cryptographic engine compiles to WebAssembly today — but it can target every device. Native apps are a straightforward extension, not a rewrite.

🌍

Web (Today)

Cloudflare Pages + Worker + WASM. Already live, works everywhere.

Rust WASM
📱

iOS

SwiftUI wrapper around the Rust core via FFI. Distribute on the App Store.

Swift + Rust FFI
📲

Android

Kotlin/Jetpack Compose + Rust NDK. Publish on Google Play.

Kotlin + Rust NDK
🖥

Desktop

Tauri or Electron shell around the same WASM/Worker. Windows, macOS, Linux.

Tauri + Rust
Rust Core
cryptographic engine
Web (WASM) iOS (FFI) Android (NDK) Desktop (Tauri) Worker (API) CLI (binary)

Same Rust crate. Same byte-identical output. Same security guarantees. Just a different UI shell.

Ready to Modernize
SAT Digital Certificates?

Certifica is live and production-tested. It's already a better experience than the official tool. The monetization paths are clear. The future cross-platform apps are a single Rust crate away.

Privacy-first. Byte-identical to SAT. Ready for scale.