Я пытаюсь создать CSR, используя расширение PHP и OpenSSL,
но когда я это делаю, это дает мне ошибку, которая говорит:
Не удалось сгенерировать закрытый ключ: ошибка: 2006D080: BIO. подпрограммы: BIO_new_file: такого файла нет
еще и php.ini редактируется правильно, я добавил extension=openssl
.
Это мой код:
<?php
$dn = array(
"countryName" => "US",
"stateOrProvinceName" => "California",
"localityName" => "San Francisco",
"organizationName" => "My Company",
"organizationalUnitName" => "IT",
"commonName" => "mycompany.com",
"emailAddress" => "[email protected]"
);
// Generate a new private (and public) key pair
$privkey = openssl_pkey_new(array(
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
));
if ($privkey === false) {
die('Failed to generate private key: ' . openssl_error_string());
}
// Generate a certificate signing request
$csr = openssl_csr_new($dn, $privkey);
if ($csr === false) {
die('Failed to generate CSR: ' . openssl_error_string());
}
// Export the CSR as a string
$csrout = '';
if (!openssl_csr_export($csr, $csrout)) {
die('Failed to export CSR: ' . openssl_error_string());
}
echo $csrout;
// Optionally, save the private key
$pkeyout = '';
if (!openssl_pkey_export($privkey, $pkeyout, 'your-passphrase')) {
die('Failed to export private key: ' . openssl_error_string());
}
file_put_contents('private_key.pem', $pkeyout);
?>
Я использую Laragon
в качестве веб-сервера.
Как я могу решить эту проблему?
@topaco, это хорошая новость, но теперь я хочу знать, в чем проблема в моей среде, во-вторых, я хочу развернуть этот проект на сервере хостингера, как я могу убедиться, что он будет работать?
@topaco я действительно просмотрел этот источник php.net/manual/en/openssl.requirements.php, но не смог его установить
проблема в том, что мне нужно установить OpenSSL в моей системе,
моя система — система Windows, то для ее установки мне нужно зайти на этот сайт:
затем после этого выберите второй вариант в таблице:
это ссылка на него:
Второй выбор
затем после этого выберите завершенную версию OpenSSL:
после этого он загрузит установочную версию OpenSSL, просто установите ее, и все будет работать.
Спасибо
Похоже, это проблема конкретной среды. Опубликованный PHP-код может быть успешно выполнен, например. на paiza.io/projects/stQIvPF8_IwLQ-jzB_fV8A . Сгенерированный сертификат и закрытый ключ можно просмотреть в анализаторе ASN.1, например. lapo.it/asn1js . Проверьте свою среду, например. php.net/manual/en/openssl.requirements.php.