Openssl x509 read: примеры (PHP)
Функция openssl_x509_read в PHP 8: примеры и применение
Раздел: Шифрование (OpenSSL)
openssl_x509_read(OpenSSLCertificate|string $certificate): OpenSSLCertificate|falseтиповые примерыopenssl x509 read на js, python, mysqlopenssl x509 read изменения phpпримеры расширенные
Функция openssl_x509_read
Функция openssl_x509_read обрабатывает сертификат X.509 и возвращает объект класса OpenSSLCertificate для дальнейших операций. Использование происходит при работе с криптографией, проверке цифровых подписей, аутентификации в SSL/TLS соединениях и обработке цепочек сертификатов.
Аргументы функции
- certificate – сертификат X.509 в форматах PEM или DER. Передаётся строкой, ресурсом или объектом OpenSSLCertificate.
- public_key – необязательный параметр. В версиях PHP до 8.0 использовался для указания публичного ключа, сейчас игнорируется.
Примеры применения
Чтение сертификата из строки PEM
$certPem = "-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKoRRS7lFZ56MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMTIwNTE1MTQ0MzUzWhcNMTMwNTE1MTQ0MzUzWjBF
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAzLQ6cQ/3H1hVrK5Tp1dJNp6vN6KzK6K6K6K6K6K6K6K6K6K6K6K6K6K6
...
-----END CERTIFICATE-----";
$cert = openssl_x509_read($certPem);
var_dump($cert);object(OpenSSLCertificate)#1 (0) {
}Загрузка из файла DER
$certDer = file_get_contents('certificate.der');
$cert = openssl_x509_read($certDer);
if ($cert) {
echo 'Сертификат прочитан';
}Сертификат прочитан
Похожие функции PHP
- openssl_x509_parse – извлекает данные сертификата в массив. Используется для получения информации, а не объекта.
- openssl_x509_checkpurpose – проверяет возможность использования сертификата для определённых задач.
- openssl_x509_export – преобразует объект сертификата обратно в строку PEM. Применяется для сериализации.
Типичные ошибки
Неверный формат данных
$wrongData = 'invalid certificate';
$cert = openssl_x509_read($wrongData);
if ($cert === false) {
echo openssl_error_string();
}error:0909006C:PEM routines:get_name:no start line
Передача несуществующего файла
$cert = openssl_x509_read(file_get_contents('missing.der'));
if ($cert === false) {
echo 'Файл не найден';
}Файл не найден
Изменения в PHP
В PHP 8.0.0 функция стала возвращать объект OpenSSLCertificate вместо ресурса. Параметр public_key перестал использоваться. В PHP 8.2.0 добавлены строгие типы для аргументов.
Расширенные примеры
Обработка цепочки сертификатов
Пример php
$pemChain = file_get_contents('chain.pem');
$certs = [];
while ($cert = openssl_x509_read($pemChain)) {
$certs[] = $cert;
$pemChain = substr($pemChain, strpos($pemChain, '-----END CERTIFICATE-----') + 25);
}
foreach ($certs as $cert) {
$parsed = openssl_x509_parse($cert);
echo $parsed['subject']['CN'] . "\n";
}Root CA Intermediate CA Server Certificate
Валидация подписи сертификата
Пример php
$caCert = openssl_x509_read(file_get_contents('ca.pem'));
$serverCert = openssl_x509_read(file_get_contents('server.pem'));
$valid = openssl_x509_verify($serverCert, $caCert);
echo $valid === 1 ? 'Подпись верна' : 'Ошибка проверки';Подпись верна
Извлечение публичного ключа
Пример php
$cert = openssl_x509_read($pemData);
$key = openssl_pkey_get_public($cert);
$details = openssl_pkey_get_details($key);
echo $details['key'];-----BEGIN PUBLIC KEY-----...
Аналоги в других языках
Openssl x509 read в Python
from cryptography import x509
from cryptography.hazmat.backends import default_backend
pem_data = b"-----BEGIN CERTIFICATE-----..."
cert = x509.load_pem_x509_certificate(pem_data, default_backend())
print(cert.subject)<Name(CN=example.com)>
JavaScript (Node.js)
const crypto = require('crypto');
const certPem = `-----BEGIN CERTIFICATE-----...`;
const cert = new crypto.X509Certificate(certPem);
console.log(cert.subject);C=US, O=Example, CN=example.com
Openssl x509 read в MySQL
Функции для работы с SSL в MySQL сосредоточены на управлении подключениями, например, CREATE SSL для генерации сертификатов.
PHP openssl_x509_read function comments
En
Openssl x509 read Parses an X.509 certificate and returns an object for it