Manuál PHP | ||
---|---|---|
Předcházející | Další |
CXI. OpenSSL funkce
Úvod
Toto rozšíření využívá funkce OpenSSL pro tvorbu a ověřování podpisů a pečetění (kódování) a otvírání (dekódování) dat. OpenSSL nabízí mnoho vlastností, které tato extenze v současnosti nepodporuje. Některé z nich mohou být v budoucnu přidány.
Požadavky
Abyste mohli používat tyto funkce, musíte nainstalovat OpenSSL. PHP-4.0.4pl1 potřebuje OpenSSL >= 0.9.6, ale PHP-4.0.5 a vyšší budou pracovat i s OpenSSL >= 0.9.5.
Instalace
Abyste v PHP mohli používat funkce OpenSSL, musíte PHP zkompilovat s volbou --with-openssl[=DIR]
.
Poznámka pro uživatele Win32: Aby toto rozšíření fungovalo ve Windows, musíte zkopírovat soubor libeay32.dll z adresáře DLL Win32 distribuce do adresáře SYSTEM32. (Např.: C:\WINNT\SYSTEM32 nebo C:\WINDOWS\SYSTEM32)
Navíc, pokud máte v úmyslu používat funkce generování klíčů a podepisování certifikátů, musíte na váš systém nainstalovat platný openssl.cnf. Do PHP 4.3.0 jsme připojili ukázkový konfigurační soubor do adresáře openssl Win32 distribuce. Pokud používáte 4.2.0 nebo novější a tento soubor vám chybí, můžete ho stáhnout z domácí stránky OpenSSL nebo stáhněte PHP 4.3.0 a použijte konfigurační souboru z něj.
Poznámka pro uživatele Win32: PHP bude hledat openssl.cnf tímto postupem:
Proměnná prostředí OPENSSL_CONF, pokud je nastavena, bude použita jako cesta (včetně názvu souboru) konfiguračního souboru.
Proměnná prostředí SSLEAY_CONF, pokud je nastavena, bude použita jako cesta (včetně názvu souboru) konfiguračního souboru.
Bude se předpokládat, že soubor openssl.cnf bude nalezen ve výchozí oblasti certifikátů, která byla zkonfigurována při kompilaci DLL knihovny openssl. To obvykle znamená, že výchozí název souboru je c:\usr\local\ssl\openssl.cnf.
Ve své instalaci se musíte rozhodnout, zda nainstalujete konfigurační soubor do c:\usr\local\ssl\openssl.cnf nebo zda ho nainstalujete někam jinam a pro nalezení konfiguračního souboru použijete proměnnou prostředí (pravděpodpobně jako per-virtual-host). Vemte na vědomí, že výchozí cestu lze změnit v parametru
configargs
funkcí, které potřebují konfigurační soubor.
Konfigurace běhu
Toto rozšíření nemá definováno žádné konfigurační direktivy.
Parametry s klíči/certifikáty
Několik openssl funkcí potřebuje parametr s klíčem nebo certifikátem. PHP 4.0.5 a starší musí pro klíč a certifikát používat resource vrácený některou z funkcí openssl_get_xxx. Pozdější verzi mohou používat libovolnou z těchto metod:
Certifikáty
X.509 zdroj vrácený funkcí openssl_x509_read()
Řetězec ve formátu file://path/to/cert.pem; uvedený soubor musí obsahovat PEM-zakódovaný certifikát
Řetězec obsahující PEM-zakódovaný certifikát
Veřejné a soukromé klíče
Zdroj klíče vrácený funkcí openssl_get_publickey() nebo openssl_get_privatekey()
Pouze veřejné klíče: zdroj X.509
Řetězec ve formátu file://path/to/file.pem - uvedený soubor musí obsahovat PEM-zakódovaný certifikát / veřejný klíč (může obsahovat oba)
Řetězec obsahující obsah certifikátu / klíče, PEM-zakódovaný
Pro soukromé klíče lze také použít syntaxi array($key, $heslo) kde $key reprezentuje klíč zadaný pomocí file:// nebo textového uvedení zmíněného výše a $heslo reprezentuje řetězec obsahující heslo pro tento soukromý klíč
Ověření certifikátu
Když voláte funkci, která ověřuje podpis / certifikát, parametr cainfo je pole obsahující názvy souborů a adresářů, které určují umístění souborů důvěryhodných CA. Pokud je zadán adresář, musí to být správně uspořádaný adresář s hashi tak, jak ho používá příkaz openssl.
Předdefinované konstanty
Tyto konstanty jsou definovány tímto rozšířením a budou k dispozici pouze tehdy, bylo-li rozšíření zkompilováno společně s PHP nebo dynamicky zavedeno za běhu.
Přepínače / konstanty PKCS7
S/MIME funkce používají přepínače, kterou jsou specifikovány jako bitové pole, které může obsahovat jednu nebo více následujících hodnot:
Tabulka 1. PKCS7 konstanty
Konstanta | Popis |
---|---|
PKCS7_TEXT | přidá "text/plain content type" hlavičky k zakódovaným/podepsaným zprávám. Při dekódování nebo ověřování odstraní tyto hlavičky z výstupu - když není rozkódovaná nebo ověřená zpráva MIME typu text/plain, dojde k chybě. |
PKCS7_BINARY | za normálních okolností je zdrojová zpráva převedená do "kanonického" formátu, který používá pro konce řádků používá CR a LF: tak, jak to požaduje S/MIME specifikace. Když je zapnuta tato volba, nedojde k žádnému převodu. To se hodí v případě manipulace s binárními daty, která nemusí být v MIME formátu. |
PKCS7_NOINTERN | při ověřování zprávy jsou za normálních okolností certifikáty
obsažené ve zprávě (pokud nějaké existují) prohledávané na výskyt
podpisového certifikátu. S touto volbou se použijí pouze certifikáty
zadané v parametru extracerts funkce
openssl_pkcs7_verify().
Zadané certifikáty ale stále mohou být použity jako
nedůvěryhodné CA.
|
PKCS7_NOVERIFY | neověřovat certifikát podepisovatele podepsané zprávy. |
PKCS7_NOCHAIN | nespojovat ověření podepisovatelových certifikátů: to znamená nepoužívat certifikáty v podepsané zprávě jako nedůvěryhodné CA. |
PKCS7_NOCERTS | při podepisování zprávy je za normálních okolností připojen certifikát
podepisovatele - s touto volbou tomu tak není. To způsobí snížení
velikosti podepsané zprávy, ale ověřovatel musí mít kopii podepisovatelova
certifikátu k dispozici lokálně (například předanou v parametru
extracerts funkce
openssl_pkcs7_verify()).
|
PKCS7_NOATTR | Pokud je zpráva podepsána za normálních okolností, je připojena sada atributů obsahující čas podpisu a podporované symetrické algoritmy. S touto volbou není připojena. |
PKCS7_DETACHED | Při podpisu zprávy použije podpis čitelného text spolu s MIME
typem multipart/signed. To je výchozí nastavení, pokud ve funkci
openssl_pkcs7_sign() nezadáte parametr
flags .
Pokud tuto volbu vypnete, bude zpráva podepsána za použití
neprůhledného podepsání, které je více odolné vůči překladům
e-mailových bran, ale nelze přečíst klienty, kteří nepodporují S/MIME. |
PKCS7_NOSIGS | Nezkoušet a neověřovat podpisy zprávy |
Poznámka: Tyto konstanty byly přidány ve verzi 4.0.6.
- Obsah
- openssl_csr_export_to_file -- Exports a CSR to a file
- openssl_csr_export -- Exports a CSR as a string
- openssl_csr_get_public_key -- Returns the public key of a CERT
- openssl_csr_get_subject -- Returns the subject of a CERT
- openssl_csr_new -- Generates a CSR
- openssl_csr_sign -- Sign a CSR with another certificate (or itself) and generate a certificate
- openssl_error_string -- Return openSSL error message
- openssl_free_key -- Uvolnit prostředky klíče
- openssl_get_privatekey -- Připravit soukromý PEM klíč k použití
- openssl_get_publickey -- Získat z certifikátu veřejný klíč a připravit ho k použití
- openssl_open -- Otevřít zapečetěná data
- openssl_pkcs7_decrypt -- Decrypts an S/MIME encrypted message
- openssl_pkcs7_encrypt -- Encrypt an S/MIME message
- openssl_pkcs7_sign -- Sign an S/MIME message
- openssl_pkcs7_verify -- Verifies the signature of an S/MIME signed message
- openssl_pkey_export_to_file -- Gets an exportable representation of a key into a file
- openssl_pkey_export -- Gets an exportable representation of a key into a string
- openssl_pkey_free -- Frees a private key
- openssl_pkey_get_details -- Returns an array with the key details (bits, pkey, type)
- openssl_pkey_get_private -- Get a private key
- openssl_pkey_get_public -- Extract public key from certificate and prepare it for use
- openssl_pkey_new -- Generates a new private key
- openssl_private_decrypt -- Decrypts data with private key
- openssl_private_encrypt -- Encrypts data with private key
- openssl_public_decrypt -- Decrypts data with public key
- openssl_public_encrypt -- Encrypts data with public key
- openssl_seal -- Zapečetit (zakódovat) data
- openssl_sign -- Generate signature
- openssl_verify -- Ověřit podpis
- openssl_x509_check_private_key -- Checks if a private key corresponds to a certificate
- openssl_x509_checkpurpose -- Verifies if a certificate can be used for a particular purpose
- openssl_x509_export_to_file -- Exports a certificate to file
- openssl_x509_export -- Exports a certificate as a string
- openssl_x509_free -- Free certificate resource
- openssl_x509_parse -- Parse an X509 certificate and return the information as an array
- openssl_x509_read -- Parse an X.509 certificate and return a resource identifier for it
Předcházející | Domů | Další |
openal_stream | Nahoru |