IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Mise à jours certificats ?


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut Mise à jours certificats ?
    Bonjour,
    j'aimerais faire un petit programme en java qui détecte l'expiration d'un certificat SSL et surtout savoir si le certificat a été modifié, car certains certificats peuvent être mis à jours avant leurs date d'expiration.
    comment récupérer le certificat et surtout savoir si elle a été changé?
    et d'ailleurs est ce que vous connaissez des outils qui font ça?

    merci pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    admettons que j'ai un certificat ssl comment dois-je faire en java pour que je puisse extraire la date d'expiration de ce certificat.

    merci pour votre aide
    Glas.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Je pense que tu devrais regarder la classe X509Certificate du JDK. Tu as toutes les méthodes pour accéder aux attributs de ton certificat. Pour obtenir un objet X509Certificate à partir d'un flux d'entrée, regarde la classe CertificateFactory

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par George7 Voir le message
    Salut,

    Je pense que tu devrais regarder la classe X509Certificate du JDK. Tu as toutes les méthodes pour accéder aux attributs de ton certificat. Pour obtenir un objet X509Certificate à partir d'un flux d'entrée, regarde la classe CertificateFactory
    merci George7,
    je vais voir tout ça

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    je sais maintenant comment lire la date de création et d'expiration du certificat. par contre je suis bloqué sur comment charger un certificat à partir d'un lien web distant!
    any ideas?

    merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Et bien c'est plutôt simple. Tu as un lien surement en http, tu fais un get en java sur cette adresse, tu récupères le flux de la réponse et tu utilises la classe dont je t'ai parlé dans ma précédente réponse. Tu trouveras pas mal de ressources sur le web pour faire une requête GET en Java, mais je te conseille d'utiliser HTTPClient de Apache qui simplifie grandement la vie !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    j'arrive toujours pas à loader mon certificat avec java.

    voila ce que j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RL test = new URL("https://www...../crl_web.crl");
    URLConnection oConnexion = test.openConnection();
    BufferedReader otest = new BufferedReader(new InputStreamReader(oConnexion.getInputStream()));
    comment dois je faire pour copier ce certificat en local pour que je puis le handler après.

    merci bcp.
    Glas

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par glasgow Voir le message
    j'arrive toujours pas à loader mon certificat avec java.

    voila ce que j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RL test = new URL("https://www...../crl_web.crl");
    URLConnection oConnexion = test.openConnection();
    BufferedReader otest = new BufferedReader(new InputStreamReader(oConnexion.getInputStream()));
    comment dois je faire pour copier ce certificat en local pour que je puis le handler après.

    merci bcp.
    Glas
    As-tu regardé mon lien sur les CertificateFactory donné au dessus ? Il y aun exemple avec un InputStream, ce que tu as. Ensuite si tu as des doutes, la documentation de la méthode generateCertificate devrait vraiment t'aider...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par George7 Voir le message
    As-tu regardé mon lien sur les CertificateFactory donné au dessus ? Il y aun exemple avec un InputStream, ce que tu as. Ensuite si tu as des doutes, la documentation de la méthode generateCertificate devrait vraiment t'aider...
    merci George,
    malheureusement je n'ai pas beaucoup de temps à consacrer au développement, c'est une effort personnel pour apprendre java.
    merci pour votre aide et de votre suivie.
    voila j'essai de me connecter à un certificat ssl sur un lien https.
    puis de manipuler ce certificat.
    suite à votre conseil, j'ai regardé coté CertificateFactory , mais je suis bloqué sur une erreur de compilation, peut être vous avez une idée sur comment surmonter cet obstacle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public static void main(String[] args) {
        	  try {
     
     
        	URL test = new URL("https://zzzzzzzzzz");
            URLConnection yc = test.openConnection();
            CertificateFactory certificatefactory = CertificateFactory.getInstance("X.509");
            X509Certificate x509certificate = (X509Certificate) certificatefactory.generateCertificate(yc.getInputStream());
            System.out.println(x509certificate.getNotBefore());
            System.out.println(x509certificate.getNotAfter());
        	  } catch (Exception e) {
        	       e.printStackTrace();
        	    }
     
        	}
    et voila l'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    java.io.IOException: Server returned HTTP response code: 502 for URL: https://zzzzzzzz
    	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    	at ssl.certificat.com.URLConnectionReader.main(URLConnectionReader.java:22)
    merci encore.
    Gls

  10. #10
    Invité
    Invité(e)
    Par défaut
    Cette erreur est un erreur HTTP (Bad gateway), pas java. Il faut chercher si ton server est bien configuré !

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    en fait, je n'ai pas un serveur à configurer j'essaie tout simplement de me connecter sur un web service, https://webservices....,
    pour récupérer le certificat fournit par ce webservice.
    d'ailleurs quand je passe par un navigateur, je récupère ce certificat facilement.
    mais mon objectif et de le récupérer via un programme java.

    comment je fais pour faire marcher mon code SVP.

    merci
    Gls

  12. #12
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Tu n'as peut être pas le lien direct sur l'url que tu passes en paramètre de ton appli alors que ton navigateur gère des redirections à partir de l'URL de base.

    En d'autres termes, il te faut le lien direct vers le fichier .cer. Passer l'adresse du site ne suffit. Quel est l'adresse exacte que tu donnes ?

    Un certificat est un groupe d'infos publiques. Donner l'adresse ici ne pose aucun problème.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par Marco46 Voir le message
    Tu n'as peut être pas le lien direct sur l'url que tu passes en paramètre de ton appli alors que ton navigateur gère des redirections à partir de l'URL de base.

    En d'autres termes, il te faut le lien direct vers le fichier .cer. Passer l'adresse du site ne suffit. Quel est l'adresse exacte que tu donnes ?

    Un certificat est un groupe d'infos publiques. Donner l'adresse ici ne pose aucun problème.
    merci Macro pour ta réponse,
    j'ai une autre question en fait.
    ce que je cherchais depuis le début c'est de loader un certificat avec java puis LE récupérer s'il a été mis à jours?

    mais est ce que c'est possible de récupérer le certificat dynamiquement à chaque requête et l'installer dans le keystor.
    ainsi on rencontre plus ce genre de problème lié à la mise à jours d'un certificat avant sa date d'expiration.


    merci à George aussi pour son suivie jusqu’à maintenant

    Gls

  14. #14
    Invité
    Invité(e)
    Par défaut
    Une question m'interroge : quel est ton but final ?
    Si tu souhaites enregistrer le certificat ssl du server pour vérification, ne vaudrait-il pas mieux enregistrer seulement le certificat de la CA qui émet les certificats de ce server ? C'est plus l'idée des PKI comme approche. Un certificat de CA expire en général tous les 10 ans et est bien plus stable qu'un certificat server, ça t'éviterait de devoir faire cette opération trop souvent.
    Sinon tu peux bien sûr télécharger le certificat et l'ajouter dans ton keystore, mais tu auras ce problème que tu ne reçois pour le moment aucune certificat avec ton code, et on en revient à la demande de Marco

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par George7 Voir le message
    Une question m'interroge : quel est ton but final ?
    Si tu souhaites enregistrer le certificat ssl du server pour vérification, ne vaudrait-il pas mieux enregistrer seulement le certificat de la CA qui émet les certificats de ce server ? C'est plus l'idée des PKI comme approche. Un certificat de CA expire en général tous les 10 ans et est bien plus stable qu'un certificat server, ça t'éviterait de devoir faire cette opération trop souvent.
    Sinon tu peux bien sûr télécharger le certificat et l'ajouter dans ton keystore, mais tu auras ce problème que tu ne reçois pour le moment aucune certificat avec ton code, et on en revient à la demande de Marco
    si en fait j'arrive à lire maintenant les info de mon certificat en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X509Certificate[] allCerts = getCertificatsInfos(urlPath);
    sauf que mon url renvois plusieurs certificats (https://particuliers.secure.lcl.fr/index.html) et je ne sais pas d'ailleurs le quel est bon..
    quand à la question sur mon but final? -: ) faut savoir que mon objectif a beaucoup évolué au fur et à mesure de notre discussion.
    avant l'objectif c'était de monitorer des certificats, pour savoir si un certificat a expiré ou a été mis à jours avant sa date d'expiration.
    alors que maintenant mon objectif est de discuter avec vous sur les points suivants:

    admettons qu'on manipule plusieurs certificats , une cinquantaine, avec une durée de vie d'un ans.
    on peut bien se contenter de surveiller les certificats et l'ajouter manuellement à chaque mise à jours, avec les problèmes que cela peut impliquer si jamais le fournisseur met à jours son certificat avant sa date d'expiration sans nous prévenir.

    j'aimerais donc discuter avec vous sur la possibilité, d'ajouter (importer avec keyttol) dynamiquement à la volet un certificat dans le keystore à chaque fois qu'on envoi une requête à tel ou tel fournisseur via son service web.
    que ce que vous pensez de cette solutions.
    est ce que java permet cela?
    si oui !, comment faire?

    je suis preneur de toute sorte de documentation sur le sujet.

    merci de votre aide,
    Gls

  16. #16
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Ta solution est mauvaise.

    Elle ne vérifie rien ce qui n'est pas normal. Il y a des solutions standard qu'il faut utiliser.

    Après avoir regardé le certificat du lien que tu as donné, j'ai pu voir qu'il y avait des extensions X.509 dans le certificat mentionnant un point de distribution pour une CRL ainsi qu'un point de distribution pour OCSP. Ce qui implique donc de vérifier que le certificat que tu utilises n'a pas été révoqué.

    D'une manière générale, avant d'utiliser un certificat X.509 (qu'elle qu'en soit l'utilisation) tu dois vérifier que (pas forcément dans cet ordre) :

    1 / Le certificat est correctement formaté, c'est à dire dans un encodage adapté, généralement DER et que toutes les extensions X.509 du certificat marquées comme critiques soient comprises par ton système.
    Si une extension marquée critique n'est pas comprise, ton système doit rejeter le certificat.

    2 / La période de validité doit être correcte. C'est très facile à vérifier.

    3 / La chaine de certification doit être valide. Si tu ne vois pas de quoi je parle tu as de la lecture à faire

    4 / Les CRLs disponibles doivent être téléchargées et examinées afin de vérifier que le certificat n'a pas été révoqué.

    Chacune de ces étapes doit être programmée à la main. La partie 3 qui est relativement complexe existe souvent déjà dans les API de sécurité. La RFC 3280 propose un algorithme standard pour vérifier une chaine de certification qui sert souvent d'algorithme de base pour les API. Par exemple pour BouncyCastle c'est cet algo qui est implémenté.
    Ce mécanisme est décrit en détail dans la section 6 de la RFC 3280.

    Si tu voulais de la doc je te conseille cette RFC.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  17. #17
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Citation Envoyé par glasgow Voir le message
    si en fait j'arrive à lire maintenant les info de mon certificat en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X509Certificate[] allCerts = getCertificatsInfos(urlPath);
    sauf que mon url renvois plusieurs certificats (https://particuliers.secure.lcl.fr/index.html) et je ne sais pas d'ailleurs le quel est bon..
    quand à la question sur mon but final? -: ) faut savoir que mon objectif a beaucoup évolué au fur et à mesure de notre discussion.
    C'est ta chaine de certification qui remonte jusqu'à Verisign.

    Tu peux l'observer depuis firefox.

    EDIT : Pour compléter, ta chaine remonte jusqu'à ce certificat racine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    OU = VeriSign Trust Network
    OU = "(c) 1998 VeriSign, Inc. - For authorized use only"
    OU = Class 3 Public Primary Certification Authority - G2
    O = "VeriSign, Inc."
    C = US
    Ce certificat est installé par défaut dans le magasin de ton navigateur et sur celui de ton système d'exploitation afin de pouvoir vérifier la chaine par toi même.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par Marco46 Voir le message
    Ta solution est mauvaise.

    Elle ne vérifie rien ce qui n'est pas normal. Il y a des solutions standard qu'il faut utiliser.

    Après avoir regardé le certificat du lien que tu as donné, j'ai pu voir qu'il y avait des extensions X.509 dans le certificat mentionnant un point de distribution pour une CRL ainsi qu'un point de distribution pour OCSP. Ce qui implique donc de vérifier que le certificat que tu utilises n'a pas été révoqué.

    D'une manière générale, avant d'utiliser un certificat X.509 (qu'elle qu'en soit l'utilisation) tu dois vérifier que (pas forcément dans cet ordre) :

    1 / Le certificat est correctement formaté, c'est à dire dans un encodage adapté, généralement DER et que toutes les extensions X.509 du certificat marquées comme critiques soient comprises par ton système.
    Si une extension marquée critique n'est pas comprise, ton système doit rejeter le certificat.

    2 / La période de validité doit être correcte. C'est très facile à vérifier.

    3 / La chaine de certification doit être valide. Si tu ne vois pas de quoi je parle tu as de la lecture à faire

    4 / Les CRLs disponibles doivent être téléchargées et examinées afin de vérifier que le certificat n'a pas été révoqué.

    Chacune de ces étapes doit être programmée à la main. La partie 3 qui est relativement complexe existe souvent déjà dans les API de sécurité. La RFC 3280 propose un algorithme standard pour vérifier une chaine de certification qui sert souvent d'algorithme de base pour les API. Par exemple pour BouncyCastle c'est cet algo qui est implémenté.
    Ce mécanisme est décrit en détail dans la section 6 de la RFC 3280.

    Si tu voulais de la doc je te conseille cette RFC.
    merci Marco46, je suivrai ton conseil sur la lecture du RFC .

    Mais faut savoir que si jamais mon code fonctionne je vais l'appliquer sur des fournisseurs de confiances, pour que je puisse accéder à leurs web service.
    pour l'instant je récupère leurs certificats à partir de Firefox puis je l'installe manuellement dans mon keystore avec import keytool.
    cela pose pas mal des problèmes, je ne suis pas prévenu quand l'un de ces certificats expire ou surtout quand il est mis à jours avant sa datte d'expiration.
    dés fois mon site ne marche plus et en creusant je trouve que c'est un problème de certificat.
    c'est pourquoi j'ai pensé à créer un petit thread pour surveiller les mise à jours de ces certificats.
    puis je me suis poser la question pourquoi j'installe pas ces certificats dynamiquement à chaque fois que je fais appel à un service web.
    c'est sur point que j'aimerais avoir vos lumières SVP.

    merci encore à vous tous.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par glasgow Voir le message
    merci Marco46, je suivrai ton conseil sur la lecture du RFC .

    Mais faut savoir que si jamais mon code fonctionne je vais l'appliquer sur des fournisseurs de confiances, pour que je puisse accéder à leurs web service.
    pour l'instant je récupère leurs certificats à partir de Firefox puis je l'installe manuellement dans mon keystore avec import keytool.
    cela pose pas mal des problèmes, je ne suis pas prévenu quand l'un de ces certificats expire ou surtout quand il est mis à jours avant sa datte d'expiration.
    dés fois mon site ne marche plus et en creusant je trouve que c'est un problème de certificat.
    c'est pourquoi j'ai pensé à créer un petit thread pour surveiller les mise à jours de ces certificats.
    puis je me suis poser la question pourquoi j'installe pas ces certificats dynamiquement à chaque fois que je fais appel à un service web.
    c'est sur point que j'aimerais avoir vos lumières SVP.

    merci encore à vous tous.
    Je vais te poser une question : pourquoi ne pas avoir dans ton keystore la chaine de certification sans le certificat server ?
    Pour vérifier la validité d'un certificat server tu n'as pas besoin de lui faire directement confiance, il suffit de fait confiance à la chaine qui a émis ce certificat. Comme je le disais ci dessus, cette chaine est bien plus stable et les changements sont rares. A mon avis, il est beaucoup mieux de ne pas sauvegarder les certificats server un par un, mais plutôt de travailler avec les CAs.
    Je pense que Marco me rejoint sur ce point.

  20. #20
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    +1 George7 d'autant que normalement, les étapes que je t'ai décrites devraient être gérées par ton code de connexion en HTTPS.

    En fait ton appli se fait jetée dès que le certificat en bout de chaine du site sur lequel tu te connectes et que tu as téléchargé manuellement n'est plus valide c'est ça ?

    On peut voir le code de connexion ? Quelle exception est levée lorsque ça arrive ?
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

Discussions similaires

  1. Mise à jour de certificats
    Par coulane dans le forum Glassfish et Payara
    Réponses: 0
    Dernier message: 07/07/2012, 15h47
  2. [mise à jour]Comment procéder sans tout péter...
    Par FFF dans le forum Installation
    Réponses: 3
    Dernier message: 10/09/2003, 08h11
  3. Mise à jour de la version de MySQL
    Par jobstar dans le forum Administration
    Réponses: 8
    Dernier message: 18/08/2003, 10h45
  4. mise à jour de champs time (interbase)
    Par pram dans le forum XMLRAD
    Réponses: 6
    Dernier message: 04/03/2003, 10h25
  5. Réponses: 2
    Dernier message: 12/02/2003, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo