Существуют и были центры сертификации, которые предоставляют услуги по генерации пары ключей. Однако это определенно не должно быть предпочтительным способом. Во-первых, это позволяет ЦС действовать как объект, у которого есть закрытый ключ, поскольку они могли его сохранить. $^1$. Во-вторых, это означает, что транспортировка закрытого ключа должна быть защищена. Наконец, это также может сделать хранилище менее безопасным; как правило, вы не хотите, чтобы значение помещалось в незащищенную память, которая также может быть заменена на запоминающее устройство.
Как правило, вы должны попытаться сохранить закрытый ключ как можно более безопасным. В основном это означает, что значение ключа передается только если требуется резервная копия. Иногда предпочтительнее просто запросить новый ключ, но генерация новой пары ключей означает, что сертификат также необходимо заменить, а это может потребовать слишком много ресурсов (деньги, накладные расходы на связь, процедуры управления ключами и т. д.). Иногда значение ключа также может использоваться несколькими связанными серверами (например, для сертификатов с подстановочными знаками).
Обратите внимание, что для запроса сертификата вы подписываете только запрос на подпись сертификата или CSR, используя закрытый ключ. Это позволяет закрытому ключу оставаться в защищенном хранилище ключей или (аппаратном) токене, таком как TPM или HSM, а не загружаться в незащищенную память.
Одним из ЦС, который предоставлял услуги по генерации пары ключей, был DigiNotar. Это был заведомо небезопасный ЦС, который обанкротился после того, как обнаружилось, что можно запрашивать сертификаты для любого домена.
$^1$ хотя могли конечно подписать любой невалидный запрос на сертификат - запрос конкретного пользователя им в принципе был бы не нужен; хотя процесс будет несколько другим, и обычно он должен заканчиваться в журнале аудита, если они собираются подписывать свои собственные запросы.