Как создать ключ openSSL с помощью парольной фразы из командной строки?



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



во-вторых-как мне создать пару ключей из командной строки, указав парольную фразу в командной строке?





Я, наконец, получил его работу с помощью этих команд, используя exec (), который обычно считается небезопасным для использования, лучше дать парольную фразу в файле. Я могу примите этот риск, поскольку я уверен, что PHP будет выполняться только на моем ПК (который работает под управлением windows и не имеет команды PS).



openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 2048
openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub


большое спасибо @caf, без которого это было бы невозможно.



только одно сожаление-что, сколько бы я ни гуглил, никто не может, кажется, получить openssl_pkey_new() работа с Xampp на Windows (который является правильный способ создания пары ключей)

549   2  

2 ответов:

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

вы можете создать пару клавиш, указав пароль в командной строке с помощью вызова типа (в этом случае пароль foobar):

openssl genrsa -aes128 -passout pass:foobar 3072

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

лучшей альтернативой является запись парольной фразы во временный файл, который защищен правами доступа к файлам, и укажите, что:

openssl genrsa -aes128 -passout file:passphrase.txt 3072

или введите пароль на стандартном входе:

openssl genrsa -aes128 -passout stdin 3072

вы также можете использовать именованный канал с file: опция, или файловый дескриптор.


чтобы затем получить соответствующий открытый ключ, вам нужно использовать openssl rsa, поставляя ту же фразу с -passin параметр as был использован для шифрования закрытого ключа:

openssl rsa -passin file:passphrase.txt -pubout

(это ожидает зашифрованный закрытый ключ на стандартном входе - вместо этого вы можете прочитать его из файла с помощью -in <file>).


пример создания 3072-битной пары закрытых и открытых ключей в файлах, причем пара закрытых ключей зашифрована паролем foobar:

openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 3072
openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub

genrsa была заменить на genpkey & при запуске вручную в терминале, он будет запрашивать пароль:

openssl genpkey -aes-256-cbc -algorithm RSA -out /etc/ssl/private/key.pem -pkeyopt rsa_keygen_bits:4096

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

get_passwd() {
    local passwd=
    echo -ne "Enter passwd for private key: ? "; read -s passwd
    openssl genpkey -aes-256-cbc -pass pass:$passwd -algorithm RSA -out $PRIV_KEY -pkeyopt rsa_keygen_bits:$PRIV_KEYSIZE
}

Comments

    Ничего не найдено.