Openssl csr export to file: примеры (PHP)
openssl_csr_export_to_file(OpenSSLCertificateSigningRequest|string $csr, string $output_filename, bool $no_text = true): boolФункция openssl_csr_export_to_file экспортирует запрос на подпись сертификата (Certificate Signing Request, CSR) в файл. Использование функции связано с операциями криптографии при работе с SSL/TLS. Она применяется для сохранения CSR, который был создан с помощью функций генерации ключей.
- csr - ресурс запроса на подпись сертификата, полученный от
openssl_csr_newили другого источника. - output_filename - путь к файлу, в который будет записан CSR в формате PEM.
- notext - необязательный параметр, принимающий значение
trueилиfalse. При значенииtrueв файл не включается дополнительная текстовая информация. По умолчаниюfalse.
// Создание нового закрытого ключа и CSR
$private_key = openssl_pkey_new([
'digest_alg' => 'sha256',
'private_key_bits' => 2048,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
]);
$dn = [
'countryName' => 'RU',
'commonName' => 'example.com',
];
$csr = openssl_csr_new($dn, $private_key);
$result = openssl_csr_export_to_file($csr, 'csr.pem');
var_dump($result);bool(true)
// Экспорт CSR без текстовых комментариев
$result = openssl_csr_export_to_file($csr, 'csr_no_text.pem', true);
var_dump($result);bool(true)
- openssl_csr_export - экспортирует CSR в строку, а не в файл. Применяется когда нужно сохранить CSR в переменную для дальнейшей обработки.
- openssl_csr_get_subject - возвращает данные о субъекте CSR в виде массива. Используется для извлечения информации из CSR без экспорта.
- openssl_csr_get_public_key - извлекает открытый ключ из CSR. Полезна для проверки соответствия ключа.
Выбор функции зависит от цели: сохранение в файл, передача через сеть или обработка данных CSR.
$csr = 'not_a_resource';
$result = openssl_csr_export_to_file($csr, 'csr.pem');
if ($result === false) {
echo 'Ошибка: неверный тип CSR';
}Ошибка: неверный тип CSR
// Попытка записи в системную директорию без прав
$result = openssl_csr_export_to_file($csr, '/root/csr.pem');
if ($result === false) {
echo 'Ошибка записи файла';
}Ошибка записи файла
$csr = null;
$result = openssl_csr_export_to_file($csr, 'csr.pem');
if ($result === false) {
echo 'CSR не существует';
}CSR не существует
В PHP 8.0 функция стала более строгой к типам аргументов. Передача некорректного типа может вызывать TypeError. В предыдущих версиях такие ошибки могли приводить к предупреждениям.
В PHP 8.1 не было значительных изменений для этой функции, но улучшена общая стабильность модуля OpenSSL.
$private_key = openssl_pkey_new([
'private_key_bits' => 4096,
'private_key_type' => OPENSSL_KEYTYPE_EC,
'curve_name' => 'prime256v1'
]);
$dn = [
'countryName' => 'RU',
'stateOrProvinceName' => 'Moscow',
'localityName' => 'Moscow',
'organizationName' => 'Company Name',
'commonName' => 'maindomain.com',
];
$csr = openssl_csr_new($dn, $private_key, [
'digest_alg' => 'sha384',
'req_extensions' => 'req_ext',
'config' => '/etc/ssl/openssl.cnf'
]);
// Добавление альтернативных имен в конфигурации
$config = array_merge(openssl_csr_get_subject($csr), [
'x509_extensions' => 'v3_req'
]);
openssl_csr_export_to_file($csr, 'multidomain.csr');
echo 'CSR для нескольких доменов создан';
// Проверка содержимого файла
echo file_get_contents('multidomain.csr');-----BEGIN CERTIFICATE REQUEST----- MIIC... -----END CERTIFICATE REQUEST-----
$domains = ['domain1.ru', 'domain2.ru', 'domain3.ru'];
$results = [];
foreach ($domains as $domain) {
$key = openssl_pkey_new(['private_key_bits' => 2048]);
$csr = openssl_csr_new(['commonName' => $domain], $key);
$filename = 'csr_' . $domain . '.pem';
$results[$domain] = openssl_csr_export_to_file($csr, $filename, true);
}
print_r($results);Array
(
[domain1.ru] => 1
[domain2.ru] => 1
[domain3.ru] => 1
)Openssl csr export to file в Python
from cryptography import x509
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives.hashes import SHA256
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
csr = x509.CertificateSigningRequestBuilder().sign(private_key, SHA256())
with open('csr.pem', 'wb') as f:
f.write(csr.public_bytes(serialization.Encoding.PEM))const openssl = require('openssl-wrapper');
const fs = require('fs');
// Пример через командную строку
openssl.exec('req', {new: true, key: 'key.pem', out: 'csr.pem'}, (err, buffer) => {
console.log('CSR экспортирован в файл');
});В Python модуль cryptography предоставляет более высокоуровневый API, а в Node.js часто используются обертки над командной строкой OpenSSL. PHP функция интегрирована в стандартную библиотеку.
PHP openssl_csr_export_to_file function comments
- Php openssl csr export to file - аргументы и возвращаемое значение
- Функция php openssl_csr_export_to_file - описание
- openssl csr export to file - примеры
- openssl csr export to file - похожие методы на php
- openssl_csr_export_to_file на js, python, mysql
- openssl csr export to file изменения php
- Примеры openssl_csr_export_to_file на php