mini-acme
Описание
mini-acme - самодостаточный мини-проект ACME-клиента (RFC 8555) на чистом C/CPP, построенный на библиотеке crypery. Внешних зависимостей нет: все криптоалгоритмы реализованы с нуля внутри библиотеки crypery.
Клиент получает X.509-сертификаты по протоколу ACME: регистрация учётных записей, JWS-подписанные запросы, проверка владения доменом по HTTP-01 challenge, выпуск сертификатов. Поддерживаются многодоменные (SAN) сертификаты: повторяйте -domain (например, apex + www).
Используемые модули
- tls - базовый криптографический слой: TLS 1.2/1.3, AES-128-GCM, SHA-256, HMAC/HKDF, RSA-2048, ECDH (P-256, X25519), генерация и разбор X.509-сертификатов (DER/PEM)
- ssl - OpenSSL-совместимый API-слой над встроенной реализацией TLS: загрузка сертификата и ключа из PEM, рукопожатие, шифрованный ввод-вывод
- http - HTTP/1.1-сервер: маршрутизация, раздача статики, WebSocket, SSE, gzip-сжатие
- url - HTTP/HTTPS-клиент: разбор URL, выполнение запросов, обработка редиректов, multipart/form-data
Технологии
- C/CPP - язык реализации
- crypery - сетевой стек на чистом C без внешних криптографических зависимостей (модули tls, ssl, http, url)
- Криптография: TLS 1.2/1.3, AES-128-GCM, SHA-256, HMAC/HKDF, RSA-2048, ECDH (P-256, X25519), X.509, JWS
- MinGW/GCC (Windows), Unix-подобные системы
- Лицензия GNU AGPL v3 (Affero GPL)