problème création certificat ssl

Mammouth du PHP | 558 Messages

08 août 2013, 23:23

Bonjour,
Avant d'acheter un certificat ssl,
J’ai testé l'exemple proposé par php.fr
J’ai un plusieurs warning qui s'affiche et je ne sais pas comment les réglés.
C’est la première fois que j'utilise une certification et vue les prix je n’ai pas trop intérêt à me planter.
Merci.

Code : Tout sélectionner

Warning: openssl_csr_sign() [function.openssl-csr-sign]: cannot get CSR from parameter 1 in /home/www/hakazizi/www2/php/mots-inerdits.php on line 28 Warning: openssl_csr_export() expects parameter 1 to be resource, boolean given in /home/www/hakazizi/www2/php/mots-inerdits.php on line 37 Warning: openssl_x509_export() [function.openssl-x509-export]: cannot get cert from parameter 1 in /home/www/hakazizi/www2/php/mots-inerdits.php on line 38 Warning: openssl_pkey_export() [function.openssl-pkey-export]: cannot get key from parameter 1 in /home/www/hakazizi/www2/php/mots-inerdits.php on line 39
ci dessous le code utilisé
<?php
// Assigne les valeurs du nom distingué à utiliser avec le certificat
// Vous devez remplacer les valeurs suivantes pour qu'elles correspondent
// au nom de votre compagnie, ou, plus précisément, le nom de la personne
// qui représente le site de votre compagnie pour qui vous générez des certificats.
// Pour les certificats SSL, le commonName est généralement le nom de domaine
// pour lequel vous installez le certificat, mais pour les certificats S/MIME,
// le commonName sera le nom de la personne qui utilisera le certificat.
$dn = array(
    "countryName" => "FR",
    "stateOrProvinceName" => "Pays de la loire",
    "localityName" => "Nantes",
    "organizationName" => "La rose de l'orient",
    "organizationalUnitName" => "robe et vetement",
    "commonName" => "robe-et-vetement.com",
    "emailAddress" => "[email protected]"
);
// Génère les clés privée et publique
$privkey = openssl_pkey_new();
// Génère la requête de signature de certificat
$csr = openssl_csr_new($dn, $privkey);
// Vous souhaiterez généralement créer un certificat auto-signé
// une fois que votre autorité de certification accède à votre requête
// Cette commande crée une certificat auto-signé valide 365 jours
$sscert = openssl_csr_sign($csr, null, $privkey, 365);
// Maintenant, vous voulez préserver la clé privée, la CSR et le certificat
// auto-signé, de façon à ce qu'ils puissent être installés sur votre
// serveur web, serveur mail ou client mail (suivant l'utilisation).
// Cet exemple vous montre comment placer ces éléments dans des variables
// mais vous pouvez aussi les mettre directement dans des fichiers.
// Typiquement, vous allez envoyer la CSR à votre autorité de certification
// qui vous émettra un "vrai" certificat.
openssl_csr_export($csr, $csrout) and var_dump($csrout);
openssl_x509_export($sscert, $certout) and var_dump($certout);
openssl_pkey_export($privkey, $pkeyout, "mypassword") and var_dump($pkeyout);
}exit();

ViPHP
ViPHP | 4039 Messages

09 août 2013, 08:57

Générer un certificat par Php ?

Pourquoi pas directement avec Openssl, en ligne de commande ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 août 2013, 11:50

Sinon $csr ne semble pas valide (première ligne) du coup le reste de vautre.

Ajout un var_dump pour voir ce que ça donne.

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 558 Messages

09 août 2013, 13:26

bonjour
A la variable csr j'ai bool(false) avec la fonction var_dump je comprend encore moins j'aurais du avoir un tableau en théorie???
merci

@Berzemus d'accord mais comment openssl(); sur php.net il n'y a rien ni syntaxe mais une liste de fonction.
j'ai appliqué la méthode qui m'a paru la plus simple et que j'ai cru comprendre alors qu'en fait je me rend compte qu'il n'en étais rien et que au final je n'y comprend plus rien plus je réfléchis plus je m'embrouille...
merci de votre aide.

ViPHP
ViPHP | 4039 Messages

09 août 2013, 18:18

@Berzemus d'accord mais comment openssl(); sur php.net il n'y a rien ni syntaxe mais une liste de fonction.
j'ai appliqué la méthode qui m'a paru la plus simple et que j'ai cru comprendre alors qu'en fait je me rend compte qu'il n'en étais rien et que au final je n'y comprend plus rien plus je réfléchis plus je m'embrouille...
merci de votre aide.
En fait, en étant sur windows, c'est bien plus compliqué ;)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 août 2013, 22:12

première chose, on lit bien la doc
Note: Vous devez avoir un fichier openssl.cnf valide et installé pour que cette fonction opère correctement. Voir les notes se trouvant dans la section concernant l'installation pour plus d'informations.
et donc du coup utiliser le paramètre de openssl_pkey_new ;)

par exemple
<?php
$configargs = array(
    'config' => path\to\php\extras\ssl\openssl.cnf',
    'digest_alg' => 'md5',
    'x509_extensions' => 'v3_ca',
    'req_extensions'   => 'v3_req',
    'private_key_bits' => 666,
    'private_key_type' => OPENSSL_KEYTYPE_RSA,
    'encrypt_key' => false,
);
Après il y a p'tet des soucis, dans les exemples il y en a un fonctionnel, sans utilisation de openssl_pkey_new().
<?php
$configargs = array(
    'config' => path\to\php\extras\ssl\openssl.cnf',
    'digest_alg' => 'sha512',
    'x509_extensions' => 'v3_ca',
    'req_extensions'   => 'v3_req',
    'private_key_bits' => 2048,
    'private_key_type' => OPENSSL_KEYTYPE_RSA,
    'encrypt_key' => false,
);

$privkey = null;
// Génère la requête de signature de certificat
$csr = openssl_csr_new($dn, $privkey,$configargs);

// Vous souhaiterez généralement créer un certificat auto-signé
// une fois que votre autorité de certification accède à votre requête
// Cette commande crée une certificat auto-signé valide 365 jours
$sscert = openssl_csr_sign($csr, null, $privkey, 365);
openssl_csr_export($csr, $csrout) and var_dump($csrout);
bon par contre les exports reste capricieux ..

@+
Il en faut peu pour être heureux ......