Итак, у меня есть собственный центр сертификации для самоподписывающихся сертификатов SSL, но я потерял корневой сертификат. У меня есть несколько зависимых сертификатов, в которых указана информация о моем корневом сертификате. У меня есть закрытый ключ центра сертификации и пароль для его разблокировки. Учитывая, как работает криптография с открытым ключом, кажется, что можно воссоздать мой корневой сертификат из ключа, но мой google-foo и справочная страница для openssl меня не смогли.
Если вы сохранили закрытый ключ как файл PEM, у вас есть файл, который выглядит следующим образом:
-----BEGIN RSA PRIVATE KEY-----
base64 encoded data
-----END RSA PRIVATE KEY-----
Этот файл на самом деле содержит как открытый, так и закрытый ключ, и открытый ключ можно извлечь, запустив
openssl pkey -pubout -in key.pem
Чтобы создать новый ЦС на основе этого ключа, просто следуйте обычные инструкции. Единственная разница в том, что вы не создаете новый ключ, а используете существующий.
При создании нового ЦС убедитесь, что вы используете именно ту информацию, которую вы использовали в исходном сертификате. Они должны соответствовать информации об издателе в уже созданных сертификатах. Если они этого не делают, этот новый ЦС даже не рассматривается как возможный эмитент листового сертификата. Но как только эта информация соответствует, проверка должна быть успешной, потому что для использования сертификата был подписан тот же ключ.
Ответ Штеффена лучше, если вы не можете где-то найти резервную копию исходного корневого сертификата. Однако у вас могут быть его копии, валяющиеся в таких местах, как приложения или доверенные хранилища, которым он был нужен для целей доверия. Вы когда-нибудь импортировали сертификат CA в подобное место?