Почему закрытый ключ не должен быть сохранен дословно или в простом тексте на локальном компьютере?

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

Майкл: есть вполне реальная причина, по которой ваш сценарий не может создать каталог, у пользователя, работающего с PHP (который может отличаться от Apache), просто нет достаточных разрешений для этого. Вместо того, чтобы изменять разрешения, я думаю, вам следует решить основную проблему, то есть у ваших файлов неправильный владелец или Apache или PHP работают под неверным пользователем.

Похоже, у вас установлен собственный сервер. Вы можете определить, какой пользователь запускает PHP, запустив простой скрипт, который вызывает программу whoami, установленную в большинстве linux:

<?php
echo `whoami`;

Если все правильно, вы должны увидеть имя пользователя, под которым работает PHP. В зависимости от вашей ОС это может быть «www-data», «nobody», «http» или любой другой вариант. Если ваш сайт является единственным запущенным сайтом, это легко изменить, изменив пользователя, под которым работает Apache. Если у вас Debian, как я склонен, вы можете отредактировать файл / etc / apache2 / envvars (как root) и изменить значение для APACHE_RUN_USER. В зависимости от вашей ОС, эта переменная может быть установлена ​​в другом файле конфигурации, поэтому, если вы не можете найти ее в / etc / apache2 / envvars, попробуйте найти объявление переменной, используя:

$ grep -R "APACHE_RUN_USER=" .

Из каталога находятся все файлы apache-config.

Если вы не единственный на сервере, возможно, вы захотите создать учетные записи пользователей для каждого веб-сайта и использовать что-то вроде Apache2-MPM-ITK для изменения RUN_USER в зависимости от того, какой веб-сайт вызывается. Кроме того, убедитесь, что пользователь, под которым выполняется процесс PHP, является владельцем файлов и каталогов. Это можно сделать с помощью команды chown:

% chown theuser:theuser -R /var/www/website/

Если PHP работает со своим собственным пользователем и является владельцем файлов и каталогов, в которые он должен записывать, разрешения 700 будет достаточно. Я обычно использую 750 для большинства файлов, так как в этой группе обычно несколько пользователей, и они могут иметь права на чтение. Таким образом, вы можете изменить разрешения:

% chmod 0750 -R /var/www/website/

Это должно быть. Если у вас возникли проблемы, сообщите нам, и , пожалуйста, никогда не принимайте никаких советов, которые, по сути, говорят вам: если безопасность беспокоит вас, удалите защиту.

5
задан Scott Langham 15 June 2009 в 10:50
поделиться

3 ответа

Да, «никогда» в процитированном предложении действительно означает никогда .

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

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

4
ответ дан 14 December 2019 в 01:15
поделиться

Распространенным решением является шифрование закрытых ключей в цепочке для ключей, например, с помощью какой-либо схемы шифрования на основе пароля.

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

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

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

3
ответ дан 14 December 2019 в 01:15
поделиться

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

2
ответ дан 14 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: