Ric*_*ard 3 php ssh openssl rsa private-key
我用PHP OpenSSL生成了一个SSH密钥:
$rsaKey = openssl_pkey_new(array(
'private_key_bits' => 4096,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
));
$privKey = openssl_pkey_get_private($rsaKey);
openssl_pkey_export($privKey, $pem);
Run Code Online (Sandbox Code Playgroud)
结果$pem如下:
-----BEGIN PRIVATE KEY----- MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQC8ggt6rVHYnqNP ... e95+EXbPc6THyWt9pgwOsJltpylIYG4= -----END PRIVATE KEY-----
但我无法使用此密钥进行身份验证.在我可以使用之前,我必须使用以下命令进行转换:
openssl rsa -in xxx.key -outform pem > xxx.key2
Run Code Online (Sandbox Code Playgroud)
转换的结果是:
-----BEGIN RSA PRIVATE KEY----- MIIJKQIBAAKCAgEAvIILeq1R2J6jT+xjlK5NrOqFZTOJ4PByvgPQNbb2Kp7c3W15 ... o1t2KBkaSoR+JyOPOZakq5BLv8lgD3vefhF2z3Okx8lrfaYMDrCZbacpSGBu -----END RSA PRIVATE KEY-----
两者都是PEM格式,但第二种是RSA私钥.第二,PHP可以登录.所以我需要一个开头的键RSA PRIVATE KEY,而不仅仅是PRIVATE KEY.如何使用PHP和OpenSSL PHP实现创建它?
因此,这是两种不同的密钥类型.您正在寻找PKCS#1,但获得PKCS#8.
这似乎与PHP使用的OpenSSL版本有关.自1.0版以来的版本创建了一个PKCS#8文件,并且PHP开发人员不想做任何事情.使用此命令从命令行执行此操作时会出现同样的问题:
openssl req -new -keyout mykey.key -out mycertreq.csr -nodes -sha1 -newkey rsa:2048
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用名为phpseclib的外部库,但我自己没有尝试过:
<?php
include('Crypt/RSA.php');
$rsa = new Crypt_RSA();
$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_OPENSSH);
$result = $rsa->createKey();
echo $result["privatekey"];
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4358 次 |
| 最近记录: |