Skip to content
Snippets Groups Projects
Commit b03a38b6 authored by Yannick Perret's avatar Yannick Perret
Browse files

readme

parent 9fe42c4f
No related branches found
No related tags found
No related merge requests found
......@@ -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
*/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment