Генерировать 2048 бит и пароль, защищенный csr?

Я пытаюсь сгенерировать CSR через PHP. Но CA продолжает отказывать в моем CSR, так как они говорят, что он не 2048 бит и не защищен паролем. Но когда я смотрю в документации PHP для функции openssl_csr_new (), я не могу найти, как это сделать?

Мой текущий код:

$dn = array(
'countryName' => $countryName,
'stateOrProvinceName' => $stateOrProvinceName,
'localityName' => $localityName,
'organizationName' => $organizationName,
'commonName' => $commonName,
'emailAddress' => $emailAddress
);

if(!empty($organizationalUnitName))
$dn['organizationalUnitName'] = $organizationalUnitName;

$csrSettings = array('private_key_bits' => 2048, 'private_key_type' => OPENSSL_KEYTYPE_RSA, 'encrypt_key' => true);

// Generate a new private (and public) key pair
$privkey = openssl_pkey_new($csrSettings);

// Generate a certificate signing request
$csr = openssl_csr_new($dn, $privkey, $csrSettings);
openssl_csr_export($csr, $csrout);
openssl_pkey_export($privkey, $pkeyout);

Что я делаю неправильно?

—— Обновленный код: ——-

$dn = array(
'countryName' => $countryName,
'stateOrProvinceName' => $stateOrProvinceName,
'localityName' => $localityName,
'organizationName' => $organizationName,
'commonName' => $commonName,
'emailAddress' => $emailAddress
);

if(!empty($organizationalUnitName))
$dn['organizationalUnitName'] = $organizationalUnitName;

$csrSettings = array('private_key_bits' => 2048, 'private_key_type' => OPENSSL_KEYTYPE_RSA, 'encrypt_key' => true);

// Generate a new private (and public) key pair
$privkey = openssl_pkey_new($csrSettings);

// Generate a certificate signing request
openssl_pkey_export($privkey, $pkeyout, 'test 1235 aaaaa');

$csr = openssl_csr_new($dn, $pkeyout, $csrSettings);
openssl_csr_export($csr, $csrout);

1

Решение

С phpseclib, чистая реализация PHP CSR,

<?php
include('File/X509.php');
include('Crypt/RSA.php');

$privKey = new Crypt_RSA();
extract($privKey->createKey(2048));
$privKey->loadKey($privatekey);

$x509 = new File_X509();
$x509->setPrivateKey($privKey);
$x509->setDNProp('id-at-organizationName', 'phpseclib demo cert');

$csr = $x509->signCSR();

echo $x509->saveCSR($csr);
?>

Вы не можете защитить паролем CSR, однако. Вы можете защитить личный ключ паролем, но вам все равно не следует делиться секретным ключом с ЦС.

Если ЦС настаивает на том, что вы можете попросить у них пример того, как вы можете сделать это с OpenSSL через CLI. Возможно, они просто не совсем понимают, что они имеют в виду, но наличие команды CLI даст нам знать наверняка.

1

Другие решения

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

$dn = array(
'countryName' => $countryName,
'stateOrProvinceName' => $stateOrProvinceName,
'localityName' => $localityName,
'organizationName' => $organizationName,
'commonName' => $commonName,
'emailAddress' => $emailAddress
);

$csrSettings = array('private_key_bits' => 2048, 'private_key_type' => OPENSSL_KEYTYPE_RSA, 'encrypt_key' => true);

// Generate a new private (and public) key pair
$privkey = openssl_pkey_new($csrSettings);

// Generate a certificate signing request
$csr = openssl_csr_new($dn, $privkey, $csrSettings);

openssl_csr_export($csr, $csrout);
openssl_pkey_export($privkey, $pkeyout, "test 1235 aaaaa");

echo $csrout . "\n" . $pkeyout;

Пример вывода:

-----BEGIN CERTIFICATE REQUEST-----
MIIC9DCCAdwCAQAwga4xCzAJBgNVBAYTAlVLMREwDwYDVQQIDAhTb21lcnNldDEU
MBIGA1UEBwwLR2xhc3RvbmJ1cnkxHzAdBgNVBAoMFlRoZSBCcmFpbiBSb29tIExp
bWl0ZWQxHzAdBgNVBAsMFlBIUCBEb2N1bWVudGF0aW9uIFRlYW0xFDASBgNVBAMM
C1dleiBGdXJsb25nMR4wHAYJKoZIhvcNAQkBFg93ZXpAZXhhbXBsZS5jb20wggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKxugfpijCe8iDfbGby4N9wzaZ
vM6KyWUYL+KtdQsc2O/2z/zoiiSe54ikcYO8Cw1evUP16MKnkV9DQJwsUvY8+4C3
IviXpcXRcJ7CsWxwApDHd5j6JbgyfYvrb5EEN1iLM2OZn62QV1XZc+z+5yruxJ6Q
q4M2xpgjtEUyz7d7U6ax+uWW3zop5SfsREAqpGedBmevFs3UIeComOzwKfFbw/a1
Bc6VZ9PXUOVjSYEe8aVkHfRlKsUVUnkYOMoX9PYD84exuIeei8Z9prKU/x31lRj8
ktieFohQJqB5ziA+BwKwwqpgn23awPJ+O3xzUVWYodU01rRrzfyUSfHNVCZrAgMB
AAGgADANBgkqhkiG9w0BAQQFAAOCAQEAinjiPwfIcoXcA7wcJ86QnOAIQEjvrbda
ndyP7n/ol7ROjS/QoEciFeSw7y3/NFE8C5O6Io2rLuMrncHc2PjMgw8C23xBecjb
L+Yf76ZndadOznTURTVrkFCtKKRgjcF+YOXWfGZb35wkaxth/DKPjaofcNkg9UQy
SrjNKyrhRD9bVPvCkBr5mpFo8WdQyEFLoHogDP2NbK2COAc1Ip4ZFfktv3lCcg7h
cnd2zEp4YmmomdE/1TVh+xF//pO+TP7HZtnEP7FysY7uYbF24bH/TO/WSrIAg+Ls
KUxufDlOhzwQPp1LAYGDAQal7lpXEyqMKJ4BsKDqiftnfC0OWXRyCg==
-----END CERTIFICATE REQUEST-----

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIJdTmCR5euNICAggA
MBQGCCqGSIb3DQMHBAhRp+IcQK5cnQSCBMgEwH8TIgADYq6/WZEHw7RfPdf5bnEi
oCBuqps0JtnIf8BolaqV71HQGVRszbPvjFrWVCjB0hX+RzhlGTJA6KQXSp+QFp3E
gIX+cWdfTrknuM6QoZH5DPhUCqZi+gF4Oe/nzaBdDY0bq+hKqDyHk2WFDx+JLujs
QN4Z/Q+5NzboUQuEHc2Ts09g6yyEyaZBfsaK/KbWxFe+UC/ahzbqWbv4eQYS3TmZ
gE/RzE2iU+SulHmiq1AXUFZE9uIAwRM53X/5lW1Tt3qRFB7jEnp0smOe+HCKDwTo
UcifAlMKj05S62DJAFSzc1TsGpGMJYMq/QcU70+J+DAZ6Pt/50DMNBMfhMxW1B2O
6FT8i/lDofNhQOuDD6xOvFHMaM6JoAGjC/lBulEfSOPysaRNb8ZO75CWjsVHeMfP
lSPyPfF4kAcQVV39xa0bi5tE4t2fUJ1FlhsNg/ooUDa3GV6rx8y+2+pQ/iW6DmYg
OcPDhwpGgUwfptHQcoQeR4imcsNWVAD/Hf53RrtqFCdHd9GsfdIegW6jFitpgICA
7wqIYS8OjBZxB6lzGZz/nfHUYqzxB1wI26ySUXjk3scRwupF0jLWWVpHZ4Sq4XiX
LN6PPsBZXqh1HbaP/CbiQyTRJPNMBY/+duwXzaUEWI7qGaEYWbiYLqyl3wq46ZXj
qFZXhysR5YnvKmeVrdMI+lsuPosS3v+d5fzt8IqVFIf9EwZoE9ZRw9r9oqYiJjSe
L4brzW9HBm6v9U1CGGlylpP9Q4auIs0rctyuM3kRWdPDsss0aoLBDDegHi9BQ1Ph
SUkaLpW2tQXGVhlAYd8M/6Oj70IVsKboNR2DjfY3Te9ltIHGoDxj3Gsdc9+kMwyl
20Cs86dQX5hQWVB0VY2YGItooOsCpvsMBfb9VUlgTCQjHwf4ClLlrxjTv/e81i8u
kdja1sbjeqYSrW3WS4k/jyrKuUVp4NjtYG2JWZjTzpOF2Fs/j9NJVAhtsBx81wXt
89jSiCGS4dniuoDJ9U+wXLpnpDdVRF3Og5Wss+iLBinGwNyvUVx1ph1MoLRbIedL
N79JaucEIV9pFfptM/je26HmNKbTpF1tYc8R4U22sUbms3+AOjDaU2Y6iT62RwnM
zDQEQ6890q/f8EFJkb3Y38j0tObolJM/dyMQigziqHysebfNEiwqg5Ij93kHzOK5
JQF5P/L3efUOV40Cn3ndkiKAtLWgFubqQ4fD0MOwSHIKBv+PxnY2eXJRb4/x3AEo
KvJwvN9HB1znueQN5bMx0OyqR/sdy5zZ4w4pDI+asgNy/+B7qk56Jf5WpXvsPGAi
Wd6TmGX3DY/u2cRJ7cjMmnAsJ1xT4s3z0vJYMcOrdA1hLv0sI7TyRkBJTua4QjIc
v+pz79LQt1CYHTdzG+qtL1X2SU+61bqlncgy+Yhn42g59KGYmGFGWH7CuuJCI5eg
VWwMCCWQgH2Tg2PZiptC2rVzgv8aM+H4QpaI8th40UszPJt17HK9Ad1pJ2TYqryI
77IBIcHWl8Yp+Zr5nGaIJxPNv/XAKOGo8VGHM9U0YnsaRsPW5z8bwKD3TIApRQBL
Ok60tTIlqDoBIB6/o9G02MLeTx9ycfssUVzTIUn9pQR6PBiERhtxb1Sh42xDJVof
zt4=
-----END ENCRYPTED PRIVATE KEY-----
0

По вопросам рекламы [email protected]