Skip to main content

OpenSSL a PHP

OpenSSL és una potent llibreria de programari lliure que implementa els protocols SSL (Secure Sockets Layer) i TLS (Transport Layer Security), així com algoritmes criptogràfics generals. A PHP, l'extensió openssl proporciona una interfície per utilitzar totes aquestes funcionalitats per crear, gestionar i verificar dades segures.

La llibreria openssl de PHP s'utilitza principalment per a tasques relacionades amb la seguretat i la criptografia:

  • Xifratge/Desxifratge: Xifratge de dades bidireccional utilitzant algorismes simètrics (com AES) i asimètrics (com RSA).

  • Signatures Digitals: Signar dades digitalment per verificar la seva integritat i autenticitat.

  • Gestió de Certificats: Creació, gestió i validació de certificats X.509 (utilitzats en HTTPS).

  • Funcions Hash: Generació de hashes segurs per a la verificació d'integritat (checksums).

  • Generació de Claus: Creació de claus públiques i privades.

Configuració

L'extensió openssl no requereix una configuració complexa, però ha d'estar habilitada al sistema PHP.

  1. Comprovació: La manera més ràpida de comprovar-ho és utilitzar la funció phpinfo() i buscar una secció anomenada openssl.

  2. Habilitació (Windows): Cal editar el fitxer php.ini i descomentar la línia:

    Ini, TOML

    extension=openssl
  3. Habilitació (Linux): Normalment s'instal·la via gestor de paquets i s'habilita amb una comanda (p. ex., sudo apt install php-openssl).

  4. Reinici: Després de qualsevol modificació a php.ini, s'ha de reiniciar el servidor web (Apache, Nginx/PHP-FPM).

Usos habituals

L'extensió openssl és la base per a moltes operacions quotidianes de seguretat en aplicacions web:

Cas d'Ús Propòsit Funció PHP Clau (Exemple)
Peticions segures Permet als clients HTTP de PHP (com cURL o file_get_contents) connectar-se a URLs HTTPS. El stream ssl per a file_get_contents()
Xifratge de dades Emmagatzemar dades sensibles (p. ex., informació personal, tokens d'API) xifrades a la base de dades. openssl_encrypt(), openssl_decrypt()
Validació JWT/Webhooks Verificar que una petició de servei extern (un webhook o un token JWT) prové realment de la font legítima mitjançant la seva signatura digital. openssl_verify()
Generació de claus Crear un parell de clau pública/privada per a la seguretat de l'usuari o del sistema. openssl_pkey_new()