Документация Apache mod_ssl для SSLCertificateFile и SSLCertificateKeyFile В директивах указано, что «настоятельно не рекомендуется» хранить закрытый ключ и сертификат SSL в одном файле.
Очевидно, что файл закрытого ключа должен храниться в безопасности, но если это так, есть ли какие-либо особые риски при хранении сертификата в том же файле? Мне любопытно узнать, почему такое поведение поддерживается и при этом категорически не рекомендуется без объяснения причин.
Файл сертификата SSL - это замок.
Файл ключа сертификата SSL является его ключом.
Хранить их вместе - это то же самое, что приклеить ключ к замку на входной двери.
Если злоумышленник скомпрометирует единственный файл, у него будет все необходимое для успешного имитации вашего веб-сайта (сертификат и закрытый ключ).
Это особенно верно, если у вас нет парольной фразы на вашем SSL-ключе (на многих веб-серверах ее нет, чтобы они могли автоматически запускаться в случае сбоя).
От чего вы защищаетесь, разделяя файлы, - это ошибка Apache, из-за которой он сбрасывает содержимое SSLCertificateFile
(то, что должно быть общедоступным) для веб-клиента.
(Насколько мне известно, такой ошибки не существует и никогда не существовало, но Apache - это большая и сложная программа. Это вполне возможно.)
Если Apache выгружает этот файл, и все, что он содержит, - это сертификат SSL (блокировка), проблем нет: каждый получает копию этого сертификата, когда делает запрос SSL на сервер.
Если файл также содержит ключ, вы упустили шанс на безопасность - вся ваша модель шифрования скомпрометирована, и вам необходимо сменить ключи.
Для старых версий OpenSSL требовалось два отдельных файла (общедоступный и частный). Старым версиям других крипто-движков требовался один файл (оба в одном файле). В «духе» совместимости (также известном как «жалобы администратора на несогласованность и необходимость поддерживать два набора сертификатов») большинство теперь поддерживают оба.
Не рекомендуется хранить оба сертификата (а также цепочку ключей) в одном файле, поскольку разные сертификаты имеют разную область действия. Это скорее проблема согласованности, чем техническая, когда общедоступный сертификат должен иметь права доступа к общедоступным файлам, и наоборот, для частного. Нет никакой опасности в том, чтобы держать ваш публичный сертификат под замком и ключом в ваших системах, он просто несовместим с его назначением.