Как сохранить ключ ssl для нашего сайта в тайне?

12

Я хочу сохранить наш ключ SSL для нашего сайта в тайне. Он хранится на 2 USB-флешках, одна в сейфе, а другая в безопасности. И тогда я единственный, кто применяет его к веб-серверу, чтобы он был полностью безопасным.

Кроме...

По крайней мере, на IIS вы можете экспортировать ключ. Таким образом, любой, кто является администратором, может получить копию ключа. Есть ли способ обойти это? Или по определению все администраторы имеют полный доступ ко всем ключам?

Обновление: у меня есть системные администраторы, которым я полностью доверяю. Это привело к тому, что один из них ушел (у нас был час, чтобы добраться до нашей компании, 5 минут - до новой). Хотя я доверяю этому человеку, так же как мы отключаем его учетную запись Active Directory, когда кто-то уходит, я подумал, что у нас должен быть способ гарантировать, что они не сохранят возможность использовать наш SSL.

И что мне показалось легче всего, так это то, что я единственный, у кого это есть. Срок действия нашего сертификата истекает в январе, поэтому пришло время изменить практику, если бы мы могли. Судя по ответам, похоже, что мы не можем.

Таким образом, это приводит к новому вопросу - когда кто-то, имеющий доступ к сертификату, уходит, это обычная практика - получить новый сертификат и отозвать существующий. Или если человек, который ушел, заслуживает доверия, тогда мы продолжим с имеющимся у нас сертификатом?

Дэвид Тилен
источник
5
Даже если используемый вами сервер не позволил вам экспортировать его, он все равно должен находиться в памяти и, следовательно, может быть извлечен. Единственный вариант, который я вижу, - это использование аппаратного криптомодуля, например, смарт-карта с тремя ключами и ключом, но любой, кто имеет физический доступ к машине, может ее украсть. Вы все еще можете отозвать его, если он украден.
user2313067
27
Если вы не можете доверять своим администраторам, у вас есть проблемы с персоналом.
Майкл Хэмптон
5
Почему вы сначала скопировали ключ на эти USB-носители? Секретный ключ, используемый с SSL, не обязательно должен находиться в другом месте, кроме сервера, на котором он используется. (Конечно, он может быть включен в резервные копии сервера, но менее важно создать резервную копию этого ключа, чем другие данные на сервере, поскольку вы всегда можете сгенерировать новый секретный ключ и подписать его, как вы делали с старый.)
kasperd
Я не эксперт в этой области, но разве не существуют аппаратные модули encryprion, которые содержат ключ, который остается внутри них, и входят только запросы на подпись и выходят подписи? Пайка или приклеивание одного к серверу может быть решением.
Матега

Ответы:

26

Человек с административным (или часто даже физическим) доступом к серверу сможет извлечь секретный ключ. Будь то через экспорт, анализирование памяти или другие подобные хитрости.

Ваши администраторы имеют доступ к закрытым ключам ваших веб-серверов. Примите это как факт и обойдите это. Если ваши системные администраторы не заслуживают доверия, вам могут потребоваться лучшие системные администраторы или, по крайней мере, меньшее количество системных администраторов с доступом к веб-серверам. Если это вопрос паранойи безопасности управления, то может возникнуть более серьезная проблема, связанная с их способностью доверять сисадмину.

Это не значит, что вы должны просто позволить всем иметь доступ к закрытому ключу. Всегда должен быть доступ, прежде чем доступ будет предоставлен. Имея это в виду, собираетесь ли вы принять крайние меры, чтобы системный администратор с полным контролем над веб-сайтом не мог экспортировать закрытый ключ, но мог бы по-прежнему манипулировать самим сайтом любым количеством практически недоступных для отслеживания способов? Мы вернулись к доверию, и я думаю, что это является ядром проблемы, которую необходимо решить.

Hyppy
источник
2
+1 за «Ваши администраторы имеют доступ к закрытым ключам ваших веб-серверов. Примите это как факт и обойдите это». Вопросы на тему «Как я могу помешать людям с правами администратора делать X?» указать на более глубокую проблему для меня. Либо слишком недоверчив, либо слишком слабо выдает права администратора.
Брэндон
2
Я уточнил, почему я спросил. Это не проблема сисадминов, это желание следовать лучшим практикам.
Дэвид Тилен
11

Когда вы импортируете ключ, у вас есть возможность пометить его как неэкспортируемый. Это не позволит вам использовать IIS или сертификат MMC для его экспорта. По крайней мере, это немного усложняет.

Однако, если у них есть учетная запись администратора или физический доступ к ней, они все равно смогут получить ключ другими способами.

Грант
источник
1
Это действительно не намного сложнее. isecpartners.com/tools/application-security/jailbreak.aspx
Грег Аскью
0

Здесь может помочь «промежуточный ЦС».

«Root CA» в этом примере ниже принадлежит компании SSL, а не вам.

У вас нет прямого контроля над ключами, созданными корневым центром сертификации, поэтому, если ключ, подписанный корневым центром сертификации, скомпрометирован, вы должны пройти через них, чтобы отозвать его.

Но:

Root CA (SSL company)
 |
 +-Intermediate CA (You)
   |
   +-Server Key for site

Если вы разместите другой центр сертификации в середине и купленный SSL-сертификат будет подписывать ваш собственный сертификат CA вместо прямой подписи сертификата сервера, вы можете сохранить контроль над сертификатами сервера, указанными ниже, и выдавать сертификаты отзыва или делать что-либо еще, если что-то ниже этого будет скомпрометировано. ,

Вы храните закрытый ключ Intermediate CA при себе, и администраторы не должны его видеть.

Вы также можете сделать это:

Root CA (SSL company)
 |
 +-Intermediate CA (You)
   |
   +-Server Key 1 for site
   +-Server Key 2 for site 
   +-Server Key 3 for site

Вы можете подготовиться к компромиссу и сгенерировать сертификаты заранее, чтобы вы могли быстро переключаться в случае отзыва отдельного ключа. Администраторы не получают ключи на 2 или 3 до тех пор, пока не скомпрометируют 1. Вы можете разместить на своем сайте уведомление об этой схеме, и это также сообщит вашим администраторам, что вы готовы в случае компромисса и что смешной бизнес на их конец не разрушит ваш сайт.

LawrenceC
источник
1
Не вызовет ли это предупреждения SSL для пользователей для ненадежного ЦС?
ceejayoz
1
Полагаю, это будет хорошо работать, только если вы сможете установить ЦС в качестве доверенного сертификата в браузере пользователя, например в настройке корпоративной интрасети. Я знал, что что-то не так с моей блестящей схемой. :(
LawrenceC
0

Есть много статей, которые предлагают хранить закрытые ключи где-то, кроме сервера, но эти закрытые ключи предназначены для сертификатов подписи кода . Представьте, что у вас есть ключи на автономном компьютере, к которым есть доступ только у вас, написано какое-то программное обеспечение, вы получаете закрытый ключ с автономного сервера, подписываете код, а затем вам больше не нужен закрытый ключ, пока вам не понадобится подписать некоторые из них. Снова код

Лучшее решение всегда было и будет хранить ваш ключ в автономном режиме. То, как вы это делаете, полностью зависит от вас (есть несколько методов), просто помните, чтобы держать его в надежном месте в офисном сейфе или в другом месте, которое непросто кому-то положить в карман.

Узнайте больше по адресу: https://www.thesslstore.com/blog/heres-what-happens-when-your-private-key-gets-compromised/

В противоположность этому, SSL-сертификаты предназначены для веб-сайтов, обеспечивающих связь HTTPS: закрытый ключ необходим во время каждого рукопожатия веб-сервером. Поэтому хранение его в автономном режиме не будет работать.

CodingYoshi
источник