如何使用命令行中的密码生成一个openSSL密钥?
首先 – 如果我不给密码,会发生什么? 是使用某种伪随机短语? 我只是在寻找“足够好”的东西,以防止黑客入侵。
其次 – 如何从命令行生成密钥对,在命令行上提供密码短语?
我终于得到了它使用这些命令的工作,使用exec(),它通常被认为是不安全的使用,最好是在一个文件中给PassPhrase。 我可以接受这个风险,因为我相信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,没有他们,这是不可能的。
只有一个遗憾 – 就是说,不pipe我有多lessGoogle,在Windows上使用Xampp都没有人能得到openssl_pkey_new()
(这是生成密钥对的正确方法)
如果您不使用密码,那么私钥没有使用任何对称密码进行encryption – 它的输出完全不受保护。
你可以生成一个密钥对,在命令行中使用一个调用(在这种情况下,密码是foobar
)来提供密码:
openssl genrsa -aes128 -passout pass:foobar 3072
但是,请注意,此密码可以被当时在机器上运行的其他进程抓取,因为命令行参数通常对所有进程都是可见的。
更好的select是将密码写入临时文件,文件权限受到保护,并指定:
openssl genrsa -aes128 -passout file:passphrase.txt 3072
或者在标准input上提供密码短语:
openssl genrsa -aes128 -passout stdin 3072
您也可以使用带有file:
选项或文件描述符的命名pipe道。
为了获得匹配的公钥,你需要使用openssl rsa
,提供与用于encryption私钥的-passin
参数相同的密码:
openssl rsa -passin file:passphrase.txt -pubout
(这需要标准input上的encryption私钥 – 您可以使用-in <file>
从文件中读取它)。
在文件中创build3072位私钥和公钥对的示例,私钥对使用密码foobar
encryption:
openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 3072 openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub
- Homebrew拒绝链接OpenSSL
- 为域和子域创build自签名证书 – NET :: ERR_CERT_COMMON_NAME_INVALID
- Ruby Bundle找不到符号:_SSLv2_client_method(LoadError)
- 你如何testing公共/私人DSA密钥对?
- 为什么git散列对象返回不同于openssl sha1的散列?
- 如何从PEM编码证书中确定SSL证书过期date?
- asynchronous发送邮件时,“SSL_read:证书已在哈希表中”
- 受Heartbleed漏洞影响的Windows Server 2012 R2和IIS?
- 如何在两种公钥格式之间转换,一个是“BEGIN RSA PUBLIC KEY”,另一个是“BEGIN PUBLIC KEY”