Просто чтобы убедиться, что у нас понятная терминология, «сертификат SSL» на обычном языке действительно состоит из двух компонентов:
- Публичный сертификат
- Закрытый ключ
Компонент общедоступного сертификата подписывается выбранным вами CA (центром сертификации), после чего он может свободно распространяться. Его не нужно защищать или шифровать, и он действительно будет отправлен клиентам, которые подключаются к вашему серверу в рамках согласования SSL.
Компонент закрытого ключа должен быть защищен. В большинстве случаев это просто сохраняется в виде зашифрованного файла на сервере. Высококлассные решения используют выделенное «защищенное от взлома» криптографическое оборудование (HSMs - аппаратные модули безопасности) для хранения закрытого ключа. Они варьируются от решений на основе смарт-карт до многоключевых, сетевых устройств с элементами управления m / n и т. Д. И т. Д. Существуют риски (не говоря уже о затратах), связанные с HSM, которые я не буду здесь рассматривать.
Многие приложения просто сохраняют закрытый ключ на диске. Существует несколько вариантов защиты файла ключа:
- Положитесь на безопасность разрешений системы и файлов (т.е. не шифруйте закрытый ключ). Например, большинство демонов ssh делают это.
- Используйте любой механизм, который ваш сервер предоставляет для шифрования файла - шифрование, защищенное паролем, является стандартной функцией для большинства веб-серверов. (Если вы используете собственный API-интерфейс OpenSSL, выберите один из очевидных форматов встроенного ключа).
Как всегда, есть обмен безопасности. В частности, если вы используете защищенное паролем шифрование файла закрытого ключа и неожиданно перезагружаете приложение (например, отключение электропитания), тогда кому-то понадобится предоставить пароль для приложения при его перезапуске. Хранение пароля в файле, который читается сценариями инициализации системы (как поощряется, по крайней мере, двумя поставщиками веб-серверов), мало что дает с точки зрения реальной безопасности. Трудно рекомендовать оставить файл с закрытым ключом незашифрованным, но если вы являетесь единственным администратором / техником в небольшом магазине, вам обязательно следует подумать о том, что может произойти, если сервер перезагружается, когда вы недоступны, и каковы могут быть затраты для вашего бизнеса ,