PHP-Nuke по-русски    Главная
Начальная
страница
 Клуб
Русский
клуб
 Разделы
Тематические
разделы
 Ссылки
Каталог
сайтов
 Файлы
Каталог
программ
 Школа
Практические
занятия
 Форум
Форумы
поддержки
Учебник РНР
Назад Вперёд

LXXI. Функции OpenSSL

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Введение

Этот модуль использует функции OpenSSL для генерации и проверки подписи и пломбирования (шифровки) и открытия (дешифровки) данных. PHP-4.0.4pl1 требует OpenSSL >= 0.9.6, но PHP-4.0.5 и выше также будет работать и с OpenSSL >= 0.9.5.

Примечание: пожалуйста, помните, что это расширение всё ещё является экспериментальным!

OpenSSL предлагает много возможностей, которые в данный момент не поддерживаются этим модулем. Некоторые могут быть добавлены в будущем.

Параметры Key/Certificate

Немногие из этих openssl-функций требуют параметра key или certificate. PHP 4.0.5 и ранее должен использовать ресурсы key или certificate, возвращённые одной из функций openssl_get_xxx. Последующие версии могут использовать один из следующих методов:

  • Сертификаты

    1. Ресурс X.509, возвращаемый из openssl_x509_read

    2. Строка, имеющая форматfile://path/to/cert.pem; именованный файл обязан содержать PEM-кодированный сертификат

    3. Строка, с содержимым сертификата, PEM-кодированная

  • Public/Private Ключи

    1. Ресурс ключа, возвращаемый из openssl_get_publickey() или openssl_get_privatekey()

    2. Только для public-ключей: X.509-ресурс

    3. Строка, имеющая формат file://path/to/file.pem - именованный файл обязан содержать PEM-кодированный certificate/private key (может содержать оба)

    4. Строка, содержащая certificate/key, PEM-кодированная

    5. Для private keys вы можете также использовать синтаксис array($key, $passphrase), где $key представляет ключ, специфицированный с использованием file:// , или текстуальную нотацию содержимого, а $passphrase представляет строку, содержащую passphrase для этого private key

Проверка сертификата

При вызове функции, которая будет проверять подпись/сертификат, параметр cainfo является массивом, содержащим имена файла и директории, специфицирующих размещение доверенных CA-файлов. Если директория специфицирована, то это должна быть правильно сформированная хэшированная директория, которая будет использоваться командой openssl.

PKCS7 Флаги/Константы

Функции S/MIME используют флаги, специфицированные битовым полем, которое может содержать одно или более следующих значений:

Таблица 1. PKCS7-константы
КонстантаОписание
PKCS7_TEXTдобавляет text/plain content type шапки/header'ы в шифрованное/подписанное сообщение. При дешифровке или проверке эти шапки вырезаются из вывода - если дешифрованное или проверенное сообщение не имеет тип type text/plain, возникает ошибка.
PKCS7_BINARYнормально вводное сообщение конвертируется в "канонический" формат, который использует CR и LF как символ конца строки: как требует спецификация S/MIME. Если эти опции имеются, трансляция не происходит. Это можно использовать при обработке бинарных данных, которые могут не иметь MIME-формат.
PKCS7_NOINTERNпри проверке сообщения сертификаты (если имеются), включённые в сообщение, проверяются на наличие подписанного сертификата. С этой опцией используются только сертификаты, специфицированные в параметре extracerts функции openssl_pkcs7_verify(). Предоставляемые сертификаты могут по-прежнему использоваться как недоверенные/untrusted CA.
PKCS7_NOVERIFYне проверять сертификат подписчика подписанного сообщения.
PKCS7_NOCHAINне связывать проверку сертификатов подписчиков: то есть не использовать сертификаты в подписанном сообщении как недоверенные/untrusted CA.
PKCS7_NOCERTS при подписывании сообщения сертификат подписывающего обычно включается - с данной опцией он исключается. Это уменьшает размер подписанного сообщения, но проверяющий обязан иметь локально копию сертификата подписывающего (передаваемую с использованием extracerts в openssl_pkcs7_verify(), например.
PKCS7_NOATTRнормально, когда сообщение подписывается, включается набор атрибутов, которые содержат время подписи и поддерживаемые симметричные алгоритмы. С данной опцией они не включаются.
PKCS7_DETACHEDпри подписывании сообщения используйте cleartext-подписывание с MIME-типом multipart/signed. Это значение по умолчанию, если это параметр flags для openssl_pkcs7_sign(), если вы не специфицируете никаких флагов. Если вы отключите эту опцию, сообщение будет подписано с использованием непрозрачной/opaque подписи, которая более устойчива к почтовой трансляции, но не может читаться почтовыми агентами, не поддерживающими S/MIME.
PKCS7_NOSIGSне проверять подписи в сообщении

Примечание: эти константы были введены в версии 4.0.6.

Содержание
openssl_csr_export_to_file - экспортирует CSR в файл или переменную
openssl_csr_export - экспортирует CSR в файл или переменную
openssl_csr_new - генерирует privkey и CSR
openssl_csr_sign - подписывает cert другим CERT
openssl_error_string - возвращает сообщение об ошибке openSSL
openssl_free_key - освобождает key-ресурс
openssl_get_privatekey - подготавливает PEM-форматированный private key для использования
openssl_get_publickey - извлекает public key из сертификата и подготавливает его для использования
openssl_open - открывает пломбированные данные
openssl_pkcs7_decrypt - дешифрует шифрованное S/MIME-сообшение
openssl_pkcs7_encrypt - шифрует S/MIME-сообщение
openssl_pkcs7_sign - подписывает S/MIME-сообщение
openssl_pkcs7_verify - проверяет подпись подписанного S/MIME-сообщения
openssl_pkey_export_to_file - получает экспортабельное представление ключа в файле
openssl_pkey_export - получает экспортабельное представление ключа в строке или файле
openssl_pkey_new - генерирует новый private key
openssl_private_decrypt - дешифрует данные с private key
openssl_private_encrypt - шифрует данные с private key
openssl_public_decrypt - дешифрует данные с public key
openssl_public_encrypt - шифрует данные с public key
openssl_seal - пломбирует (шифрует) данные
openssl_sign - генерирует подпись
openssl_verify - проверяет подпись
openssl_x509_check_private_key - проверяет, соответствует ли private сертификату CERT
openssl_x509_checkpurpose - проверяет, может ли сертификат использоваться для определённых целей
openssl_x509_export_to_file - экспортирует CERT в файл или переменную
openssl_x509_export - экспортирует CERT в файл или переменную
openssl_x509_free - освобождает ресурс сертификата
openssl_x509_parse - разбирает X509-сертификат и возвращает the информацию как массив
openssl_x509_read - разбирает X509-сертификат и возвращает идентификатор ресурса для него

Назад Оглавление Вперёд
OCIWriteLobToFile Вверхopenssl_csr_export_to_file

© RigaNet - Internet studio
For Web site issues, contact the Web master.

Rambler's Top100 Рейтинг@Mail.ru RigaNet