无法使用随机十六进制生成的密码 openssl 加载私钥
unable to load Private Key using random hex generated passkey openssl
我正在编写 bash 脚本来生成和使用 RSA 私钥。当我 运行 它时,它无法生成私钥并说 "unable to load Priavate Key" 然后:预期:任何私钥。
当我使用 pass:foo 作为密码通过 iTerm2 运行 genrsa 命令时它有效,但我无法使用我在 gen_hex 函数中生成的十六进制字符串.
gen_hex() {
# generate random hexadecimal string/array
echo hexdump -n 16 -e '4/4 "%08X" 1 "\n"' /dev/random
}
check_for_keys() {
if [ ! -f ./public.pem ]; then
echo "> Generating Passphrase..."
passp = $(gen_hex)
touch pass.txt
echo $passp > pass.txt
echo "> Done."
echo "> Generating keys..."
openssl genrsa -des3 -passout pass:$passp -out private.pem 4096
echo "> Done."
echo "> Exporting Public Key..."
openssl rsa -in private.pem -passin pass:$passp -outform PEM -
pubout - out public.pem
echo "> Done."
fi
}
完整错误信息:
:unable to load Private Key 35508:error:0906D06C:PEM
routines:PEM_read_bio:no start line:
/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-
64.50.6/src/crypto/pem/pem_lib.c:648:Expecting: ANY PRIVATE KEY
谢谢!
你有(至少)两个重大问题。首先,gen_hex
不会生成十六进制字符串;它输出你想要的命令运行。删除 echo
。其次,您不能在作业中的 =
周围放置空格。
gen_hex() {
# generate random hexadecimal string/array
hexdump -n 16 -e '4/4 "%08X" 1 "\n"' /dev/random
}
和
passp=$(gen_hex)
第三,您应该在使用 $passp
的任何地方引用它,以避免涉及对字符串中任何字符的 shell 解释的任何令人讨厌的意外。为了安全起见,我也会使用 printf
而不是 echo
,如果没有其他原因,只是为了避免 echo
将附加到密码末尾的换行符。
printf '%s' "$passp" > pass.txt
我正在编写 bash 脚本来生成和使用 RSA 私钥。当我 运行 它时,它无法生成私钥并说 "unable to load Priavate Key" 然后:预期:任何私钥。
当我使用 pass:foo 作为密码通过 iTerm2 运行 genrsa 命令时它有效,但我无法使用我在 gen_hex 函数中生成的十六进制字符串.
gen_hex() {
# generate random hexadecimal string/array
echo hexdump -n 16 -e '4/4 "%08X" 1 "\n"' /dev/random
}
check_for_keys() {
if [ ! -f ./public.pem ]; then
echo "> Generating Passphrase..."
passp = $(gen_hex)
touch pass.txt
echo $passp > pass.txt
echo "> Done."
echo "> Generating keys..."
openssl genrsa -des3 -passout pass:$passp -out private.pem 4096
echo "> Done."
echo "> Exporting Public Key..."
openssl rsa -in private.pem -passin pass:$passp -outform PEM -
pubout - out public.pem
echo "> Done."
fi
}
完整错误信息:
:unable to load Private Key 35508:error:0906D06C:PEM
routines:PEM_read_bio:no start line:
/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-
64.50.6/src/crypto/pem/pem_lib.c:648:Expecting: ANY PRIVATE KEY
谢谢!
你有(至少)两个重大问题。首先,gen_hex
不会生成十六进制字符串;它输出你想要的命令运行。删除 echo
。其次,您不能在作业中的 =
周围放置空格。
gen_hex() {
# generate random hexadecimal string/array
hexdump -n 16 -e '4/4 "%08X" 1 "\n"' /dev/random
}
和
passp=$(gen_hex)
第三,您应该在使用 $passp
的任何地方引用它,以避免涉及对字符串中任何字符的 shell 解释的任何令人讨厌的意外。为了安全起见,我也会使用 printf
而不是 echo
,如果没有其他原因,只是为了避免 echo
将附加到密码末尾的换行符。
printf '%s' "$passp" > pass.txt