Certificat valide uniquement à certaines dates

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Certificat valide uniquement à certaines dates

Re: Certificat valide uniquement à certaines dates

par Doff » 01 févr. 2016, 10:24

Certes certes ;)
Je vais tenter par ce biais.

Re: Certificat valide uniquement à certaines dates

par @rthur » 31 janv. 2016, 23:27

bon, j'aurai voulu utiliser php, mais tant pis.
Bah avec les fonctions PHP exec() ou system() ça fonctionne, non ?
http://fr.php.net/system
http://fr.php.net/exec

Re: Certificat valide uniquement à certaines dates

par Doff » 31 janv. 2016, 15:25

merci @rthur, au moins, je sais que c'est cuit !
bon, j'aurai voulu utiliser php, mais tant pis.

Re: Certificat valide uniquement à certaines dates

par @rthur » 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);
:arrow: Donc en résumé, c'est mort en utilisant les fonctions php_openssl pour faire ce que tu veux.


:idea: 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

Re: Certificat valide uniquement à certaines dates

par Doff » 29 janv. 2016, 11:59

bref, faire ça quoi :
openssl ca -config /etc/openssl.cnf -policy policy_anything -out clientcert.pem -startdate 120815080000Z -enddate 120815090000Z -cert ca.pem -keyfile cakey.pem -infiles clientcert.csr

http://stackoverflow.com/questions/1194 ... an-one-day

mais en php.

Re: Certificat valide uniquement à certaines dates

par Doff » 29 janv. 2016, 11:24

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.

Comme indiqué ici : http://security.stackexchange.com/quest ... te-request
ça se joue à la signature du certif. et j'aurai voulu trouver comment envoyer ces parametres à openssl_csr_sign parce que ré-écrire le fichier de conf ssl (rayon [ca]) à chaque fois me paraît un peu "too much".

Re: Certificat valide uniquement à certaines dates

par @rthur » 29 janv. 2016, 11:06

Bonjour,

Une piste ici (je ne suis pas un expert en certificat SSL) : http://stackoverflow.com/questions/6296 ... penssl-req

Certificat valide uniquement à certaines dates

par Doff » 29 janv. 2016, 10:52

Salut,

J'ai tenté de générer des certificats SSL avec php. Ca marche assez bien (suivant les recettes là : http://php.net/manual/fr/function.openssl-csr-new.php).
Par contre, je cherche comment faire pour avoir un certificat qui soit valide entre une date D1 et une autre D2, choisie par moi.

Avec le open_csr_new et le openssl_csr_sign, on peut donner la durée de validité du certif, mais pas les dates ValidFrom et ValidTo (ce qu'on peut faire sans soucis directement avec openssl en ligne de commande).

Une idée pour faire ça ?
Merci