Commit b03a38b6 authored by Yannick Perret's avatar Yannick Perret
Browse files

readme

parent 9fe42c4f
......@@ -26,3 +26,47 @@ se fait à partir des données du script sans passer par le disque (script `JS`)
* `vp12.php` : valide les informations reçues, puis effectue les conversions vers le format P12 en
utilisant l'extension `openssl`. Au final propose de télécharger le résultat
# Technique
## Zones de saisie / upload de données
Ce sont des `textarea` sur lesquelles un bouton (en fait un `input` de type `file`) permet de lancer
une sélection et un chargement de fichier.
Voir dans le `JS` la fonction `getFile()` (associé à l'événement `change` de l'`input` `file`) qui utilise
la fonction `placeFileContent()` qui utilise `readFileContent()`.
## Zone de récupération / download du résultat
Le résultat (format P12) étant binaire, il n'est pas possible de passer par une `textarea`.
La récupération passe par un lien (`a`, avec le type `application/octet-stream`, et dont l'aspect est « maquillé »
en bouton via la classe `btn`). Le script `JS` qui suit crée un `Blob` à partir des données du certificat P12,
et fait pointer le `href` du `a` dessus (URL virtuelle).
La création du `Blob` passe par une conversion de/vers le format base64, car il n'est pas possible de mettre
une chaîne binaire dans du code `HTML` / `JS`.
## Commandes openssl
La conversion utilise l'extension `openssl`. Les commandes :
* `openssl_pkey_get_private($key, $password)` : charge la clé (`$key`, format PEM) protégée par le mot de passe
`$password` et retourne une « ressource de clé » (format anonyme interne à `openssl`)
* `openssl_pkcs12_export($cert, $cres, $skey, $password2)` : exporte le certificat PEM `$cert` et sa clé associée
`$skey` (voir juste au dessus) au format P12 (PKCS12) en le protégeant avec le mot de passe `$password2`. Le
résultat (binaire, format P12) est rangé dans `$cres`
## Général
Cet outil utilise l'authentification Apache via le LDAP du LIRIS. La vérification du _login_ n'est pas strictement
nécessaire. Toutefois ça permet :
* de limiter l'accès aux membres du laboratoire (ce n'est pas un outil public actuellement)
* de pouvoir proposer un nom de fichier pour la récupération du résultat (`$login.p12`)
# Licence
Copyright Yannick Perret / LIRIS, 2019-2020.
GPLv3. Ce code est réutilisable, sans garantie quelconque (à vos risques et périls… :)). Si vous réutilisez ce code
merci de m'en informer (yannick.perret@liris.cnrs.fr).
......@@ -55,12 +55,12 @@ importer votre certificat dans un outil (navigateur…).</p>
<p>Vous référer à la documentation pour l'import d'un certificat :
<a href='https://INSEREZ.VOTRE.DOC'>https://INSEREZ.VOTRE.DOC</a></p>
<a id='a' class='btn' download='$login.p12' type='application/octet-stream'>Télécharger le certificat format P12</a>
<script>
_EOT_;
// partie pour encoder le contenu ($cres) en base64 (on ne peut pas mettre du binaire directement
// dans le code HTML) puis inversement, et permet le téléchargement
echo <<<EOF
<script>
/**
* Convert a base64 string to an ArrayBuffer
*/
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment