ONYX - Utilisation
Signature électronique de PDFs
Sommaire
Introduction
Mapping donne la possibilité de signer les PDfs qu'il génère. Pour cela, des certificats électroniques associés à des clés privés sont utilisés.
Prérequis
Il faut au préalable avoir à disposition un certificat et une clé privée.
Génération d’un certificat et d’une clé privé (pour notre exemple via openssl) :
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout private.pem -out certificate.cer
Clé privé : private.pem Certificat : certificate.cer
Cette commande va générer un certificat et une clé privé sans contrôle des organisme de certification. Cela n’a de sens donc uniquement que pour des tests. Pour un usage réel, il faudra obtenir un certificat grâce à l’intermédiaire d'organismes agréés.
Limites
Le certificat est bien visible sur Foxit Reader mais non visible facilement sur Acrobat Reader.
Reste à faire : Vérifier qu'il soit bien visible si le certificat vient d'un organisme certifieur.
Remarque au sujet des certificats
Différents types de certificats
MAPPING prend en charge plusieurs types de certificats
PFX
Il s'agit d'un format de certificat qui, contrairement aux certificats, est disponible sous forme de texte binaire (Base64). Fondamentalement, vous pouvez imaginer le fichier PFX comme une archive ZIP, dans laquelle le certificat est enregistré avec la clé privée et le certificat correspondant de l'autorité de certification (Intermediate) émetteur. Le contenu du fichier est protégé par mot de passe et ne peut pas être ouvert ou modifié autrement sans le mot de passe.
Le PFX est principalement utilisé dans un serveur Windows (importation / exportation de certificats), mais est également conçu pour la signature d'applications (Signature de code). Le PFX peut également être utilisé comme une copie de sécurité du certificat.
CSR
L’AC utilisera les données de votre demande de signature de certificat pour créer votre certificat SSL. Voici une liste des informations clés :
1. Des informations sur votre entreprise et le site web que vous souhaitez sécuriser avec un certificat SSL. Elles comprennent :
Texte de l’en-tête | Texte de l’en-tête |
---|---|
Texte de la cellule | Texte de la cellule |
Texte de la cellule | Texte de la cellule |
Common Name (CN)
(ex : *.exemple.fr www.exemple.fr mail.exemple.fr) || Le nom de domaine complètement qualifié (FQDN) de votre serveur. | |
---|---|
Texte de la cellule | Texte de la cellule |
Texte de la cellule | Texte de la cellule |
Texte de la cellule | Texte de la cellule |
Texte de la cellule | Texte de la cellule |
Texte de la cellule | Texte de la cellule |
Texte de la cellule | Texte de la cellule |
Texte de la cellule | Texte de la cellule |
Organization (O)
La dénomination sociale de votre organisation. Veuillez ne pas utiliser d’abréviation et inclure la forme de l’entreprise, telle que « SA ».
Pour les certificats EV et OV SSL, ces informations seront vérifiées par l’AC et incluses dans le certificat. Organizational Unit (OU)
Le service de votre organisation responsable de la gestion du certificat. City/Locality (L)
La ville où se situe votre organisation. Veuillez entrer le nom complet. State/County/Region (S)
Le département ou la région où se situe votre organisation. Veuillez entrer le nom complet. Country (C)
Le code à deux lettres du pays où se situe votre organisation. Email Address
L’adresse e-mail du contact de votre organisation.
2. La clé publique qui sera incluse dans le certificat. Le SSL utilise la cryptographie à clé publique ou asymétrique pour chiffrer les données échangées lors d’une session SSL. La clé publique est utilisée pour le chiffrement et la clé privée correspondante est utilisée pour le déchiffrement des données.
3. Des informations sur le type et la longueur de clé. La longueur de clé la plus courante est RSA 2048 mais certaines AC acceptent des clés plus longues (ex : RSA 4096+) et les clés ECC.
Le CSR est généralement créé au format PEM codé Base64. Vous pouvez l’ouvrir avec un simple éditeur de texte
Il est possible d'avoir le certificat et le clé privée dans des fichiers séparés ou bien dans le même fichier
Dans des fichiers séparés
Voici un exemple d'un certificat et une clé privée dans deux fichiers séparés
Fichier private.pem
-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFA ... HRgFVVNXS8jTjAo2LL7U6rZK8gwsXWzqaXNLsvwj9HoF89+reRosTfIIk -----END PRIVATE KEY-----
Fichier certificate.cer
-----BEGIN CERTIFICATE----- MIID2TCCAsGgAwIBAgIJAKcd3Qk2E ... bJVSEN4kV0mdg5jrFhCCZjrlumzs+MQ= -----END CERTIFICATE-----
Dans le même fichier
Voici un exemple d'un certificat et d'une clé privée définis dans le même fichier certifcle.pem
Fichier certifcle.pem
Son contenu est une simple concaténation du contenu du fichier clé privé et du certificat.
-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFA ... HRgFVVNXS8jTjAo2LL7U6rZK8gwsXWzqaXNLsvwj9HoF89+reRosTfIIk -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIID2TCCAsGgAwIBAgIJAKcd3Qk2E ... bJVSEN4kV0mdg5jrFhCCZjrlumzs+MQ= -----END CERTIFICATE-----
Paramétrage
L'utilisation de la signature électronique au sein de MAPPING nécessite la copie de la clé privé et du certificat sur le serveur.
Son utilisation est alors possible dans les workflows MAPPING ou bien en ligne de commande via la commande MAP_XPS
Copie des fichiers sur le serveur
Il faut mettre le fichier de la clé privé et le fichier du certificat sur le système de fichier de serveur
(Exemple : /apps/mapping/certificate)
Les différents paramètres
La signature électronique requiert l'utilisation de plusieurs paramètres. Vous trouverez la liste dans le tableau ci-dessous :
Nom du paramètre | valeur | Signification |
---|---|---|
signclass | < 3 | - |
signdriver | VIDE | Signature électronique déactivée (les autres paramètres n'auront alors pas d'effet) |
signdriver | OPENSSL | Le mode OPENSSL est compatible avec toutes les plateformes supportées par Mapping. Il utilise un ou deux fichiers contenant les clés publiques et privées. Les fichiers doivent se trouver sur le serveur Mapping (chemins réseaux non supportés). |
signdriver | FIRSTSIGNATURE | Le mode FIRSTSIGNATURE est valable uniquement sous Windows car il utilise un certificat installé sur le poste. Le certificat utilisé est le premier de la liste des certificats affichés dans Internet Explorer. |
signdriver | WINDOWS | Activation du mode SHA1. Ce est valable uniquement sous Windows car il utilise un certificat installé sur le poste. Le certificat utilisé est le défini par sa clé de hashage (empreinte numérique). |
signmode | FILENAME | A utiliser si signature électronique activé en mode OPENSSL |
signpassword | Valeur de la passphrase du certificat | Utilisé dans le cas ou le certificat contient une passphrase de sécurité |
signsha1hash | Valeur du SHA1 | utilisé si le signdriver vaut WINDOWS |
signpemfile | Chemin + nom du fichier de la clé privé | Utilisé dans le cas d'utilisation d'un fichier clé privé |
signcerfile | Chemin + nom du fichier du certificat | Utilisé dans le cas d'utilisation d'un fichier certificat |
signpfxfile | Chemin + nom du fichier PFX | Utilisé dans le cas d'utilisation d'un fichier pfx |
timestampurl | ?? | A documenter |
Utilisation
Workflow
La boite des workflows MAPPING à utilisée est la boite toPDF. (XPS to web format / toPDF) De base, cette boite permet de générer un PDF à partir d'un fichier XPS. Cependant il est possible d'y paramétrer une signature électronique.
Onglet Signature
Cet onglet permet l'initialisation des paramètres listés dans le tableau des paramètres.
remarque : A noté que le workflow inialise le paramètre signclass à la valeur 0.
map_xps
Il est également possible d'utiliser la commande MAPPING de conversion map_xps
Il faudra alors initialiser les paramètres de signature électronique via des paramètres -param:CLE=VALEUR
Exemple :
"/apps/mapping/bin/map_xps" "-infile:/apps/mapping/infile/infile.xps" "-param:signmode=FILENAME" "-param:signclass=0" -param:signdriver=OPENSSL" "-param:signpemfile=/apps/mapping/certificate/private.pem" "-param:signcerfile=/apps/mapping/certificate/certificate.cer" "-toPDF" "-outfile:/apps/mapping/out/out.pdf"
Exemples
Exemple 1
Dans cette exemple, nous allons voir comment convertir le fichier d'entrée (fichier XPS) en PDF en lui appliquant un certificat. Nous allons voir comment faire cela à travers d'un workflow et comment faire la même chose en ligne de commande.
Workflows
Création du worflow suivant :
Détail de la boite toPDF (Onglet standard) :
Détail de la boite toPDF (Onglet Signature) :
Ligne de commande sans profil de conversion
Exécutez la commande suivante :
"/apps/mapping/bin/map_xps" "-infile:/apps/mapping/infile/infile.xps" "-param:signclass=0" "-param:signmode=FILENAME" "-param:signdriver=OPENSSL" "-param:signpemfile=/apps/mapping/infile/private.pem" "-param:signcerfile=/apps/mapping/infile/certificate.cer" "-toPDF" "-outfile:/apps/mapping/output/out.pdf"
Ligne de commande avec profil de conversion
Profil de conversion utilisé :
<pdf_signature> <label>for Adobe Reader</label> <language>PDF</language> <signclass>0</signclass> <signmode>FILENAME</signmode> <signpassword></signpassword> <signdriver>OPENSSL</signdriver> <signpfxfile></signpfxfile> <signpemfile>apps/mapping/infile/private.pem</signpemfile> <signcerfile>apps/mapping/infile/certificate.cer</signcerfile> </pdf_signature>
Exécuter la commande suivante :
"/apps/mapping/bin/map_xps" "-infile:/apps/mapping/infile/infile.xps" "-toPDF" "-outfile:/apps/mapping/output/out.pdf" "-profile:pdf_signature"
Exemple 2
Dans cette exemple, nous allons voir comment utiliser un fichier contenant la clé privée et le certificat
Workflows
Création du worflow suivant :
Détail de la boite toPDF (Onglet standard) :
Détail de la boite toPDF (Onglet Signature) :
Le fichier ayant la clé privée et le certificat doit être mis dans le paramètre pem.
Ligne de commande sans profil de conversion
Exécutez la commande suivante :
"/apps/mapping/bin/map_xps" "-infile:/apps/mapping/infile/infile.xps" "-param:signclass=0" "-param:signmode=FILENAME" "-param:signdriver=OPENSSL" "-param:signpemfile=/apps/mapping/infile/privatekey_certificate.pem" "-toPDF" "-outfile:/apps/mapping/output/out.pdf"
Ligne de commande avec profil de conversion
Profil de conversion utilisé :
<pdf_signature> <label>for Adobe Reader</label> <language>PDF</language> <signclass>0</signclass> <signmode>FILENAME</signmode> <signpassword></signpassword> <signdriver>OPENSSL</signdriver> <signpfxfile></signpfxfile> <signpemfile>apps/mapping/infile/privatekey_certificate.pem</signpemfile> <signcerfile></signcerfile> </pdf_signature>
Exécuter la commande suivante :
"/apps/mapping/bin/map_xps" "-infile:/apps/mapping/infile/infile.xps" "-toPDF" "-outfile:/apps/mapping/output/out.pdf" "-profile:pdf_signature"