Есть такой весьма удобный набор Shell-скриптов под названием
Easy-RSA. Хорош там, где надо по-быстрому сляпать какой-нибудь mutual TLS на базе X509, а "полновесный" PKI из серии всяких
OpenXPKI или
XCA тащить в проект не очень хочется. Изначально Easy-RSA разрабатывался для OpenVPN, но так-то никто не запрещает при его помощи выпускать сертификаты для веб-серверов, IPSec-ов и всего остального. Если использовать "в одно рыло", то самое оно. Есть всё нужное, нет ничего лишнего.
Единственное, к стабильному выпуску Debian прилагается версия
3.1.0, в которой команда "renew" работает скорее как "rebuild". То есть вместе с сертификатом заново генерирует и закрытый ключ. Что в ряде случаев не очень желательно, потому что потом придется думать о том как безопасно передать этот самый закрытый ключ конченному пользователю.
А вот в версии 3.1.2 они поменяли логику работы. И дальше "renew" начинает работать именно как "renew", то есть перевыпускает сертификат на новый срок с прежним ключом. А заодно избавляет от необходимости заново вводить все остальные параметры запроса. Ещё в 3.1.2 по умолчанию включили автоматическую генерацию inline-кода. То есть после выпуска сертификата создается файл, в который уже сложены все эти ca / cert / key, обёрнутые в нужные теги. Можно просто конкатенировать (пристыковать) "как есть" к конфигу клиента, и не надо все вот эти copy-paste. Тоже понравилось.
Вывод: берите пакет easy-rsa из
тестируемого выпуска Debian или непосредственно с GitHub-а (ссылка есть выше). На момент написания этого поста актуальная версия 3.1.7. Я у себя опробовал: работает нормально.