Генератор на самоподписан сертификат
Генерирайте самоподписани SSL/TLS сертификати за локално разработване и тестване. Създавайте X.509 сертификати с настраивана валидност, размер на ключ и детали на субект.
Вход
Изход
Прочети ме
Какво е самоподписан сертификат?
Самоподписаният сертификат е дигитален сертификат, който е подписан от своя собствен създател, а не от доверена Удостоверяваща служба (CA). За разлика от сертификатите издадени от CA като Let's Encrypt, DigiCert или Comodo, самоподписаните сертификати не се доверяват автоматично от браузъри и операционни системи.
Дигиталните сертификати използват криптография с публичен ключ, за да установят защитени, криптирани връзки между клиенти и сървъри. Те съдържат информация за притежателя на сертификата (субект), издавателя, периода на валидност и публичен ключ. Когато сървър представи сертификат, клиентът го проверява спрямо доверени корневи сертификати, за да гарантира, че връзката е защитена и автентична.
Как работи генериране на сертификати?
Процесът на генериране на сертификати включва няколко криптографски стъпки:
Генериране на двойка ключове: Генерира се RSA двойка ключове (публичен и частен ключ). Частният ключ трябва да се пази в тайна, докато публичният ключ е вграден в сертификата.
Създаване на сертификат: Създава се структура на сертификат, съдържаща информацията за субекта (Common Name, Organization, Country и т.н.), дати на валидност и публичен ключ.
Самоподписване: Сертификатът е дигитално подписан с помощта на частния ключ и хеш алгоритъм (SHA-256, SHA-384 или SHA-512). Този подпис позволява на всеки, който има публичния ключ, да провери интегритета на сертификата.
PEM кодиране: Сертификатът и частният ключ се кодират в PEM (Privacy-Enhanced Mail) формат, Base64-кодиран формат, който се поддържа широко от сървъри и приложения.
Описание на инструмента
Този инструмент генерира самоподписани X.509 сертификати и техните съответни частни ключове директно в браузъра ви. Никакви данни не се изпращат на сървър—всички криптографски операции се извършват локално с помощта на библиотеката node-forge. Можете да персонализирате полетата на субекта на сертификата, размера на ключа, периода на валидност и алгоритъма на подписване, за да отговарят на вашите специфични изисквания.
Примери
Основен localhost сертификат:
- Common Name:
localhost - Размер на ключа: 2048 бита
- Валидност: 1 година
- Алгоритъм: SHA-256
Сертификат за разработчик сървър:
- Common Name:
dev.myapp.local - Organization:
My Company - Country:
US - Размер на ключа: 2048 бита
- Валидност: 2 години
Формат на изход (Сертификат):
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAJC1HiIAZAiUMA0GCSqGSIb3QasEBBUAMEUxCzAJBgNV
...
-----END CERTIFICATE-----Формат на изход (Частен ключ):
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA0Z3VS5JJcds3xfn/ygWyF8PbnGy...
...
-----END RSA PRIVATE KEY-----Функции
- Генериране в браузър: Всички криптографски операции се изпълняват локално в браузъра ви без комуникация със сървър
- Конфигурируеми размери на ключове: Изберете от 1024, 2048, 3072 или 4096-битови RSA ключове за различни нива на сигурност
- Множество алгоритми на подписване: Поддръжка за SHA-256, SHA-384 и SHA-512 хеш алгоритми
- Пълни X.509 полета: Задайте Common Name, Organization, Organizational Unit, Country, State и Locality
- Гъвкави периоди на валидност: Генерирайте сертификати валидни от 30 дни до 10 години
Обяснение на полетата на сертификата
| Поле | Описание | Пример |
|---|---|---|
| Common Name (CN) | Доменното име или хостнеймът, за който е сертификатът | localhost, example.com |
| Organization (O) | Юридическо име на организацията | Acme Corporation |
| Organizational Unit (OU) | Отдел или дивизия | IT Department |
| Country (C) | Двубуквен ISO код на държава | US, GB, DE |
| State/Province (ST) | Име на щат или провинция | California |
| Locality (L) | Град или град | San Francisco |
Препоръки за размер на ключа
- 1024 бита: Не се препоръчва за производство; подходящо само за тестване
- 2048 бита: Стандартно ниво на сигурност; препоръчано за повечето случаи на употреба
- 3072 бита: Подобрена сигурност; добро за чувствителни среди за разработка
- 4096 бита: Максимална сигурност; по-бавно генериране, но най-висока защита
Случаи на употреба
Локални разработчик сървъри: Създайте HTTPS сертификати за localhost, за да тествате защитени функции като Service Workers, Geolocation API или WebRTC, които изискват защитени контексти
Вътрешни тестови среди: Генерирайте сертификати за staging сървъри и QA среди, където CA-подписани сертификати не са необходими
Docker и контейнеризирани приложения: Защитена комуникация между контейнери в разработка или изолирани мрежи
Разработка и тестване на API: Активирайте HTTPS за локални API сървъри, за да тествате OAuth потоци, защитени webhooks и certificate pinning
Обучение и образование: Разберете как работят SSL/TLS сертификатите, като генерирате и инспектирате собствени сертификати
Инструкции за инсталация
След генериране на сертификата ви, ще трябва да конфигурирате сървъра си и потенциално да доверите сертификата:
За Node.js/Express:
const https = require("https");
const fs = require("fs");
const options = {
key: fs.readFileSync("private-key.pem"),
cert: fs.readFileSync("certificate.pem"),
};
https.createServer(options, app).listen(443);За nginx:
server {
listen 443 ssl;
ssl_certificate /path/to/certificate.pem;
ssl_certificate_key /path/to/private-key.pem;
}Доверие на сертификата (macOS):
- Отворете Keychain Access
- Импортирайте файла certificate.pem
- Двойно щракнете на сертификата и задайте "Trust" на "Always Trust"
Доверие на сертификата (Windows):
- Двойно щракнете на файла certificate.pem
- Щракнете на "Install Certificate"
- Изберете "Local Machine" и поставете в "Trusted Root Certification Authorities"
Съображения за сигурност
- Никога не използвайте самоподписани сертификати в производство за публично достъпни уебсайтове
- Пазете вашия частен ключ защитен—всеки, който има достъп, може да се преструва на вашия сървър
- Самоподписаните сертификати ще показват предупреждения в браузъра, тъй като не се доверяват по подразбиране
- Използвайте кратки периоди на валидност за разработка, за да насърчите ротация на сертификати
- Помислете за използване на инструменти като mkcert за разработка, ако имате нужда от доверени локални сертификати