Administrateur PHPfrance |
9782 Messages
30 janv. 2016, 01:04
Merci @rthur

c'est ça, effectivement, avec les "-startdate" et "-enddate" de openssl, on peut mettre ce qu'on veut.
C'est à la signature du certificat, donc, en toute logique avec
http://php.net/manual/fr/function.openssl-csr-sign.php
Sauf que dans les parametres, y'a que "int days" donc un nombre de jours.
Quand on a un doute, on peut vérifier dans les sources (en C) de PHP pour voir comment c'est géré derrière.
Voici la fonction openssl_csr_sign() :
https://github.com/php/php-src/blob/715 ... sl.c#L2942
Et on voit aux lignes 3026 et 3027, que PHP avec cette fonction indique en dur le paramètre notBefore, et génère le notAfter en fonction du paramètre days :
Code : Tout sélectionner
X509_gmtime_adj(X509_get_notBefore(new_cert), 0);
X509_gmtime_adj(X509_get_notAfter(new_cert), 60*60*24*(long)num_days);

Donc en résumé, c'est mort en utilisant les fonctions php_openssl pour faire ce que tu veux.

La solution est donc d'exécuter directement "openssl ca" comme si tu le faisait en ligne de commande, grace aux fonctions system() ou exec() de PHP
Quand tout le reste a échoué, lisez le mode d'emploi...