Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
15 février 2012

htmlpdflatexmanmd




card_eventmgr

card_eventmgr

Monitorer et gérer les lecteurs de carte

   Cet utilitaire est utilisé pour monitorer le statut du lecteur de carte et effectuer des actions en fonction de l’évènement.

Commandes

debug Active le mode debug
daemon Lance en tâche de fond
timeout=‹ms› Temps en ms entre 2 statuts consécutifs (défaut : 1000)
config_file=‹file› Fichier de configuration à utiliser (défaut : /etc/pam_pkcs11/card_eventmgr.conf)
^
15 février 2012

htmlpdflatexmanmd




card_eventmgr.conf

card_eventmgr.conf

Fichier de configuration pour card_eventmgr


card_eventmgr {
    daemon = false ; # lancer en tâche de fond
    debug = false ; # mode debug
    timeout = 1000 ; #polling time en ms
    # Liste des évènements et actions
    event card_insert { # carte insérée
        on_error = ignore ; # que faire en cas d’erreur (ignore=continuer, return=stopper la séquence, quit=quitter le programme)
        action = "/usr/bin/play /usr/share/sounds/warning.wav",
        "/usr/X11R6/bin/xscreensaver-command -deactivate" ; # action à exécuter
    }
    event card_remove { # carte retirée
        on_error = ignore ;
        action = "/usr/bin/play /usr/share/sounds/error.wav",
        "/usr/X11R6/bin/xscreensaver-command -lock" ;
    }
}

^
15 février 2012

htmlpdflatexmanmd




GPShell

GPShell

Interpréteur de script pour communiquer avec les cartes à puces compatibles GlobalPlatform

   Il utilise le plugin de connection PCSC pour accéder aux cartes à puces. Il peut établir un canal sécurisé avec une carte à puce, charger, instantier, supprimer et lister les applications sur les cartes supportées. Ces applications sont pratiquement toujors des applets JAVA.

Installer GPShell et GlobalPlatform

Ajouter dans /etc/apt/sources.list les entrées:
http://ppa.launchpad.net/k-o-/globalplatform/ubuntu
http://ppa.launchpad.net/k-o-/globalplatform/ubuntu
ou, pour compiler les sources:
aptitude install gcc libpcsclite-dev pkg-config zlib zlib1g-dev libcur14-openssl-dev make
wget http://heanet.dl.sourceforge.net/sourceforge/globalplatform/globalplatform-6.0.0.tar.gz
tar xfvz globalplatform-6.0.0.tar.gz
cd globalplatform-6.0.0
./configure —prefix=/usr
make
make install
cd ..
wget http://heanet.dl.sourceforge.net/sourceforge/globalplatform/gpshell-1.4.4.tar.gz
tar xfvz gpshell-1.4.4.tar.gz
cd gpshell-1.4.4
./configure —prefix=/usr
make
sudo make install
cd ..

Commandes

establish_context Établir le contexte, nécessaire avant d’établir une communication avec la carte.
card_connect -reader Connection à la carte dans le lecteur spécifié par son nom (-reader) ou son numéro (-readerNumber)
select -AID Sélectionner l’instance de l’applet
card_disconnect Déconnecter la carte
release_context Arrêter le contexte
mode_201 Sélectionne le mode OpenPlatform 2.0.1
mode_211 Sélectionne le mode globalPlatform 2.1.1
enable_trace Active le debug APDU
enable_timer Log le temps d’exécution d’une commande
open_sc -keyind x -keyver x -key xyz -mac_key xyz -enc_key xyz -kek_key xyz -security x -scp x -scpimpl x -keyDerivation x (mode_211) -scp et scpimpl ne sont pas nécessaires.
open_sc -keyind x -keyver x -mac_key xyz -enc_key xyz (mode_201)
Install -file appletFile -priv privilege -sdAID sdAID -AID AIDInPkg -pkgAID packageAID -instAID instanceAID -nvCodeLimit x -nvDataLimit x Installer une applet
install_for_load -pkgAID x -sdAID sdAID -nvCodeLimit x
load -file appletFile Charger une applet. A utiliser si la commande install ne fonctionne pas.
get_status -element e0 Liste les applets, packages et domaines de sécurité
get_status -element 20 Liste les packages
get_status -element 40 Liste les applets et les domaines de sécurité
get_status -element 80 Liste me gestionnaire de carte et les domaine fournisseur de sécurité
get_data -identifier identifier Retourne la donnée pour l’identifieur donné
put_sc_key -keyver 0 -newkeyver 2 -mac_key new_MAC_key -enc_key new_ENC_key -kek_key new_KEK_key -cur_kek current_KEK_key Ajouter un nouveau jeu de clé version 2
put_sc_key -keyver 1 -newkeyver 1 -mac_key new_MAC_key -enc_key new_ENC_key -kek_key new_KEK_key -cur_kek current_KEK_key Remplacer le jeu de clé version 1
put_dm_keys -keyver 0 -newkeyver 2 -file public_rsa_key_file -pass password -key new_receipt_generation_key Place les clés de gestion délégués en version 2 (mode_211)
put_dm_keys -keyver 0 -newkeyver 2 -file public_rsa_key_file -pass password -key new_receipt_generation_key -cur_kek current_KEK_key Place les clé de gestion délégués en version 2 (mode_201)
send_apdu -APDU x Envoyer un APDU
send_apdu -sc 0 -APDU x Envoyer un APDU sans canal sécurisé
send_apdu_nostop -APDU x Envoyer un APDU et ne stop pas en cas d’erreur

OPTIONS

-reader readerName Nom du lecteur de carte
-readerNumber x Numéro du lecteur de carte
-protocol x Protocole (0 : T=0 ; 1 : T=1)
-keyind x Index de clé
-keyver Version du jeu de clé
-newkeyver x Nouvelle version du jeu de clé
-key key Valeur de la clé en hexa
-mac_key key Clé MAC en hexa
-enc_key key Valeur de clé ENC en hexa
-kek_key key Valeur de clé KEK en hexa
-security x 0 : aucun, 1:MAC, 3:MAC+ENC
-scp x Protocol du canal sécurisé (1 SCP01, 2 SCP02)
-scpimpl x Implémentation du canal sécurisé (ne devrait pas être sopécifié implicitement)
-pass password Mot de passe pour le déchiffrement de la clé
-sc x mode canal sécurisé (0 off, 1 on)
-keyDerivation (’non’, ’visa2’, ’emvcps11’)
-AID aid ID de l’applet
-sdAID aid AID du domaine sécurisé
-pkgAID aid AID du Package
-instAID aid AID de l’instance
-nvCodeLimit x Limite de taille du code non-volatile
-nvDataLimit x Limite de taille de donnée non-volatile
-vDataLimit x Limite de taille de donnée volatile
-file file Nom du fichier
-instParam param Paramètre d’installation
-priv x Privilège (ex : 0x04 Default Selected)
-element x Type d’élément à indexer en hexa

        80 Card Manager / Card Issuer Security Domain only.
        40 Applications (and Security Domains only in GP211).
        20 Executable Load Files only.
        10 Executable Load Files and their Executable Modules only (Only GP211)

-identifier Identifieur pour le tag pour la commande get_data (en hexa, ex : 9F7F)
-APDU apdu APDU à envoyer en hexa (ex : 80CA00CF00)

Variables d'environnement

GLOBALPLATFORM_DEBUG Active le mode debug depuis la librairie GlobalPlatform
GLOBALPLATFORM_LOGFILE Définis le fichier dans lequel écrire les logs

Installer une applet java sur une carte cyberflex 64k


mode_201
enable_trace
establish_context
card_connect
select -AID a000000003000000
open_sc -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494a4b4c4d4e4f -enc_key 404142434445464748494a4b4c4d4e4f
delete -AID A0000003230101
delete -AID A00000032301
delete -AID A00000000101
delete -AID A000000001
install_for_load -pkgAID A000000001 -nvCodeLimit 13500 -sdAID A000000003000000
load -file CardEdgeCflex.ijc
install_for_install -instParam 00 -priv 02 -AID A00000000101 -pkgAID A000000001 -instAID A00000000101 -nvDataLimit 12000
card_disconnect
release_context

Ensuite il reste à intialiser le code pin à "00000000":
opensc-tool -s 00:A4:04:00:06:A0:00:00:00:01:01 -s B0:2A:00:00:38:08:4D:75:73:63:6C:65:30:30:04:01:08:30:30:30:30:30:30:30:30:08:30:30:30:30:30:30:30:30:05:02:08:30:30:30:30:30:30:30:30:08:30:30:30:30:30:30:30:30:00:00:17:70:00:02:01
Utiliser la carte avec opensc:
pkcs15-init -EC -p pkcs15+onepin
^
13 février 2012

htmlpdflatexmanmd




ifdhandler

ifdhandler

Utilitaire de gestion des modules au format ifdhandler

OPTIONS

-r Index du lecteur de carte à utiliser
-F Tâche de fond
-H spécifie qu’il s’agit d’un lecteur hotplug
-p force le polling device event si les évènement sont supportés
-s Envoie les messages de debug et d’erreur à syslogd
-d mode debug (peut être spécifié plusieurs fois)
-i Affiche la liste des pilotes et protocoles disponibles
^
13 février 2012

htmlpdflatexmanmd




ifdproxy

ifdproxy

Utilitaire pour l'accès au lecteur de carte distant

OPTIONS

-d mode debug
-F Ne lance pas en tâche de fond

Commandes

server [-dF] Lance le mode serveur
export [-dF] name device address:port Exporte le lecteur de carte vers une machine distante
list [-dF] address:port Liste les périphériques sur la machine distante, ou tous les périphériques si aucune adresse n’est spécifiée
^
10 mai 2016

htmlpdflatexmanmd




openca - ocspd

openca - ocspd

service OCSP

   openca-ocspd est un répondeur OCSP conforme à la rfc2560. Il peut être utilisé pour vérifier le status d'un certificat en utilisant les clients OCSP.

OPTIONS

-d Détache le processus principal du processus appelant
-p n Spécifie le port d'écoute. Défaut: 2560
-b address Spécifie l'adresse IP d'écoute. Défaut:_*
-c file Fichier de configuration. Défaut: /usr/local/etc/ocspd.conf
-md digest Spécifie le hash à utiliser pour générer les réponses. Défaut: sha1
-k passwd Spécifie le mot de passe utilisé pour charger la clé privée
-i passin Source du mot de passe de la clé
-engine id Spécifie un engine
-r chroot_dir chroot l'application dans le répertoire spécifié
-v Affiche des détails sur les opération effectuées
^
10 mai 2016

htmlpdflatexmanmd




openca - ocspd.conf

openca - ocspd.conf

Fichier de configuration pour openca-ocspd

   Le fichier de configuration est divisé en sections, et est conforme à la syntaxe spécifiée dans openssl-config.

Exemple


[ ocspd ]
default_ocspd = OCSPD_default
    
[ OCSPD_default ]
    
dir = /usr/local/etc/ocspd
db = $dir/index.txt
md = sha1
    
ca_certificate = $dir/certs/cacert.pem
ocspd_certificate = $dir/certs/ocspd_cert.pem
ocspd_key = $dir/private/ocspd_key.pem
pidfile = $dir/ocspd.pid
    
user = ocspd
group = daemon
bind = *
port = 2560
max_childs_num = 5
max_req_size = 8192
    
request = ocsp_req
response = ocsp_response
    
dbms = dbms_ldap # Example using the LDAP for CRL retrivial
    
#dbms = dbms_file # Example using file for CRL
    
engine = HSM # ENGINE section
    
####################################################################
[ ocsp_req ]
default_keyfile = key.pem
    
####################################################################
[ ocsp_response ]
dir = /usr/local/etc/ocspd
ocsp_add_response_certs = $dir/certs/chain_certs.pem
ocsp_add_response_keyid = yes
next_update_days = 0
next_update_mins = 5
    
####################################################################
[ dbms_ldap ]
    
# It is possible to use an URI to identify a CRL and/or the CA certificate, the general format is:
# [protocol]://[user[:pwd]@]server[:port]/[path]
#
# where:
# protocol - specifies the protocol to be used, supported are
# file, ldap, http
# user - is the user for auth (meaningful only if ldap or
# http is used)
# pwd - password used for auth (meaningful only if ldap
# or http is used)
# port - port to connect to (meaningful only if ldap or
# http is used)
# path - complete path to the object (meaningful only if
# http is used)
#
# You can have the CRLs/CA certificates on a simple file
# crl_url = file:///usr/local/etc/ocspd/crl.pem
#
# You can retrieve the CRLs/CA certificates from a web server
# crl_urt = http://server/ca/cacert.der
#
# You can store the CRL into an LDAP server, simply
# store it in certificateRevocationList;binary attribute
#
# There are different way, all legal, to specify the CRL
# URL address:
# crl_url = ldap://user:pwd@ldap.server.org:389
# crl_url = ldap://ldap.server.org:389
crl_url = ldap://localhost
    
# The CRL entry DN is the DN to look for when retrieving the
# date from the LDAP server. Put here the complete DN (usually
# the DN of the CA's certificate).
crl_entry_dn = "email=email@address, cn=Certification Auth, \
o=Organization, c=IT"
    
####################################################################
[ dbms_file ]
    
# You can have the CRL on a simple file in PEM format
crl_url = file:///usr/local/etc/ocspd/crl.pem
    
[ HSM ]
# Hardware accelerators support via the ENGINE interface
engine_id = MyAccelerator
0.engine_pre = login:1:10:11:myPassword
# 0.engine_post = logout:1:10:11

default_ocspd Dans cette section du fichier de configuration sont placés les options utilisées par le répondeur, certains sont disponibles en utilisant les options de la ligne de commande.
db Spécifie la db où tout est concervé. Actuellement, le seul format fichier supporté est celui de openssl.
md Spécifie le hash à utiliser. Défaut: sha1
ca_certificate Chemin vers de certificat de la CA
ocspd_certificate Chemin vers le certificat utilisé par le répondeur
ocspd_key Chemin de la clé privée du certificat utilisé par le répondeur
pidfile fichier du pid du processus
user UID du processus
group GID du processus
bind Adresse d'écoute
port Port d'écoute
threads_num Nombre de threads qui devraient être créés au démarrage. plus le nombre est élevé, plus il peut gérer les fort trafics.
chroot_dir chroot d'application dans le répertoire spécifié
max_req_size Taille maximum de requête reçue. Au delà la requête est détruite. Généralement les requêtes font environ 200/300 octets
request section non utilisé actuellement
response section Ici sont conservés les options pour la construction des réponses
dbms Options pour la crl
ocsp_add_response_certs Chemin d'un fichier contentant les certificats à ajouter à la réponse (généralement toute la chaîne de certification).
ocsp_add_response_keyid Spécifie si l'id de clé est ajouté dans la réponse
next_update_days Nombre de jours jusqu'à la prochaine mise à jours.
next_update_mins idem pour la partie minutes. La réponse est valide pour days+mins
ca_url URI où le certificat de la CA est localisée. (file:// http:// ou ldap://)
crl_url URI où la crl est localisée (file:// http:// ou ldap://)
crl_entry_dn avec ldap, spécifie le dn où rechercher l'attribut certificateRevocationList
engine_id Spécifie l'id de l'engine
engine_pre, engine_post Paramètres d'initialisation du périphérique
^
13 février 2012

htmlpdflatexmanmd




OpenCT

OpenCT

Pilotes pour cartes à puce

   Openct implémente des pilotes pour de nombreux lecteurs de carte. Ils sont fournis au format ifdhandler requis pour pcsc-lite. OpenCT a également un mécanisme primitif pour exporter les lecteurs de carte sur des machines distantes via tcp/ip.

Présentation générale

Le scénario le plus simple et recommandé est:
Application (ex : mozilla)
librairie PKCS11(ex : OpenSC)
OpenCT
Kernel Linux

   Mozilla peut charger les modules de sécurité implémentant PKCS11, opensc le fait et a une interface directe pour utiliser openCT

Parfois vous avez cette pile:
Application
PC-SC/Lite
Driver
Kernel

   PC/SC est un standard sous Windows, donc de nombreuses applications veulent l’utiliser pour communiquer avec les cartes à puce. pcsclite a besoin de pilotes au format ifdhandler. OpenCT a un pilote au format ifdhandler.

Le 3ème modèle:
Application
Driver

   est très simple et a été conçus pour DOS.Il fonctionne très bien pour une application et un utilisateur. Il n’est plus utilisé.

Système d'exploitation

   Les lecteurs de carte USB necéssitent un support USB pour que OpenCT soit notifié. hotplug tend à être remplacé par udev ou hald.

Configurer udev

Pour le support USB sous Linux vous devez avoir:
- libusb
- CONFIG_HOTPLUG pour que le kernel laisse savoir si un lecteur ou un token est branché
- udev installé
- Copier les fichiers suivant:
/lib/udev/rules.d/50-openct.rules
/lib/udev/openct_usb
/lib/udev/openct_pcmcia
/lib/udev/openct_serial

Accès au lecteur de carte distant

   cette fonctionnalité n’inclus aucun mécanisme de sécurité.

Sur la machine avec le lecteur, ajouter à openct.conf (exemple avec un lecteur série):
reader xiring {
    driver = xiring;
    device = serial:/dev/ttyS0;
};

Démarrer ifdproxy pour pointer vers la machine distante:
ifdproxy export xiring /dev/ttyS0 ‹machine-distante› :‹port›

Sur la machine avec le logiciel, ajouter dans openct.conf:
ifdhandler = /usr/sbin/ifdhandler;
ifdproxy {
    server-port = /var/run/openct/proxy,
    device-port = :6666;
};
reader xiring {
    driver = xiring;
    device = remote:serial1@/var/run/openct/proxy;
};

Démarrer openct
/etc/init.d/openct start
ifdproxy server
^
13 février 2012

htmlpdflatexmanmd




openct-control

openct-control

démon openct

OPTIONS

-d mode debug
-n  Désactiver le branchement à chaud
-f Spécifier le fichier de configuration (défaut : /etc/openct.conf)

Commandes

init initialiser openct
attach driver type device Attacher un périphérique
status Affiche le status de tous les lecteurs présent
shutdown Arrête le service OpenCT

Variables d'environnement

OPENCT_SOCKETDIR Spécifie l’emplacement pour les fichiers et sockets (défaut : /var/run/openct)
^
13 février 2012

htmlpdflatexmanmd




openct-tool

openct-tool

Utilitaire pour les cartes à puces openCT

OPTIONS

-d mode debug
-f Spécifier le fichier de configuration (défaut : /etc/openct.conf)
-r Index du lecteur de carte à utiliser

Commandes

list lister les lecteurs trouvés
atr Afficher l’ATR de la carte insérée
wait Attend que la carte soit insérée
rwait Attend qu’un lecteur de carte soit inséré
mf Tente de sélectionner le répertoire principal de la carte
read dump la mémoire de la carte synchrone
^
13 février 2012

htmlpdflatexmanmd




openct.conf

openct.conf

Fichier de configuration pour openct


debug = 0; # niveau de debug
hotplug = yes; # Active le mode hotplug
    
# Path to ifdhandler
ifdhandler {
    program = /usr/sbin/ifdhandler; # emplacement de l’ifdhandler
    force_poll = 1; # désactiver si ›=2.6.27.14 ou 2.6.28.3
    user = openctd;
    groups = {
        usb,
    };
};
    
ifdproxy { # configuration pour idfproxy
    server-port = /var/run/openct/.ifdproxy,
    device-port = :6666;
};
    
# Liste des lecteurs et leurs options
    
#reader towitoko {
# driver = towitoko;
# device = serial :/dev/ttyS0;
#};
    
#reader gempc {
# driver = gempc;
# device = serial :/dev/ttyS0;
#};
    
#reader cm4000 {
# driver = cm4000;
# device = pcmcia :/dev/cmm0;
#};
    
#reader cm4040 {
# driver = ccid;
# device = pcmcia_block :/dev/cmx0;
#};
    
#reader pertosmart1030 {
# driver = pertosmart1030;
# device = serial :/dev/ttyS0;
#};
    
# ID pour Hotplug
driver egate {
    ids = {
        usb:0973/0001,
    };
};

driver ePass3000 {
    ids = {
        usb:096e/0401,
    };
};

driver etoken {
    ids = {
        usb:0529/050c,
        usb:0529/0514,
    };
};
driver etoken64 {
    ids = {
        usb:0529/0600,
        usb:0529/0700,
    };
};
driver eutron {
    ids = {
        usb:073d/0005,
    };
};
driver ikey2k {
    ids = {
        usb:04b9/1202,
    };
};
driver ikey3k {
    ids = {
        usb:04b9/1300,
    };
};
driver starkey {
    ids = {
        usb:096e/0005,
    };
};
driver cardman {
    ids = {
# usb:076b/0596, # OMNIKEY CardMan 2020
# usb:076b/1784, # OMNIKEY CardMan 6020
# usb:08d4/0009, # Fujitsu Siemens SCR USB Reader
    };
};
driver ccid {
    ids = {
        usb:03f0/1024, # HP Keyboard with CCID reader
        usb:046a/0010, # Cherry smartboard G83-6744
        usb:04e6/5115,
        usb:04e6/5116,
        usb:04e6/5117, # SCM Micro token size reader
        usb:04e6/511d, # SCM Micro SCR3311
        usb:04e6/E001,
        usb:04e6/E003,
        usb:073d/0c00, # Eutron SimPocket (doesn’t work yet)
        usb:076b/1021, # OmniKey CardMan 1021
        usb:076b/3021,
        usb:076b/5121,
        usb:076b/5321, # OmniKey CardMan 5321
        usb:076b/6622, # OmniKey CardMan 6121
        usb:0783/0003,
        usb:08e6/3437, # Gemplus
        usb:08e6/3438, # Gemplus GemPC Key SmartCard Reader
        usb:08e6/4433, # Gemplus
        usb:0b97/7762, # O2 Micro, Inc. Oz776 SmartCard Reader
        usb:0b97/7772, # O2 Micro, Inc. Oz776 SmartCard Reader
        usb:0bf8/1006, # fujitsu siemens 3.5" drive size reader
        usb:0dc3/1004, # Athena Smartcard Solutions, Inc. ASEKey
        usb:0a89/0030, # Aktiv Rutoken ECP
    };
};
driver pertosmart1030 {
    ids = {
        usb:072f/0001,
        usb:072f/8009,
    };
};
driver pertosmart1038 {
    ids = {
        usb:072f/9000,
        usb:072f/9006, # ACS CryptoMate Token
        usb:072f/9007, # ACS ACR 100 SIMFlash
        usb:072f/90d0,
    };
};
#driver wbeiuu { # driver not working yet
# ids = {
# usb:104f/0004,
# };
#};
    
# Tested with USBID 0c4b:0100. These are red readers : one with LCD,
# another one without.
driver cyberjack {
    ids = {
        usb:0c4b/0100,
    };
};
driver rutoken {
    ids = {
        usb:0a89/0020, # Aktiv Rutoken S
        usb:0a89/0012, # Aktiv uaToken S
    };
};

^
13 février 2012

htmlpdflatexmanmd




OpenSC

OpenSC

Librairie PKCS#11

   OpenSC est une librairie PKCS #11 ainsi qu'une API pour l'utiliser. Sur la carte, OpenSC implémente PKCS #15

^
13 février 2012

htmlpdflatexmanmd




opensc-explorer

opensc-explorer

Utilitaire intéractif pour accéder aux cartes à puce

OPTIONS

--reader, -r Utilise le numéro de lecteur de carte donné
--card-driver, -c Utilise le pilote de carte donné
--verbose, -v mode verbeux

Commandes

ls Liste tous les fichiers dans le DF courant
cd file-id Changer de DF spécifié par sont file-id
info [file-id] Affiche les attributs d’un fichier spécifié par son file-id
create file-id size Crée un nouveau EF en spécifiant sont file-id et sa taille
delete file-id Supprime le EF ou DF spécifié par son file-id
verify key-typekey-id [key] Présente un PIN ou une clé à la carte. le key-type peut être CHV, KEY ou PRO, le key-id est la clé ou le PIN et les clé est la clé ou le PIN à vérifié en hexa.
change CHVid [old-pin] new-pin Changer un pin
put file-id [input] Copie un fichier local sur la carte
get file-id [output] Copie un EF dans un fichier local
mkdir file-id size Créer un DF
pksign Créer un signature de clé publique. (actuellement non implémenté)
pkdecrypt Décrypte un clé publique. (actuellement non implémenté)
erase Efface la carte
quit Quitter le programme.
^
13 février 2012

htmlpdflatexmanmd




opensc-tool

opensc-tool

Utilitaire générique pour cartes à puce

OPTIONS

--atr, -a Affiche l’Answer To Reset de la carte, au format hexa
--serial Afficher le numéro de série de la carte (ICCSN) en hexa
--send-apdu, -s Envoie un APDU arbitraire à la carte au format AA:BB:CC:DD:EE:FF...
--list-files, -f Liste tous les fichiers stockés sur la carte
--list-readers, -l Liste tous les lecteurs configurés
--list-drivers, -D Liste tous les pilotes de carte installés
--list-rdrivers, -R Liste tous les pilotes de lecteur installés
--reader, -r Numéro du lecteur --card-driver, -c
Utilise le lecteur de carte donné --verbose, -v
Mode verbeux
^
13 février 2012

htmlpdflatexmanmd




opensc.conf

opensc.conf

Fichier de configuration pour OpenSC


app default {
    debug = 0 ; # niveau de debug
    debug_file = "/var/log/opensc-debug.log" ; # Fichier où ecrire les informations de debug (défaut : stdout)
    error_file = "/var/log/opensc-errors.log" ; # Fichier où ecrire les information d’erreur (défaut : stderr)
    profile_dir = PKGDATADIR ; # Répertoire de profil pour pkcs15-init (défaut : /usr/share/opensc)
    reader_drivers = pcsc, openct, ctapi ; # pilotes à charger au démarrage. ’internal’ va charger tous les pilote liés statiquement (défaut)
}
    
    {
        reader_driver ctapi { # configuration pour le pilote ctapi
            module /usr/local/towitoko/lib/libtowitoko.so {
                ports = 0 ; # port CT-API 0..3 (COM1..4) 4 (printer) 5 (modem) 6..7 (LPT1..2)
            }
        }
    
        reader_driver pcsc { # configuration pour le pilote pcsc
            max_send_size = 252 ; # Taille max des données envoyée et reçues. Vérifier avec lsusb -vv pour dwMaxIFSD
            max_recv_size = 252 ;
            connect_exclusive = false ; # connecter le lecteur en mode exclusif (défaut : false)
            connect_reset = true ; # réinitialiser la carte après déconnection (défaut : true)
            transaction_reset = false ; # réinitialise la carte après charque transaction (défaut : false)
            enable_pinpad = false ; # active pinpad si détecté (défaut : false)
        }
    
        reader_driver openct {
            readers = 5 ; Lecteurs virtuels à allouer (défaut : 5)
        }
    
        card_drivers = customcos, internal ; # pilotes à charger au démarrage. ’internal’ charge tous les pilotes liés dynamiquement (défaut et doit toujours être la dernière entrée)
        card_driver customcos {
            module = /usr/lib/opensc/drivers/card_customcos.so ; # emplacement du pilote
        }
    
        force_card_driver = autodetect ; # si spécifié, force OpenSC à utiliser ce pilote.(défaut : autodetect)
        # noms des pilotes internes supportés : etoken, flex, cyberflex, gpk, miocos, mcrd, setcos, starcos, tcos, openpgp, jcop, oberthur, belpic, emv, piv
        card_atr 3b:f0:0d:ca:fe { # nouvelle entrée pour le pilote flex. Format générique : card_atr ‹hex encoded ATR (case-sensitive !)›
            atrmask = "ff:ff:ff:ff:ff" ; # masque AND pour l’ATR de la carte pour la l’identification de la référence ATR.
            driver = "flex" ; # pilote à utiliser
            name = "My CryptoFlex card" ; { nom de la carte
                type = "2002" ; # type de carte (valeur entière)
                flags = "keygen", "rng", "0x80000000" ; # flags au format hexa (ou chaine pour certains : keygen = capacités de génération de clé embarqué, rng = source de nombre aléatoire embarqué) pour personnaliser les capacités de la carte.
                pkcs15emu = "custom" ; # Couche d’amulation PKCS #15, force le pilote d’émulation pour les cartes spécifiques
                force_protocol = "t0" ; # Force le protocole à utiliser (t0, t1 ou raw)
            }
            card_atr 3B:7D:96:00:00:80:31:80:65:B0:83:11:00:AC:83:00:90:00 { # les cartes PIV on besoin d’un entrée comme ceci
                name = "PIV-II" ;
                driver = "piv" ;
            }
            card_atr 3b:6e:00:ff:45:73:74:45:49:44:20:76:65:72:20:31:2e:30 { # les cartes Estonian ID et le pilote Micardo fonctionne ensemble avec T=0. Seul l’ATR ’cold’ devrait être spécifié
                force_protocol = t0 ;
            }
            card_atr 3b:fe:94:00:ff:80:b1:fa:45:1f:03:45:73:74:45:49:44:20:76:65:72:20:31:2e:30:43 {
                force_protocol = t0 ;
            }
            card_atr 3b:fe:94:00:ff:80:b1:fa:45:1f:03:45:73:74:45:49:44:20:76:65:72:20:31:2e:30:43 { # Les cartes D-Trust sont aussi basées sur micardo et T=0
                force_protocol = t0 ;
            }
            card_atr 3b:ff:94:00:ff:80:b1:fe:45:1f:03:00:68:d2:76:00:00:28:ff:05:1e:31:80:00:90:00:23 {
                force_protocol = t0 ;
            }
            card_atr 3b:ff:11:00:ff:80:b1:fe:45:1f:03:00:68:d2:76:00:00:28:ff:05:1e:31:80:00:90:00:a6 {
                force_protocol = t0 ;
            }
            framework pkcs15 { # block spécifique au framework PKCS #15
                use_caching = false ; # spécifie d’utiliser les fichier en cache dans le home de l’utilisateur en apprenant la carte (pkcs15-tool -L) (ne doit pas être utilisé en root) (défaut : false)
                enable_pkcs15_emulation = yes ; # Active l’émulation pkcs15 (défaut : yes)
                try_emulation_first = yes ; # tente d’abord l’émulation pkcs15 avant le traitement normal pkcs15 (défaut : no)
                enable_builtin_emulation = yes ; # Active l’émulation intégrée
                builtin_emulators = esteid, openpgp, tcos, starcert, infocamere, postecert, actalis, atrust-acos, gemsafe, tccardos, PIV-II ; # liste des émulateurs pkcs15 intégrés à tester
                emulate custom { # Paramètre pour un émulateur pkcs15 chargé depuis une librairie externe
                    module = /usr/lib/opensc/drivers/p15emu_custom.so ; # emplacement de la librairie
                }
            }
        }
    
        app opensc-pkcs11 { # paramètres pour le module PKCS11 OpenSC
        pkcs11 {
            num_slots = 4 ; # Nombre de slot maximum par carte à puce
            hide_empty_tokens = yes ; # Cache les slots vides
            lock_login = true ; # opensc tente de locker la carte une fois authentifiée via C_Login. (défaut : false)
            cache_pins = true # normalement le module pkcs11 ne met pas en cache le pin présenté via C_Login, mais certaines carte ne fonctionne pas correctement avec opensc (défaut : true)
            soft_keygen_allowed = true ; # Force la génération de pair de clé embarqué (défaut : true)
            }
        }

^
08 mai 2016

htmlpdflatexmanmd




OpenSSL - config

OpenSSL - config

Fichers de configuration de la librairie CONF

   La librairie CONF openssl peut être utilisée pour lire les fichiers de configuration. Elle est utilisée pour le fichier de configuration maître openssl.cnf et dans d'autres endroits comme dans les fichiers SPKAC et les fichiers d'extensions de certificat pour l'utilitaire x509. Les application openssl peuvent également utiliser la librairie CONF pour leur propre utilisation.

   Un fichier de configuration est divisé en nombre de sections. Chaque section commence avec une ligne [ section_name ] et se termine quand une nouvelle section commence.

   La première section d'un fichier de configuration est spécial et est réferré à la section par défaut qui est généralement non nommée. Quand un nom est recherché il est d'abord recherché dans une section nommée, puis dans la section par défaut.

   L'environnement est mappé en une section appelée ENV. Chaque section consiste d'un nombre de paire nom=valeur.

   La valeur peut être étendue en utilisant la forme $var ou ${var}, qui substitue la valeur de la variable dans la section courante. Il est également possible de substituer une valeur d'une autre section en utilisant la syntaxe $section::name ou ${section::name}. En utilisant la forme $ENV::name les variables d'environnement peuvent être substituées. Il est également possible d'assigner des valeurs aux variables d'environnement en utilisant le nom ENV::name, cela fonctionne si le programme recherche des variables d'environnement en utilisant la librairie CONF au lieu d'appeler getenv() directement.

Configuration de la librairie openssl

   Les application peuvent configurer automatiquement certains aspects d'openssl en utilisant le fichier de configuration maître, ou optionnellement un fichier de configuration alternatif. L'utilitaire openssl inclus cette fonctionnalité; toute sous-commande utilise le fichier de configuration maître sauf si une option est utilisée dans la sous commande pour utiliser un fichier de configuration alternatif.

   Pour activer la configuration de librairie la section par défaut doit contenir la ligne appropriée qui pointe vers la section de configuration principale. Le nom par défaut est openssl_conf qui est utilisé par l'utilitaire openssl. D'autres applications peuvent utiliser un nom alternatif

La section de configuration devrait consister en un jeu de nom=valeur qui contient des informations spécifique au module. Le nom représente le nom du module de configuration et la valeur est spécifique au module. Par exemple:
openssl_conf = openssl_init

[openssl_init]
oid_section = new_oids
engines = engine_section
    
[new_oids]
... new oids here ...
    
[engine_section]
... engine stuff here ...

Module de configuration d'objet ASN1

Ce module a le nom oid_section. La valeur est le nom de la section contenant les paires de valeur d'OID. Bien que certains utilitaires openssl ont leur propre section d'objet ASN1, toutes ne l'ont pas. En utilisant le module de configuration d'objet ASN1 tout l'utilitaire openssl peut voir les nouveaux objets. Par exemple:
[new_oids]
some_new_oid = 1.2.3.4
some_other_oid = 1.2.3.5

Il est également possible de définir la valeur avec un nom long, suivi par une virgule et l'OID:
shortName = some object long name, 1.2.3.4

Module de configuration engine

   Le module de configuration ENGINE a le nom des engines. La valeur pointe vers une section contenant les informations de configuration du moteur.

Chaque section spécifique est utilisée pour définir les algorithmes par défaut, le chargement dynamique, d'initialisation et les contrôles envoyés. par exemple:
[engine_section]
# Configure ENGINE named "foo"
foo = foo_section
# Configure ENGINE named "bar"
bar = bar_section
    
[foo_section]
... foo ENGINE specific commands ...

[bar_section]
... "bar" ENGINE specific commands ...

La commande engine_id est utilisée pour donner le nom du moteur. par exemple:
[engine_section]
# This would normally handle an ENGINE named "foo"
foo = foo_section
    
[foo_section]
# Override default name and use "myfoo" instead.
engine_id = myfoo

   La commande dynamic_path charge et ajoute un engine. C'est équivalent au contrôle SO_PATH avec la partie argument suivie par LIST_ADD avec la valeur 2 et LOAD à l'engine dynamic.

   La commande init détermine l'initialisation de l'engine. À 0 l'engine n'est pas initialisé. La commande default_algorithms définis les algorithmes par défaut qu'un engin fournis en utilisant les fonctions ENGINE_set_default_string().

Si le nom match aucune des commande ci-dessus, il sont considérés comme des commandes ctrl qui sont envoyés à l'engine. La valeur de la commande est l'argument de la commande ctrl. Si la v+aleur est une chaîne vide aucune valeur n'est envoyée à la commande. par exemple:
[engine_section]
# Configure ENGINE named "foo"
foo = foo_section
    
[foo_section]
# Load engine from DSO
dynamic_path = /some/path/fooengine.so
# A foo specific ctrl.
some_ctrl = some_value
# Another ctrl that doesn't take a value.
other_ctrl = EMPTY
# Supply all default algorithms
default_algorithms = ALL

Module de configuration EVP

Ce module a le nom alg_section qui pointe vers une section contenant les commandes algorithme. Actuellement la seule commande algorithme supportée est fips_mode dont la valeur devrait être un booléen. par exemple:
alg_section = evp_settings
    
[evp_settings]
fips_mode = on

Module de configuration ssl

Ce module a le nom ssl_conf qui pointe vers une section contenant les configurations ssl. Chaque ligne dans la section contient le nom de la configuration et la section. Chaque section consiste de paires commande-valeur pour SSL_CONF. Chaque paire sera passée à SSL_CTX ou la structure SSL en cas d'appel SSL_CTX_config() ou SSL_config() avec le nom de configuration approprié. Noter que tout caractère avant le point initial dans la section est ignoré donc la même commande peut être utilisée plusieurs fois:
ssl_conf = ssl_sect
    
[ssl_sect]
server = server_section
    
[server_section]
RSA.Certificate = server-rsa.pem
ECDSA.Certificate = server-ecdsa.pem
Ciphers = ALL:!RC4

Notes

   Si un fichier de configuration tente d'étendre une variable qui n'existe pas alors une erreur est flaggée et le fichier n'est pas chargé. Cela peut se produire si une variable d'environnement n'existe pas.

   Cela peut fonctionner en incluant une section par défaut pour fournir une valeur par défaut: si la recherche d'environnement échoue, la valeur par défaut sera utilisée. Pour que cela fonctionne correctement la valeur par défaut doit être définie très tôt dans le fichier de configuration.

Si la même variable existe dans la même section, seule la dernière est prise en compte. Sous certaines circonstances comme avec les DN le même champ peut être présent plusieurs fois:
1.OU = "My first OU"
2.OU = "My Second OU"

Exemples

Exemple de fichier de configuratio utilisant des fonctionnalités décrite plus haut:
HOME=/temp
RANDFILE= ${ENV::HOME}/.rnd
configdir=$ENV::HOME/config
    
[ section_one ]
# We are now in section one.
# Quotes permit leading and trailing whitespace
any = " any variable name "
    
other = A string that can \
cover several lines \
by including \\ characters
    
message = Hello World\n
    
[ section_two ]
greeting = $section_one::message

L'exemple suivant montre come étendre les variables d'environnement. Supposont que l'on veut une variable tmpfile référrant à un fichier temporaire. Le répertoire où il est placé peut être déterminé par la variable d'environnement TEMP ou TMP, mais elle peut ne pas être définie. En incluant les noms des variables d'environnement sans que celle-ci n'existe créé une erreur en chargeant le fichier de configuration. En utilisant la section par défaut pour les 2 valeurs:
# si TMP n'existe pas
TMP=/tmp
# Si TMP existe
TEMP=$ENV::TMP
tmpfile=${ENV::TEMP}/tmp.filename

Exemple pour entrer en mode fips:
openssl_conf = openssl_conf_section
    
[openssl_conf_section]
alg_section = evp_sect
    
[evp_sect]
fips_mode = yes

Configuration plus complexe:
openssl_conf = openssl_conf_section
    
[openssl_conf_section]
alg_section = evp_sect
oid_section = new_oids
    
[evp_sect]
fips_mode = no
    
[new_oids]
# New OID, just short name
newoid1 = 1.2.3.4.1
# New OID shortname and long name
newoid2 = New OID 2 long name, 1.2.3.4.2

   Les exemples ci-dessus peuvent être utilisées avec toute application utilisant la librairie si openssl_conf est modifié pour correspondre au nom de l'application.

Par exemple, si le second fichie d'exemple ci-dessus est sauvé dans example.cnf, la ligne de commande:
OPENSSL_CONF=example.cnf openssl asn1parse -genstr OID:1.2.3.4.1
va afficher
0:d=0 hl=2 l= 4 prim: OBJECT :newoid1

BUGS

   Il n'y a actuellement aucun moyen d'utiliser des caractères en utilisant la notation octal \nnn. Les chaînes sont toutes terminer par un caractère null, donc les nulls ne peuvent pas faire partie de la valeur. Les fichiers sont chargés en une seule passe. Cela signifie qu'une expansion de variable ne fonctionne que si les variables sont référencées très tôt dans le fichier.
^
08 mai 2016

htmlpdflatexmanmd




OpenSSL - engine

OpenSSL - engine

Trouver et charger les engines

   La commande engine est utilisée pour voir le status et les capacités des engines spécifiés. Les engines peuvent être spécifiés avant ou après tous les autres flags de la ligne de commande.

OPTIONS

-v -vv -vvv -vvvv -v liste les commandes de contrôle temps-réel, -vv ajoute une description pour chaque commande, -vvv ajoute les flags d'entrée, et -vvvv ajoute les flags d'entrée internes
-c Liste les capacités de chaque engine
-t Teste si chaque engine spécifié est disponible, et affiche la réponse
-tt Affiche une erreur pour un engine non-disponible
-pre command=item -post command Configuration en ligne de commande des engines. -pre est donné à l'engine avec qu'il soit chargé et -post est donné une fois chargé.

Exemple

Pour lister toutes les commandes disponibles d'un engine dynamique
openssl engine -t -tt -vvvv dynamic
Pour lister les capacités de l'engine rsax
openssl engine -c
^
19 février 2012

htmlpdflatexmanmd




OpenSSL - asn1parse

OpenSSL - asn1parse

Parser les structures ASN.1, ou extraire les données ASN.1

OPTIONS

-inform DER|PEM Format d’entrée (DER : binaire, PEM : base64)
-in filename Fichier d’entrée
-out filename Fichier de sortie où placer les données DER.
-noout Ne sort pas la version parsée du fichier en entrée
-offset number Commence à parser à l’offset spécifié
-length number Nombre d’octets à parser
-i Indenter la sortie en accord avec le "depth" des structures
-oid filename Un fichier contenant un OID additionnel.
-stdparse offset Parse le contenu des octets de l’objet ASN.1 en commençant à l’offset spécifié. Peut être spécifié plusieurs fois.
-genstr string, -genconf file Génère des données encodée basé sur la chaîne ou le fichier spécifié en utilisant le format ASN1_generate_nconf

SORTIE

La sortie contient des lignes de ce type:
0:d=0 hl=4 l= 681 prim : SEQUENCE
.....
229:d=3 hl=3 l= 141 prim : BIT STRING
373:d=2 hl=3 l= 162 cons : cont [ 3 ]
376:d=3 hl=3 l= 159 cons : SEQUENCE
379:d=4 hl=2 l= 29 cons : SEQUENCE
381:d=5 hl=2 l= 3 prim : OBJECT

   Chaque ligne commence avec un offset décimal. d=xx spécifie la profondeur courante. hl=XX donne la longueur d’en-tête du type courant. l=XX donne la longueur du contenu.

Exemples

parser un fichier
openssl asn1parse -in file.pem
parser un fichier DER
openssl asn1parse -inform DER -in file.der
générer un UTF8String simple
openssl asn1parse -genstr ’UTF8:Hello World’
Générer un UTF8String, ne pas parser la sortie
openssl asn1parse -genstr ’UTF8:Hello World’ -noout -out utf8.der
génerer en utilisant un fichier de configuration
openssl asn1parse -genconf asn1.cnf -noout -out asn1.der
exemple de fichier de configuration
asn1=SEQUENCE:seq_sect
[seq_sect]
field1=BOOL:TRUE
field2=EXP:0, UTF8some random string
^
26 février 2012

htmlpdflatexmanmd




OpenSSL - ca

OpenSSL - ca

Application CA minimaliste. Peut être utilisé pour signer des requêtes de certificats et générer des CRL. Maintient également une base des certificats délivrés et leur status.

Options CA

-config filename Spécifie le fichier de configuration à utiliser
-name section Spécifie la section du fichier de configuration à utiliser
-in filename Fichier source contenant une requête de certificat à signer
-ss_cert filename un certificat auto-signé à signer par la CA
-spkac filename Un fichier contenant une clé publique signée Netscape, un challenge et des valeurs de champs assitionnels à signer par la CA.
-infiles Si présent doit être la dernière option. Tous les arguments qui suivent sont traités comme des noms de fichier contenant des requêtes.
-out filename Fichier de sortie. (défaut : stdout)
-outdir directory Répertoire où placer les certificats de sortie. Le certificat sera nommé avec un numéro hexa et l’extension pem.
-cert Fichier du certificat CA
-keyfile filename La clé privée à utiliser pour signer la requête
-key password Le mot de passe à utiliser pour chiffrer la clé privée
-selfsign indique que les certificats délivrés doivent être signés avec la clé qui a servit à signer la requête (spécifié avec -keyfile). Les requêtes signées avec un certificat différent sont ignorés. si spkac, ss_cert ou gencrl sont spécifiés, cette option est ignorée.
-passin arg La source du mot de passe.
-verbose mode verbeux
-notext N’affiche pas la forme texte dans le fichier de sortie
-startdate date Permet de définir la date de début au format YYMMDDHHMMSSZ (structure ASN1 UTCTime)
-enddate date Permet de définir la date d’expiration au format YYMMDDHHMMSSZ (structure ASN1 UTCTime)
-days arg Le nombre de jours pendant lesquels certifier ce certificat
-md alg Le message digest à utiliser (md5 sha1 et mdc2)
-policy arg Spécifie la stratégie CA à utiliser. C’est une section dans le fichier de configuration
-msie_hack Permet un fonctionnemnt avec les très vieux contrôle d’enrollement de certificat IE ’certenr3’.
-preserveDN Normalement l’ordre du DN est le même que l’ordre des champs dans la section de stratégie. Avec cette option, l’ordre est le même que dans la requête
-noemailDN Le DN d’un certificat peut contenir le champ email s’il est présent dans le DN de la requête ; cependantil est préférable d’avoir l’email dans l’extnsion altName. Avec cette option, le champs email est supprimé du sujet du certificat et définis dans les extensions si présent.
-batch Dans ce mode tous les certificats sont certifiés automatiquement sans poser de questions.
-extensions section La section du fichier de configuration contenant les extensions à ajouter quand un certificat est délivré. Sans extention, un V1 est créé, si une extension est présente, même vide, un v3 est créé.
-extfile file Un fichier de configuration additionnel contenant les extensions à ajouter.
-engine id Spécifie le type de moteur. peut être définis à default pour tous les algorithmes disponibles
-subj arg Remplace le sujet dans la reque^te. doitêtre au format /type0=value0/type1=value1/type2=...
-utf8 Les valeurs dns les champs sont interprétés comme chaînes UTF-8 (par défaut en ASCII)
-multivalue-rdn l’argument -subj est interprété comme RDN multivalué. ex : /DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe (sans cette option : 123456+CN=John Doe)

Options CRL

-gencrl Génère une CRL basé sur les informations dans le fichier d’index
-crldays num Nombre de jours avant la prochaine CRL. valeur placée dans le champ nextUpdate de la CRL.
-crlhours num Nombre d’heure avant la prochaine CRL.
-revoke filename Un nom de fichier contenant un certificat à révoquer.
-crl_reason reason Raison dela révocation. Peut être (unspecified, keyCompromise, CACompromise, affiliationChanged, superseded, cessationOfOperation, certificateHold ou removeFromCRL). Définis une raison de révocation va créer une CRL v2.
-crl_hold instruction Définis la raison de révocation à certificateHold et l’instruction doit etre un OID (pet être à holdInstructioNone (=obsolete), holdInstructionCallIssuer ou HoldInstructionReject)
-crl_compromise time Définis la raison de révocation keyCompromise et le temps au format YYYYMMDDHHMMSSZ.
-crl_CA_compromise time Idem pour CACompromise
-crlexts section Section dans le fichier de configuration contenant les extensions CRL à inclure. Sans extension, une CRL v1 st générée.

Options du fichier de configuration

   La section par défaut doit être nommée dans l’option default_ca de la section ca (ou de la section par défaut).

oid_file Spécifie le fichier contenant des oid additionnels, un par ligne.
oid_section Spécifie la section dans le fichier de configuration contenant les oid additionnels.
new_certs_dir Idem à -outdir
certificate idem à -cert
private_key idem à -keyfile
RANDFILE un fichier utilisé pour lire et écrire des informations de nombre aléatoire.
default_startdate idem à -startdate
default_enddate idem à -enddate
default_crl_hours idem à -crlhours
default_crl_days idem à -crldays
default_md idem à -md
database le fichier de données à utiliser
unique_subject à yes, les certificats doivent avoir un sujet unique
serial Fichier texte contenant le prochain numéro de CRL en hexa à utiliser.
x509_extensions idem à -extensions
crl_extensions idem à -crlexts
preserve idem à -preserveDN
email_in_dn idem à -noemailDN
msie_hack idem à -msie_hack
policy idem à -policy
name_opt, cert_opt Permettent au format utilisé d’afficher les détails du certificat lorsqu’il est demandé à l’utilisateur de confirmer la signature.
copy_extensions Détermine comment les extensions dans la requête sont manipulés. non spécifié ou à none, lesextensions sont ignorés. à copy, les extensions non encore présentes sont copiées dans le certificat. a copyall, toutes les extensions sont copiées en supprimant celles déjà présentes

Exemples

Signer une requête de certificat:
openssl ca -in req.pem -out newcert.pem
signer une requête e certificat, en utilisant les extensions de CA:
openssl ca -in req.pem -extensions v3_ca -out newcert.pem
Générer une CRL:
openssl ca -gencrl -out crl.pem
signer plusieurs requêtes:
openssl ca -infiles req1.pem req2.pem req3.pem
Certifier un SPKAC Netscape:
openssl ca -spkac spkac.txt
exemple de fichier SPKAC (tronquée pour plus de clarté):
SPKAC=MIG0MGAwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAn7PDhCeV/xIxUg8V70YRxK2A5
CN=Steve Test
emailAddress=steve@openssl.org
0.OU=OpenSSL Group
1.OU=Another Group

Exemple de section ca dans la configuration


[ ca ]
default_ca = CA_default # Section ca par défaut
    
[ CA_default ]
dir = ./demoCA # Répertoire de base
database = $dir/index.txt # fichier d’index
new_certs_dir = $dir/newcerts # Répertoire pour les nouveaux certificats délivrés
    
certificate = $dir/cacert.pem # Certificat racine
serial = $dir/serial # fichier serial
private_key = $dir/private/cakey.pem# Clé privée de la ca
RANDFILE = $dir/private/.rand # Fichier de nombres aléatoire
    
default_days = 365 # Durée de validité du certificat
default_crl_days= 30 # Durée de la CRL
default_md = md5 # md à utiliser
    
policy = policy_any # Stratégie par défaut
email_in_dn = no # Ne pas ajouter le mail dans le DN
    
name_opt = ca_default # Option d’affichage du nom du sujet
cert_opt = ca_default # Option d’affichage du certificat
copy_extensions = none # Ne pas copier les extensions depuis la requête
    
[ policy_any ]
countryName = supplied
stateOrProvinceName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

Variables d'environnement

OPENSSL_CONF Réflète l’emplacement du fichier de configuration maître (idem à -config)
^
27 février 2012

htmlpdflatexmanmd




OpenSSL - ciphers

OpenSSL - ciphers

Convertis les listes de chiffrement en liste de préférence ordonnées. Peut être utilisé comme outil de test pour déterminer la liste de chiffrement.

OPTIONS

-v mode verbeux
-V idem à -v mais inclus les codes des suites de chiffrements en hexa.
-ssl3 Uniquement les chiffrements SSL v3
-ssl2 Uniquement les chiffrements SSL v2
-tls1 Uniquement les chiffrements TLS v1
cipherlist Une liste de chiffrement à convertir en une liste de préférence de chiffrement.

Format de liste de chiffrement

   Une liste consiste en une ou plusieurs chaîne de chiffrement séparés par des ':'. Une liste peut être une suite de chiffrements simple comme RC4-SHA. Elle peut représenter un certain algorithme. Par exemple SHA1 représente toutes les suites utilisant cet algorithme, et SSLv3 représente tous les algorithmes SSLv3.

  Les listes de suite de chiffrement peuvent être combinées en une simple chaîne en utilisant le '+' (est un ET logique), un '!' pour les chiffrements à supprimer de la liste, un '-' pour ceux à supprimer, mais qui peuvent être rajoutés ultérieurement. En plus, la chaine de chiffrement @STRENGTH peut être utilisée pour trier la liste de chiffrement courante dans l'ordre de longueur de clé de chiffrement.

Chaînes de chiffrement

   Liste des chaînes de chiffrement permises et leur signification:

DEFAULT Liste de chiffrement par défaut. Déterminé à la compilation. (pour openssl v1.0.0 est normalement à ALL:!aNULL:!eNULL). Doit être la première chaîne de chiffrement spécifiée.
COMPLEMENTOFDEFAULT Les chiffrement inclus dans ALL, mais non actifs par défaut.
ALL Toutes les suites de chiffrement sauf eNULL
COMPLEMENTOFALL Les suites de chiffrement non activés par ALL, actuellement eNULL.
HIGH Suites de chiffrements élevés. Actuellement, signifie toutes les longueurs de clé supérieurs à 128 bits, et certains chiffrements avec clé 128 bits.
MEDIUM Suites de chiffrements moyens. Actuellement, signifie toutes les longueurs de clé à 128 bits.
LOW Suites de chiffrements faibles. Actuellement, signifie toutes les longueurs de clé supérieurs à 56 ou 64 bits mais exclus les suites de chiffrement d’export
EXP, EXPORT Algorithmes de chiffrement d’export, incluant les clés à 56 et 64 bits.
EXPORT40 Algorithmes de chiffrement d’export de 40 bits
EXPORT56 Algorithmes de chiffrement d’export de 56 bits
eNULL, NULL Chiffrement qui n’offrent pas de cryptage.
aNULL Suites de chiffrement n’offrant pas d’authentification. Actuellement, les algorithmes DH anonymes. Vulnérables aux attaques MITM.
kRSA, RSA Suites de chiffrement utilisant les échanges de clé RSA
kEDH Suites de chiffrement utilisant les agréments de clé DH éphémères
kDHr, kDHd Suites de chiffrement utilisant les agréments de clé DH et les certificats DH signés par CA avec des clé RSA et DSS, respectivement.
aRSA Suites de chiffrement utilisant l’authentification RSA.
aDSS, DSS Suites de chiffrement utilisant l’authentification DSS
aDH Suites de chiffrement utilisant effectivement l’authentification DH.
kFZA, aFZA, eFZA, FZA Suites de chiffrement utilisant l’échange de clé, l’authentification et/ou le chiffrement FORTEZZA
TLSv1, SSLv3, SSLv2 Suites de chiffrement utilisant respectivement TLS v1, SSL v3 et SSL v2.
DH Suites de chiffrement utilisant DH, incluant DH anonyme.
ADH Suites de chiffrement utilisant DH anonyme.
AES Suites de chiffrement utilisant AES
CAMELLIA Suites de chiffrement utilisant Camellia
3DES Suites de chiffrement utilisant 3DES
DES Suites de chiffrement utilisant DES
RC4 Suites de chiffrement utilisant RC4
RC2 Suites de chiffrement utilisant RC2
IDEA Suites de chiffrement utilisant IDEA
SEED Suites de chiffrement utilisant SEED
MD5 Suites de chiffrement utilisant MD5
SHA1, SHA Suites de chiffrement utilisant SHA1
aGOST Suites de chiffrement utilisant GOST R 34.10 (soit 2001 soit 94) pour l’authentification
aGOST01 Suites de chiffrement utilisant l’authentification GOST R 34.10-2001
aGOST94 Suites de chiffrement utilisant L’authentification GOST R 34.10-94
kGOST Suites de chiffrement utilisant l’échange de clé VKO 34.10 (RFC 4357)
GOST94 Suites de chiffrement utilisant HMAC basé sur GOST R 34.10-94
GOST89MAC Suites de chiffrement utilisant GOST 28147-89 MAC

Noms des suites de chiffrement

   Les listes suivantes donnent les noms des suites de chiffrement SSL ou TLS et leur équivalent OpenSSL.

Suites de chiffrement SSL v3.0


SSL_RSA_WITH_NULL_MD5 NULL-MD5
SSL_RSA_WITH_NULL_SHA NULL-SHA
SSL_RSA_EXPORT_WITH_RC4_40_MD5 EXP-RC4-MD5
SSL_RSA_WITH_RC4_128_MD5 RC4-MD5
SSL_RSA_WITH_RC4_128_SHA RC4-SHA
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 EXP-RC2-CBC-MD5
SSL_RSA_WITH_IDEA_CBC_SHA IDEA-CBC-SHA
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA EXP-DES-CBC-SHA
SSL_RSA_WITH_DES_CBC_SHA DES-CBC-SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA DES-CBC3-SHA
    
SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA Not implemented.
SSL_DH_DSS_WITH_DES_CBC_SHA Not implemented.
SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA Not implemented.
SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA Not implemented.
SSL_DH_RSA_WITH_DES_CBC_SHA Not implemented.
SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA Not implemented.
SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA EXP-EDH-DSS-DES-CBC-SHA
SSL_DHE_DSS_WITH_DES_CBC_SHA EDH-DSS-CBC-SHA
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA EDH-DSS-DES-CBC3-SHA
SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA EXP-EDH-RSA-DES-CBC-SHA
SSL_DHE_RSA_WITH_DES_CBC_SHA EDH-RSA-DES-CBC-SHA
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA EDH-RSA-DES-CBC3-SHA
    
SSL_DH_anon_EXPORT_WITH_RC4_40_MD5 EXP-ADH-RC4-MD5
SSL_DH_anon_WITH_RC4_128_MD5 ADH-RC4-MD5
SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA EXP-ADH-DES-CBC-SHA
SSL_DH_anon_WITH_DES_CBC_SHA ADH-DES-CBC-SHA
SSL_DH_anon_WITH_3DES_EDE_CBC_SHA ADH-DES-CBC3-SHA
    
SSL_FORTEZZA_KEA_WITH_NULL_SHA Not implemented.
SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA Not implemented.
SSL_FORTEZZA_KEA_WITH_RC4_128_SHA Not implemented.

Suites de chiffrement TLS v1.0


TLS_RSA_WITH_NULL_MD5 NULL-MD5
TLS_RSA_WITH_NULL_SHA NULL-SHA
TLS_RSA_EXPORT_WITH_RC4_40_MD5 EXP-RC4-MD5
TLS_RSA_WITH_RC4_128_MD5 RC4-MD5
TLS_RSA_WITH_RC4_128_SHA RC4-SHA
TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 EXP-RC2-CBC-MD5
TLS_RSA_WITH_IDEA_CBC_SHA IDEA-CBC-SHA
TLS_RSA_EXPORT_WITH_DES40_CBC_SHA EXP-DES-CBC-SHA
TLS_RSA_WITH_DES_CBC_SHA DES-CBC-SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA DES-CBC3-SHA
    
TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA Not implemented.
TLS_DH_DSS_WITH_DES_CBC_SHA Not implemented.
TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA Not implemented.
TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA Not implemented.
TLS_DH_RSA_WITH_DES_CBC_SHA Not implemented.
TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA Not implemented.
TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA EXP-EDH-DSS-DES-CBC-SHA
TLS_DHE_DSS_WITH_DES_CBC_SHA EDH-DSS-CBC-SHA
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA EDH-DSS-DES-CBC3-SHA
TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA EXP-EDH-RSA-DES-CBC-SHA
TLS_DHE_RSA_WITH_DES_CBC_SHA EDH-RSA-DES-CBC-SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA EDH-RSA-DES-CBC3-SHA
    
TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 EXP-ADH-RC4-MD5
TLS_DH_anon_WITH_RC4_128_MD5 ADH-RC4-MD5
TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA EXP-ADH-DES-CBC-SHA
TLS_DH_anon_WITH_DES_CBC_SHA ADH-DES-CBC-SHA
TLS_DH_anon_WITH_3DES_EDE_CBC_SHA ADH-DES-CBC3-SHA

Suites de chiffrement AES de la rfc3268, étendant TLS v1.0


TLS_RSA_WITH_AES_128_CBC_SHA AES128-SHA
TLS_RSA_WITH_AES_256_CBC_SHA AES256-SHA
    
TLS_DH_DSS_WITH_AES_128_CBC_SHA Not implemented.
TLS_DH_DSS_WITH_AES_256_CBC_SHA Not implemented.
TLS_DH_RSA_WITH_AES_128_CBC_SHA Not implemented.
TLS_DH_RSA_WITH_AES_256_CBC_SHA Not implemented.
    
TLS_DHE_DSS_WITH_AES_128_CBC_SHA DHE-DSS-AES128-SHA
TLS_DHE_DSS_WITH_AES_256_CBC_SHA DHE-DSS-AES256-SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA DHE-RSA-AES128-SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA DHE-RSA-AES256-SHA
    
TLS_DH_anon_WITH_AES_128_CBC_SHA ADH-AES128-SHA
TLS_DH_anon_WITH_AES_256_CBC_SHA ADH-AES256-SHA

Suites de chiffrement Camellia de la rfc4132, étendant TLS v1.0


TLS_RSA_WITH_CAMELLIA_128_CBC_SHA CAMELLIA128-SHA
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA CAMELLIA256-SHA
    
TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA Not implemented.
TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA Not implemented.
TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA Not implemented.
TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA Not implemented.
    
TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA DHE-DSS-CAMELLIA128-SHA
TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA DHE-DSS-CAMELLIA256-SHA
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA DHE-RSA-CAMELLIA128-SHA
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA DHE-RSA-CAMELLIA256-SHA
    
TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA ADH-CAMELLIA128-SHA
TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA ADH-CAMELLIA256-SHA

Suites de chiffrement SEED de la rfc4162, étendant TLS v1.0


TLS_RSA_WITH_SEED_CBC_SHA SEED-SHA
    
TLS_DH_DSS_WITH_SEED_CBC_SHA Not implemented.
TLS_DH_RSA_WITH_SEED_CBC_SHA Not implemented.
    
TLS_DHE_DSS_WITH_SEED_CBC_SHA DHE-DSS-SEED-SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA DHE-RSA-SEED-SHA
    
TLS_DH_anon_WITH_SEED_CBC_SHA ADH-SEED-SHA

Suites de chiffrement GOST du draft-chudov-cryptopro-cptls, étendant TLS v1.0

Note: Ces chiffrements nécessitent un moteur qui inclut les algorithmes cryptographique GOST tel que le moteur ccgost, inclus dans OpenSSL.
TLS_GOSTR341094_WITH_28147_CNT_IMIT GOST94-GOST89-GOST89
TLS_GOSTR341001_WITH_28147_CNT_IMIT GOST2001-GOST89-GOST89
TLS_GOSTR341094_WITH_NULL_GOSTR3411 GOST94-NULL-GOST94
TLS_GOSTR341001_WITH_NULL_GOSTR3411 GOST2001-NULL-GOST94

Exports additionnels 1024 et autres suites de chiffrement

Note: Ces chiffrements peuvent aussi être utilisé dans SSL v3
TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA EXP1024-DES-CBC-SHA
TLS_RSA_EXPORT1024_WITH_RC4_56_SHA EXP1024-RC4-SHA
TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA EXP1024-DHE-DSS-DES-CBC-SHA
TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA EXP1024-DHE-DSS-RC4-SHA
TLS_DHE_DSS_WITH_RC4_128_SHA DHE-DSS-RC4-SHA

Suites de chiffrement SSL v2.0


SSL_CK_RC4_128_WITH_MD5 RC4-MD5
SSL_CK_RC4_128_EXPORT40_WITH_MD5 EXP-RC4-MD5
SSL_CK_RC2_128_CBC_WITH_MD5 RC2-MD5
SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5 EXP-RC2-MD5
SSL_CK_IDEA_128_CBC_WITH_MD5 IDEA-CBC-MD5
SSL_CK_DES_64_CBC_WITH_MD5 DES-CBC-MD5
SSL_CK_DES_192_EDE3_CBC_WITH_MD5 DES-CBC3-MD5

Exemples

Lister tous les chiffrements OpenSSL incluant les chiffrements NULL:
openssl ciphers -v ’ALL:eNULL’
Inclure tous les chiffrements excepté NULL et DH anonyme, et trier par force:
openssl ciphers -v ’ALL : !ADH :@STRENGTH’
Inclure seulement les chiffrements 3DES puis placer RSA en dernier:
openssl ciphers -v ’3DES :+RSA’
Inclure tous les chiffrements RC4 mais laisser ceux sans authentification:
openssl ciphers -v ’RC4 : !COMPLEMENTOFDEFAULT’
Inclure tous les chiffrements avec authentification RSA mais laisser les chiffrements sans cryptage:
openssl ciphers -v ’RSA : !COMPLEMENTOFALL’
^
28 février 2012

htmlpdflatexmanmd




OpenSSL - cms

OpenSSL - cms

Utilitaire CMS (Cryptographic Message Syntax)

OPTIONS

-encrypt Chiffre un mail avec le certificat donné. Le fichier d’entrée est le message à chiffrer. Le fichier de sortie est le mail chiffré au format MIME. Le type de CMS actuel est EnvelopedData.
-decrypt Déchiffre un mail en utilisant le certificat et la clé privée spécifiée. Le fichier d’entrée est un mail au format MIME. le fichier de sortie est le mail déchiffré.
-sign Signe un mail en utilisant le certificat et la clé privée spécifiée. Le fichier d’entrée est le message à signer, le fichier de sortie est le message signé au format MIME.
-verify Vérifie le mail signé. L’entrée est le mail signé, le fichier de sortie et la sortie est la donnée signée.
-cmsout Prend un message en entrée et écrit une structure CMS encodée PEM
-resign Re-signe un message: prend un message existant et un ou plusieurs nouveaux signataires.
-data_create Créé un type CMS Data
-data_out Type une donnée et sort le contenu
-digest_create Crée un type CMS DigestedData
-digestVerify Vérifie un CMS DigestedData et sort le contenu
-compress Créé un CMS CompressedData. OpenSSL doit être compilé avec zlib pour que cette option fonctionne.
-uncompress Décompresse un CMS CompressedData.
-EncryptedData_encrypt Chiffre le contenu en utilisant une clé symétrique et un algorithme CMS EncryptedData et sort le contenu.
-sign_receipt Génère et sort un reçu signé pour le message spécifié. Le message d’entrée doit contenir une requête de reçu signée.
-verify_receipt receipt Vérifie un reçu signé dans le fichier spécifié. Le message d’entrée doit contenir une requête de reçu.
-in filename Fichier d’entrée
-inform SMIME|PEM|DER Format du fichier d’entrée, à utiliser avec -receipt_verify
-out filename Fichier de sortie
-outform SMIME|PEM|DER Spécifie le format du fichier de sortie (défaut SMIME)
-stream -indef -stream et indef sont équivalent et permettent le streaming I/O pour les opérations d’encodage. Cela permet un traitement en une passe de donnée sans nécessiter de maintenir tout le contenu en mémoire.
-noindef Désactive le streaming I/O.
-content filename spécifie un fichier contenant le contenu détaché. Seulement utile avec -verify et si la structure CMS utilise une signature détachée du contenu.
-text Ajoute des en-têtes text/plain au message fournis.
-noout Ne sort par la structure CMS parsée. Utile avec -print
-print pour -cmsout, affiche tous les champs de la structure CMS.
-CAfile file Un fichier contenant les certificats trustés. Utile avec -verify
-CApath dir Un répertoire contenant les certificats CA. Utile avec -verify
-md digest Algorithme digest à utiliser pour signer ou re-signer.
-[ciphers] L’algorithme de chiffrement à utiliser. Voir enc pour la liste des chiffrements supportés. (Défaut : 3DES)
-nointern En vérifiant un message, les certificats inclus dans le message sont utilisé pour vérifier la signature. Avec cette option, seul les certificats spécifiés avec -certfile sont utilisés.
-no_signer_cert_verify Ne vérifie pas le certificat du message signé.
-nocerts En signant un message, le certificat du signataire est inclus. Cette option l’empêche.
-noattr Normalement quand un message est signé, des attributs sont inclus dont la date de signature et les algorithmes symétriques supportés. Cette option ne les inclus pas.
-nosmimecap Exclus la liste des algorithmes supportés pour les attributs signés. D’autres options telles que la date de signature et le type de contenu sont inclus.
-binary Normalement, le message d’entrée est convertit au format canonique qui utilise CR et LF comme fin de ligne comme requis par la spécification S/MIME. Avec cette option, aucune conversion n’est faite.
-nodetach En signant un message en utilisant une signature opaque la forme est plus résistante aux translations par les relais, mais ne peut pas être lus par les agents qui ne supportent pas S/MIME. Sans cette option, la signature en texte clair est utilisée.
-certfile file Permet de spécifier des certificats additionnels, qui seront inclus dans le message. Ces certificats devraient être au format PEM.
-certsout file Tout certificat contenus dans le message sont écris dans le fichier spécifié
-signer file Un certificat de signature. Peut-être spécifiée plusieurs fois.
-recip file Le certificat pour le déchiffrement d’un message. Ce certificat doit matcher un des destinataires du message.
-keyid Utilise le subject key identifier pour identifier les certificats au lieu du nom et du numéro de série. Le certificat doit inclure une extension subject key identifier.
-receipt_request_all -receipt_request_first Pour que l’option -sign inclue une requête de reçu. Indique que les requêtes devraient être fournies par tous les destinataires ou le premier tiers des destinataires.
-receipt_request_to_emailaddress Ajoute une adresse mail où les reçus signés devraient être envoyés. Doit être fournis si un reçu signé est demandé.
-receipt_request_print Pour -verify, affiche le contenu des demandes de reçus signés.
-secretkey key Spécifie la clé symétrique à utiliser. La clé doit être fournie en hexa.
-secretkeyid id L’identifiant de clé pour la clé symétrique fournies pour le type KEKRecipentInfo.
-econtent_type type Définis le type de contenu encapsulé. Peut-être un OID soit en texte soit sous forme numérique.
-inkey file La clé privée à utiliser pour signer ou déchiffrer.
-passin arg Le mot de passe pour la clé privée.
-rand file(s) Un ou plusieurs fichiers contenant des données aléatoires utilisée pour le générateur de nombre aléatoires, ou un socket EGD.
cert.pem... Un ou plusieurs certificats de destinataire de message à utiliser pour chiffrer un message
-to, -from -subject Les en-têtes du mail.
-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig Diverse options de validation de la chaîne de certificat. Voir verify.

Codes de sortie

0 succès de l’opération
1 Erreur en parsant les options
2 Un des fichiers d’entrée ne peut pas être lu
3 Une erreur s’est produite en créant le fichier CMS ou en lisnt le message MIME
4 Erreur durant la vérification ou le déchiffrement du message
5 Le message a été vérifié correctement mais une erreur s’est produite en écrivant les certificats des signeurs.

Compatibilité avec le format PKCS #7

   l’utilitaire smime peut seulement traiter l’ancien format pkcs #7. L’utilitaire cms supporte le format CMS.

        L’utilisation de -keyid avec -sign ou -encrypt
        L’option -outform PEM
        L’option -compress
        L’option -secretkey avec -encrypt
        -EncryptedData_create et -data_create ne peuvent être traitée par les commandes smime.

Exemples

Créer un message signé en texte clair:
openssl cms -sign -in message.txt -text -out mail.msg -signer mycert.pem
Créer un message signé opaque:
openssl cms -sign -in message.txt -text -out mail.msg -nodetach -signer mycert.pem
Créer un message signé, incluant des certificats additionnels et lire la clé privée depuis un autre fichier:
openssl cms -sign -in in.txt -text -out mail.msg -signer mycert.pem -inkey mykey.pem -certfile mycerts.pem
Créer un message signé avec 2 signataires, utiliser un identifier de clé:
openssl cms -sign -in message.txt -text -out mail.msg -signer mycert.pem -signer othercert.pem -keyid
Envoyer un message signé sous Unix directement à sendmail, incluant les en-têtes:
openssl cms -sign -in in.txt -text -signer mycert.pem -from steve@openssl.org -to someone@somewhere -subject "Signed message" | sendmail someone@somewhere
Vérifier un message et extraire le certificat du signataire en cas de réussite:
openssl cms -verify -in mail.msg -signer user.pem -out signedtext.txt
Envoyer un mail chiffré avec 3DES:
openssl cms -encrypt -in in.txt -from steve@openssl.org -to someone@somewhere -subject "Encrypted message" -des3 user.pem -out mail.msg
Signer et chiffrer un mail:
openssl cms -sign -in ml.txt -signer my.pem -text | openssl cms -encrypt -out mail.msg -from steve@openssl.org -to someone@somewhere -subject "Signed and Encrypted message" -des3 user.pem
Déchiffrer un mail:
openssl cms -decrypt -in mail.msg -recip mycert.pem -inkey key.pem
La sortie de la Netscape est une structure PKCS #7 avec le format de signature détachée. Pour vérifier la signature, mettre la structure codé en base 64 entre:
-----BEGIN PKCS7-----
-----END PKCS7-----
Et utiliser la commande:
openssl cms -verify -inform PEM -in signature.pem -content content.txt
Alternativement vous pouvez décoder la signature et utiliser:
openssl cms -verify -inform DER -in signature.der -content content.txt
Créer et chiffrer un message en utilisant Camellia 128 bits:
openssl cms -encrypt -in plain.txt -camellia128 -out mail.msg cert.pem
Ajouter un signataire à un message existant:
openssl cms -resign -in mail.msg -signer newsign.pem -out mail2.msg
^
28 février 2012

htmlpdflatexmanmd




OpenSSL - crl

OpenSSL - crl

Utilitaire de traitement des fichiers CRL

OPTIONS

-infor DER|PEM Format du fichier d’entrée.
-outform DER|PEM Spécifie le format de la sortie
-in filename Spécifier le fichier d’entrée
-out filename Spécifier le fichier de sortie
-text Affiche la CRL au format texte
-noout Ne sort pas la version encodée de la CRL
-hash Sort un hash de nom de l’émetteur. Peut être utilisé pour rechercher les CRL dans un répertoire par émetteur
-issuer Affiche le nom de l’émetteur
-lastupdate affiche le champ lastUpdate
-nextupdate Affiche le champ nextUpdate
-CAfile file Vérifie l signature d’un CRL avec le certificat spécifié
-CApath dir Vérifie la signature d’une CRL en recherchant le certificat dabs DIR. Ce répertoire doit être un répertoire de certificat standard: un hash du nom du sujet est lié à chaque certificat (x509 -hash)

Notes

Le format PEM utilise les en-tête et pieds de page suivante:
-----BEGIN X509 CRL-----
-----END X509 CRL-----

Exemples

Convertir une CRL PEM en DER
openssl crl -in crl.pem -outform DER -out crl.der
Afficher un certificat DER en texte clair
openssl crl -in crl.der -text noout
^
28 février 2012

htmlpdflatexmanmd




OpenSSL - crl2pkcs7

OpenSSL - crl2pkcs7

Utilitaire pour créer une structure PKCS #7 depuis une CRL et des certificats

OPTIONS

-infor DER|PEM Format de la CRL d’entrée.
-outform DER|PEM Spécifie le format de la structure PKCS #7 en sortie
-in filename Spécifier la CRL d’entrée
-out filename Spécifier le fichier de sortie
-certfile filename Spécifie un fichier contenant un ou plusieurs certificats au format PEM. Tous ces certificats seront ajoutés à la structure PKCS #7. Peut-être spécifié plusieurs fois.
-nocrl N’inclue pas de CRL dans le fichier de sortie.

Exemples

Créer une structure PKCS #7 depuis un certificat et une CRL
openssl crl2pkcs7 -in crl.pem -certfile cert.pem -out p7.pem
Créer une structure PKCS #7 au format DES sans CRL et depuis différent certificats
openssl crl2pkcs7 -nocrl -certfile newcert.pem -certfile demoCA/cacert.pem -outform DER -out p7.der
^
29 février 2012

htmlpdflatexmanmd




OpenSSL - dgst

OpenSSL - dgst

Afficher le message digest en hexa d’un ou plusieurs fichiers. Peut également être utilisé pour les signatures numérique et la vérification.

OPTIONS

-c Affiche le digest en 2 groupes de chiffre séparés par un ’:’
-d Affiche des informations de debuggage BIO
-hex Affiche le digests en tant que dump hexa. Défaut pour les digest normaux en opposé aux signatures numériques.
-binary Affiche le digest au format binaire
-out filename Nom du fichier de sortie
-sign filename Signe numérique le digest en utilisant la clé privée dans le fichier spécifié.
-keyform PEM|ENGINE Spécifie le format de la clé pour signer le digest.
-engine id Utilise l’id pour les opérations (incluant le stockage de la clé privée). Ce moteur n’est pas utilisé comme source pour les algorithmes digest, à moins qu’il soit également spécifié dans le fichier de configuration
-sigopt nm:v Passer des options à l’algorithme de signature durant les opérations de signature et de vérification.
-passing arg Mot de passe de la source du mot de passe.
-verify filename Vérifie la signature en utilisant la clé publique dans le fichier spécifié.
-prverify filename Vérifie la signature en utilisant la clé privée dans le fichier spécifié.
-signature filename La signature à vérifier
-hmac key Créé un MAC hashé en utilisant la clé spécifiée.
-mac alg Créer un MAC en utilisant l’algorithme spécifié.
-macopt nm:v Passer des options à l’algorithme MAC
-rand file(s) Spécifier le(s) fichier(s) à utiliser pour le générateur de nombre aléatoire, ou un socket EGD.
file... Fichier en entrée pour les opération de digest.
^
08 mai 2016

htmlpdflatexmanmd




OpenSSL - dhparam

OpenSSL - dhparam

Génération et manipulation de paramètre DH

OPTIONS

-inform DER|PEM Format du fichier d'entrée
-outform DER|PEM Format du fichier de sortie
-in filename Fichier d'entrée
-out filename Fichier de sortie
-dsaparam Si spécifié, les paramètres DSA sont lus ou créé au lieu de paramètres DH; ils sont convertis au format DH. Sinon, les premiers 'fort' seront utilisé pour la génération de paramètres DH.
-check Vérifie si les paramètres sont valides
-2, -5 Générateur à utiliser. Si présent, le fichier d'entrée est ignoré et les paramètres sont générés. Défaut: 2
-rand file(s) Fichiers contenant des données aléatoires utilisée pour le générateur de nombre aléatoire, ou un socket EGD.
numbits Spécifie le nombre de bit à utiliser. Doit être la dernière option. Défaut: 2048
-noout Inhibe la sortie de la version encodée des paramètres
-text Affiche les paramètres DH au format lisible
-C Convertis les paramètres en code C. Les paramètres peuvent ainsi être chargés en appelant get_dhNNNN()
-engine id dhparam va tenter d'obtenir une référence fonctionnelle du moteur spécifié.

Notes

   Le programme dhparam combine les fonctionnalités des programmes dh et gendh dans les versions précédentes de OpenSSL. Les programmes dh et gendh sont retenus pour d'autres utilisations dans le future.

Les paramètres DH au format PEM utilisent les en-tête et pied de page suivant:
-----BEGIN DH PARAMETERS-----
-----END DH PARAMETERS-----

   Openssl supporte actuellement l'ancien PKCS#3 DH, pas le nouveau X9.42 DH.
^
01 mars 2012

htmlpdflatexmanmd




OpenSSL - dsa

OpenSSL - dsa

Traitement des clés dsa. Utilise le format compatible SSLeay pour le chiffrement des clés privées, les applications devraient utiliser pkcs8, plus sécure.

OPTIONS

-inform DER|PEM Format du fichier d’entrée. DER avec une clé privée utilise une forme encodée ASN1 DER d’une séquence ASN.1 consistant de valeurs de version (0 actuellement), p, q, g, les clés publique et privée en tant qu’entier ASN.1.
-outform DER|PEM Format de la sortie.
-in filename Fichier contenant la clé à lire
-passing arg Source du mot de passe du fichier d’entrée.
-out filename fichier de sortie où écrire une clé.
-passout arg source du mot de passe du fichier de sortie
-des|des3|-idea Algorithme utilisé pour chiffrer la clé privée.
-text Affiche la clé privée, publique et les paramètres
-noout n’affiche pas la sortie encodée de la clé
-modulus Affiche la valeur de la composante clé publique de la clé
-pubin Par défaut, la clé privée est lue depuis le fichier d’entrée. Cette option lit une clé publique à la place.
-pubout Par défaut, une clé privée est sortie. Avec cette option, une clé publique est sortie.
-engine id dsa va tenter d’obtenir une référence fonctionnelle au moteur spécifié.

Notes

Le format de clé privée PEM utilise:
-----BEGIN DSA PRIVATE KEY-----
-----END DSA PRIVATE KEY-----
Le format de clé publique PEM utilise:
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----

Exemples

Supprimer une passphrase d’une clé privée DSA:
openssl dsa -in key.pem -out keyout.pem
Chiffrer une clé privée en utilisant 3DES:
openssl dsa -in key.pem -des3 -out keyout.pem
Convertir une clé privée PEM en DER:
openssl dsa -in key.pem -outform DER -out keyout.der
Afficher les composants d’une clé privée sur stdout:
openssl dsa -in key.pem -text -noout
Affiche la partie publique d’une clé privée:
openssl dsa -in key.pem -pubout -out pubkey.pem
^
01 mars 2012

htmlpdflatexmanmd




OpenSSL - dsaparam

OpenSSL - dsaparam

Manipulation et génération de paramètres DSA

OPTIONS

-inform DER|PEM Format du fichier d’entrée. DER avec une clé privée utilise une forme encodée ASN1 DER d’une séquence ASN.1 consistant de valeurs de version (0 actuellement), p, q, g, les clés publique et privée en tant qu’entier ASN.1.
-outform DER|PEM Format de la sortie.
-in filename Fichier contenant les paramètres à lire
-out filename fichier de sortie où écrire les paramètres
-text Affiche les paramètres DSA de manière compréhensible
-noout n’affiche pas la version encodée des paramètres
-C Convertir les paramètres en code C.
-genkey Génère un DSA en utilisant soit les paramètres spécifiés, soit les paramètres générés.
-rand file(s) Le(s) fichier(s) utilisé par le générateur de nombre aléatoire.
numbits Taille en bits des paramètres générés.
-engine id dsaparam va tenter d’obtenir une référence fonctionnelle au moteur spécifié.

Notes

Les paramètres DSA PEM utilisent:
-----BEGIN DSA PARAMETERS-----
-----END DSA PARAMETERS-----

^
12 mai 2015

htmlpdflatexmanmd




OpenSSL - ec

OpenSSL - ec

Outil de traitement de clé EC

OPTIONS

-inform DER|NET|PEM Format du fichier d’entrée.
-outform DER|NET|PEM Format du fichier de sortie
-in filename Fichier d’entrée
-passin arg source du mot de passe du fichier d’entrée
-out filename Fichier de sortie où écrire la clé
-passout password source du mot de passe du fichier de sortie
-des|-des3|-idea Chiffre la clé privée avec DES, triple DES ou IDEA, ou un autre chiffrement supporté
-text Affiche des infos sur les clés privée et publique
-noout N’affiche pas la version encodée de la clé
-modulus Affiche la valeur du modulo de la clé
-pubin Lit une clé publique en entrée plutôt qu’une clé privée
-pubout Sort une clé publique plutôt qu’une clé privée
-engine id ec va tenter d’obtenir une référence fonctionnelle de ce moteur.
-conv_form Spécifie comment les points sur la courbe elliptique sont convertis en chaîne d'octets ( compressed, uncompressed ou hybrid ).
-param_enc arg Spécifie comment les paramètres de courbe elliptique sont encodés. named_curve ou explicit

Notes

la forme PEM de la clé privée contient:
-----BEGIN EC PRIVATE KEY-----
-----END EC PRIVATE KEY-----

Exemples

Chiffrer une clé privée avec 3DES:
openssl ec -in key.pem -des3 -out keyout.pem
Convertir une clé privée PEM en DER:
openssl ec -in key.pem -outform DER -out keyout.der
Afficher les composants d'une clé privée sur stdout:
openssl ec -in key.pem -text -noout
Afficher la partie publique d'une clé privée:
openssl ec -in key.pem -pubout -out pubkey.pem
Changer les paramètres d'encodage à explicit:
openssl ec -in key.pem -param_enc explicit -out keyout.pem
Changer la conversion de point à compressed:
openssl ec -in key.pem -conv_form compressed -out keyout.pem
^
12 mai 2015

htmlpdflatexmanmd




OpenSSL - ecparam

OpenSSL - ecparam

Manipulation et génération de paramètre EC

OPTIONS

-inform DER|NET|PEM Format du fichier d’entrée.
-outform DER|NET|PEM Format du fichier de sortie
-in filename Fichier d’entrée
-out filename fichier de sortie où écrire les paramètres
-text Affiche des infos sur les clés privée et publique
-noout n’affiche pas la version encodée des paramètres
-C Convertis les paramètres EC en code C.
-check Valide les paramètres de courbe elliptique
-name arg Utilise les paramètres EC avec le nom court spécifié.
-list_curves Affiche la liste de tous les paramètres EC implémentés.
-conv_form Spécifie comment les points sur la courbe elliptique sont convertis en chaîne d'octets ( compressed, uncompressed ou hybrid ).
-param_enc arg Spécifie comment les paramètres de courbe elliptique sont encodés. named_curve ou explicit
-no_seed Inhibe que le 'seed' pour la génération de paramètre soit inclus dans la structure ECParameters
-genkey Génère une clé privée EC en utilisant les paramètres spécifiés
-rand file Un ou plusieurs fichiers contenant des données aléatoires.
-engine id ecparam va tenter d’obtenir une référence fonctionnelle de ce moteur.

Notes

la forme PEM des paramètres EC utilisent la forme:
-----BEGIN EC PARAMETERS-----
-----END EC PARAMETERS-----

Exemples

Créer des paramètres EC avec le groupe 'prime192v1':
openssl ecparam -out ec_param.pem -name prime192v1
Créer des paramètres EC avec les paramètres explicites:
openssl ecparam -out ec_param.pem -name prime192v1 -param_enc explicit
Valider les paramètres EC donnés:
openssl ecparam -in ec_param.pem -check
Créer des paramètres EC et une clé privée:
openssl ecparam -out ec_key.pem -name prime192v1 -genkey
Changer l'encodage des points à compressed:
openssl ecparam -in ec_in.pem -out ec_out.pem -conv_form compressed
Afficher les paramètres EC:
openssl ecparam -in ec_param.pem -noout -text
^
06 mars 2012

htmlpdflatexmanmd




OpenSSL - enc

OpenSSL - enc

Routines de chiffrements symétriques

   Permet de chiffrer ou déchiffrer des données en utilisant divers block ou flux de chiffrement en utilisant des clés basé sur mot de passe ou fournis explicitement. L’encodage/décodage en base 64 peut également être effectué en plus du chiffrement/déchiffrement.

OPTIONS

-in filename Fichier d’entrée
-out filename Fichier de sortie
-pass arg Source du mot de passe
-salt Utilise un Salt dans les routines de dérivation de clé pendant le chiffrement (défaut). Généré aléatoirement avec l’option -S
-nosalt N’utilise pas de Salt. Ne doit être utilisé que pour des tests un pour compatibilité avec des anciennes versions d’OpenSSL.
-S salt Le Salt à utiliser au format hexa
-e  Chiffre la donnée en entrée (défaut)
-d Déchiffre la donnée en entrée
-a Traite les données en base 64.
-base64 Idem à -a
-A si -a, le traitement base64 se fait sur une ligne
-k password Le mot de passe à dériver de la clé. Pour la compatibilité avec d’anciennes versions d’OpenSSL. Remplacé par -pass
-kfile filename Le mot de passe à dériver de la clé depuis ce fichier. Pour la compatibilité avec d’anciennes versions d’OpenSSL. Remplacé par -pass
-K key La clé à utiliser en hexa. IV doit être spécifié avec -iv. Si la clé et le mot de passe sont spécifiés, IV est généré depuis le mot de passe.
-iv IV L’IV à utiliser en hexa
-p Afficher la clé et l’IV utilisé
-P Idem à -p mais quitte immédiatement
-bufsize number Définis la taille du tampon pour les E/S
-nopad Désactive le padding de block standard
-debug Débug les BIO utilisé pour les E/S
-z Compresse ou décompresse en texte clair en utilisant zlib avant le chiffrement ou après le déchiffrement.
-none Utilise le chiffrement NULL

Notes

   Les moteurs qui fournissent de nouveaux algorithmes de chiffrement (tel que ccgost qui fournis l’algorithme gost89) devraient être configurés dans le fichier de configuration. Les moteurs spécifiés sur la ligne de commande peuvent seulement être utilisé avec des implémentations de chiffrement assisté par hardware supportés par OpenSSL core.

Chiffrements supportés

Noter que certains chiffrements peuvent être désactivés à la compilation.
base64 Base 64
    
bf-cbc Blowfish in CBC mode
bf Alias for bf-cbc
bf-cfb Blowfish in CFB mode
bf-ecb Blowfish in ECB mode
bf-ofb Blowfish in OFB mode
    
cast-cbc CAST in CBC mode
cast Alias for cast-cbc
cast5-cbc CAST5 in CBC mode
cast5-cfb CAST5 in CFB mode
cast5-ecb CAST5 in ECB mode
cast5-ofb CAST5 in OFB mode
    
des-cbc DES in CBC mode
des Alias for des-cbc
des-cfb DES in CBC mode
des-ofb DES in OFB mode
des-ecb DES in ECB mode
    
des-ede-cbc Two key triple DES EDE in CBC mode
des-ede Two key triple DES EDE in ECB mode
des-ede-cfb Two key triple DES EDE in CFB mode
des-ede-ofb Two key triple DES EDE in OFB mode
    
des-ede3-cbc Three key triple DES EDE in CBC mode
des-ede3 Three key triple DES EDE in ECB mode
des3 Alias for des-ede3-cbc
des-ede3-cfb Three key triple DES EDE CFB mode
des-ede3-ofb Three key triple DES EDE in OFB mode
    
desx DESX algorithm.
    
gost89 GOST 28147-89 in CFB mode (provided by ccgost engine)
gost89-cnt `GOST 28147-89 in CNT mode (provided by ccgost engine)
    
idea-cbc IDEA algorithm in CBC mode
idea same as idea-cbc
idea-cfb IDEA in CFB mode
idea-ecb IDEA in ECB mode
idea-ofb IDEA in OFB mode
    
rc2-cbc 128 bit RC2 in CBC mode
rc2 Alias for rc2-cbc
rc2-cfb 128 bit RC2 in CFB mode
rc2-ecb 128 bit RC2 in ECB mode
rc2-ofb 128 bit RC2 in OFB mode
rc2-64-cbc 64 bit RC2 in CBC mode
rc2-40-cbc 40 bit RC2 in CBC mode
    
rc4 128 bit RC4
rc4-64 64 bit RC4
rc4-40 40 bit RC4
    
rc5-cbc RC5 cipher in CBC mode
rc5 Alias for rc5-cbc
rc5-cfb RC5 cipher in CFB mode
rc5-ecb RC5 cipher in ECB mode
rc5-ofb RC5 cipher in OFB mode
    
aes-[128|192|256]-cbc 128/192/256 bit AES in CBC mode
aes-[128|192|256] Alias for aes-[128|192|256]-cbc
aes-[128|192|256]-cfb 128/192/256 bit AES in 128 bit CFB mode
aes-[128|192|256]-cfb1 128/192/256 bit AES in 1 bit CFB mode
aes-[128|192|256]-cfb8 128/192/256 bit AES in 8 bit CFB mode
aes-[128|192|256]-ecb 128/192/256 bit AES in ECB mode
aes-[128|192|256]-ofb 128/192/256 bit AES in OFB mode

Exemples

Encoder un fichier binaire en base 64
openssl base64 -in file.bin -out file.b64
Décoder le même fichier
openssl base64 -f -in file.b64 -out file.bin
Chiffrer un fichier avec 3DES en mode CBC
openssl des3 -salt -in file.txt -out file.des3
Déchiffrer un fichier en fournissant le mot de passe
openssl des3 -d -salt -in file.des3 -out file.txt -k mypassword
Chiffrer un fichier puis l’encoder en base 64 avec blowfish en mode CBC
openssl bf -a -salt -in file.txt -out file.bf
Décode un fichier base 64 et le déchiffrer
openssl bf -d -salt -a -in file.bf -out file.txt
Déchiffre des données en utilisant une clé RC4 40 Bits
openssl rc4-40 -in file.rc4 -out file.txt -K 0102030405
^
06 mars 2012

htmlpdflatexmanmd




OpenSSL - ErrStr

OpenSSL - ErrStr

Utilitaire pour afficher la description d'un code d'erreur

Exemple

le code d’erreur suivant:
27594:error:2006D080:lib(32):func(109):reason(128):bss_file.c:107:
avec openssl errstr 2006D080 produit:
error:2006D080:BIO routines:BIO_new_file:no such file
^
07 mars 2012

htmlpdflatexmanmd




OpenSSL - gendsa

OpenSSL - gendsa

Génère des clés privées DSA à partir de fichiers de paramètres DSA

OPTIONS

-des|-des3|-idea Algorithme à utiliser pour chiffrer la clé privée.
-rand file(s) Fichiers utilisés pour le génération de nombre aléatoire
-engine id gendsa va tenter d’obtenir un référence fonctionnelle pour le moteur spécifié.
^
09 mars 2012

htmlpdflatexmanmd




OpenSSL - genpkey

OpenSSL - genpkey

Génération de clé privée

OPTIONS

-out filename Nom du fichier de sortie
-outform PEM|DER Format du fichier de sortie
-pass arg Source du mot de passe du fichier de sortie
-cipher Algorithme à utiliser pour chiffrer la clé privée.
-engine id genpkey va tenter d’obtenir une référence fonctionnelle pour le moteur spécifié.
-algorithm alg Algorithme de clé publique à utiliser tel que RSA, DSA ou DH. Doit précéder -pkeyopt
-pkeyopt opt:value Définis une option pour l’algorithme de clé publique.
-genparam Génère un jeu de paramètres au lieu d’une clé privée. Doit précéder -algorithm, -paramfile ou -pkeyopt
-paramfile filename Fichier contenant les paramètres à utiliser pour générer la clé privée. Doit précéder -pkeyopt.
-text Affiche une représentation texte des clés publique et privée et des paramètres.

Options de génération de clé

   Les options prises en charge par chaque algorithme et même chaque mise en œuvre d’un algorithme peut varier.

Options de génération de clé RSA

rsa_keygen_bits:numbits Nombre de bits dans la clé générée. (défaut : 1024)
rsa_keygen_pubexp:value Valeur d’exposant publique RSA, en décimal ou hexa (défaut : 65537)

Options de génération de clé DSA

dsa_paramgen_bits:numbits Nombre de bits dans les paramètres générés (défaut 1024)

Options de génération de paramètres DH

dh_paramgen_prime_len:numbits Nombre de bits dans le paramètre p
dh_paramgen_generator:value valeur à utiliser pour le générateur g
dh_rfc5114:num Applique les paramètres RFC5114. num peut être (1 : groupe de 1024 avec sous-groupe 160bits, 2 : groupe de 2048 avec sous-groupe 224bits ,3 : groupe de 2048 avec sous-groupe 256bits).

Options de génération de paramètres EC

ec_paramgen_curve:curve La courbe EC à utiliser

Options de paramètres et de génération de clé GOST2001

paramset:name Spécifie le paramètre GOST R 34.10-2001 en accord avec la RFC 4357. Les paramètres suivants sont supportés

paramset   OID               Usage
A 1.2.643.2.2.35.1 Signature
B 1.2.643.2.2.35.2 Signature
C 1.2.643.2.2.35.3 Signature
XA 1.2.643.2.2.36.0 Key exchange
XB 1.2.643.2.2.36.1 Key exchange
test 1.2.643.2.2.35.0 Test purposes

Exemples

Générer une clé privée RSA en utilisant les paramètres par défaut:
openssl genpkey -algorithm RSA -out key.pem
Chiffrer une clé privée en utilisant AES128 et la passphrase 'hello':
openssl genpkey -algorithm RSA -out key.pem -aes-128-cbc -pass pass:hello
Générer une clé RSA 2048bits et un exposant publique 3:
openssl genpkey -algorithm RSA -out key.pem -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:3
Générer des paramètres DSA 1024bits:
openssl genpkey -genparam -algorithm DSA -out dsap.pem -pkeyopt dsa_paramgen_bits:1024
Générer une clé DSA depuis des paramètres:
openssl genpkey -paramfile dsap.pem -out dsakey.pem
Générer des paramètres DH 1024bits:
openssl genpkey -genparam -algorithm DH -out dhp.pem -pkeyopt dh_paramgen_prime_len:1024
sortir des paramètres DH RFC5114 type 2:
openssl genpkey -genparam -algorithm DH -out dhp.pem -pkeyopt dh_rfc5114:2
Générer une clé DH depuis des paramètres:
openssl genpkey -paramfile dhp.pem -out dhkey.pem
^
09 mars 2012

htmlpdflatexmanmd




OpenSSL - genrsa

OpenSSL - genrsa

Outil de génération de clé RSA, remplacé par genpkey

OPTIONS

-out filename Nom du fichier de sortie
-passout arg Source du mot de passe pour le fichier de sortie
-des|-des3|-idea Algorithme à utiliser pour chiffrer la clé privée
-F4|-3 L’exposant publique à utiliser, soit 65537 ou 3. (défaut 65537)
-rand file(s) fichier(s) contenant les données aléatoires utilisée par le générateur de nombre aléatoire.
-engine id genrsa va tenter d’obtenir une référence fonctionnelle pour le moteur spécifié.
numbits Taille de la clé privée, doit être le dernier argument (défaut 512)
^
09 mars 2012

htmlpdflatexmanmd




OpenSSL - nseq

OpenSSL - nseq

Créer ou examiner une séquence de certificat Netscape

OPTIONS

-in filename Fichier à examiner
-out filename Fichier de sortie
-toseq Normalement, une séquence de certificat Netscape sera fournis et la sortie contient les certificats.et cette option, la situation et inversée.

Exemples

Sortir les certificats d’une séquence de certificat Netscape:
openssl nseq -in nseq.pem -out certs.pem
Créer une séquence de certificat Netscape:
openssl nseq -in certs.pem -toseq -out nseq.pem

Notes

La forme PEM utilise:
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

^
18 mars 2012

htmlpdflatexmanmd




OpenSSL - ocsp

OpenSSL - ocsp

Utilitaire OCSP

Options client

-out filename Fichier de sortie
-issuer filename Spécifie l’issuer du certificat courant. Peut-être spécifié plusieurs fois et doit être au format PEM. Doit être spécifié avant -cert
-cert filename Ajoute le certificat spécifié à la requête.
-serial num Idem à cert excepté que le certificat avec le numéro de série spécifié est ajouté à la requête, en entier décimal précédé par 0x. Des valeurs négatives sont acceptées.
-signer filename, -signkey filename Signe la requête OCSP en utilisant le certificat spécifié par signer et la clé privée spécifiée par signkey. Sans signkey, lit la clé privée depuis le certificat du signer. Sans ces 2 options, la requête n’est pas signée.
-sign_other filename Certificats additionnels à inclure dans la requête signée.
-nonce, -no-once Ajoute ou désactive une extension OCSP nonce d’une requête. Normalement si une requête OCSP est entrée en utilisant respin, nonce n’est pas ajouté. Si une requête OCSP est créée, un nonce est automatiquement ajouté.
-req_text, -resp_text, -text Affiche la forme texte d’une requête ou d’une réponse OCSP ou les 2 respectivement.
-reqout file, respout file Écrit la requête ou la réponse en DER
-reqin file, respin file Lit la requête ou la réponse depuis le fichier spécifié.
-url responder_url Spécifie l’url du répondeur.
-host hostname:port, path pathname La requête est envoyée à l’hôte spécifié, ou le chemin HTTP (défaut : /)
-CAfile file, -CApath pathname Fichier ou répertoire contenant les certificats CA. Utilisé pour vérifier la réponse OCSP.
-verify_other file Fichier contenant des certificats additionnels à rechercher lors de la tentative de localisation du certificat de signature de la réponse OCSP.
-trust_other Les certificats spécifié par -verify_other sont explicitement trustés sans vérification additionnelles. Utile pour une chaîne complète de certificat.
-VAfile file Fichier contenant les certificats du répondeur trustés explicitement. Equivalent à -verify_other et -trust_other.
-noverify Ne vérifie par la signature du répondeur OCSP ou les valeurs nonce.
-no_intern Ignore les certificats contenus dans la réponse OCSP lors de la recherche du certificat du signataire.
-no_signature_verify Ne vérifie pas la signature de la réponse OCSP.
-no_cert_verify Ne vérifie par les certifications des signataires de la réponse OCSP.
-no_chain N’utilise pas les certificats dans la réponse comme certificats CA additionnels non-trustés.
-no_cert_checks N’effectue aucune vérification supplémentaire sur les certificats des signataires de la réponse OCSP
-validity_period nsec, -status_age age Spécifie la plage de temps en secondes toléré dans une réponse OCSP. Chaque réponse de statut de certificat inclus notBefore et notAfter. Le temps courant devrait être entre ces 2 valeurs. Cette options permet de spécifier une autre plage de temps.
-md5|-sha1|-sha256|-ripemod160|... Définis l’algorithme digest à utiliser pour l’identification du certificat dans la requête OCSP. Défaut : SHA1.

Options serveur

-index indexfile Fichier d’index au format ca contenant les informations de révocation de certificat. Si cette option est spécifiée, ocsp est en mode répondeur, sinon il est en mode client.
-CA file Certificat CA correspondant aux informations de révocation dans indexfile.
-rsigner file Certificat pour signer les réponses
-rother file Certificats additionnels à inclure dans la réponse
-resp_no_certs N’inclus pas de certificat dans la réponse.
-resp_key_id Identifie le certificat signataire en utilisant l’ID de clé. Défaut : utilise le nom du sujet.
-rkey file La clé privée pour signer les réponses.
-port portnum Port d’écoute des requêtes OCSP. Doit être spécifié dans l’option url.
-nrequest number Le serveur va quitter après avoir reçu number requêtes, défaut : illimité.
-nmin minutes, -ndays days Nombre de minutes ou de jours où de nouvelles informations de révocation sont disponibles. Utilisé dans le champ nextUpdate. Sans cette option, ce champ est omis, les nouvelles informations sont immédiatement disponible.

Exemples

Créer une requête OCSP et l’écrire dans un fichier:
openssl ocsp -issuer issuer.pem -cert c1.pem -cert c2.pem -reqout req.der
Envoyer une requête à un répondeur OCSP:
openssl ocsp -issuer issuer.pem -cert c1.pem -cert c2.pem -url http://ocsp.myhost.com/ -resp_text -respout resp.der
Lire une réponse OCSP et l’afficher au format texte:
openssl ocsp -respin resp.der -text
Serveur OCSP sur le port 8888 en utilisant une configuration standard CA, et un certificat de répondeur séparé:
openssl ocsp -index demoCA/index.txt -port 8888 -rsigner rcert.pem -CA demoCA/cacert.pem -text -out log.txt
Idem, mais quitte après 1 requête:
openssl ocsp -index demoCA/index.txt -port 8888 -rsigner rcert.pem -CA demoCA/cacert.pem -nrequest 1
Demander des informations de statut en utilisant une requête générée en interne:
openssl ocsp -index demoCA/index.txt -rsigner rcert.pem -CA demoCA/cacert.pem -issuer demoCA/cacert.pem -serial 1
Demander des informations de statut en utilisant une requête lu depuis un fichier, sort la réponse dans un autre fichier:
openssl ocsp -index demoCA/index.txt -rsigner rcert.pem -CA demoCA/cacert.pem -reqin req.der -respout resp.der
^
18 mars 2012

htmlpdflatexmanmd




OpenSSL - passwd

OpenSSL - passwd

Calcul des hash de mot de passe

OPTIONS

-crypt Utilise l’algorithme crypt (défaut)
-1 Utilise l’algorithme MD5 type BSD 1
-apr1 utilise l’algorithme aprl (variante apache de l’algorithme BSD)
-salt string Spécifier le salt à utiliser. Implique -noverify
-in file Fichier contenant les mots de passes
-stdin Lit les mots de passe depuis stdin
-noverify n’effectue pas de vérification lors de la lecture d’un mot de passe depuis le terminal
-quiet n’affiche pas d’alertes quand les mots de passe donnés sur la ligne de commande sont tronqués.
-table Dans la liste de sortie, ajoute les mots de passe en texte clair, suivi d’un TAB et du hash.

Exemples

openssl passwd -crypt -salt xx password:
xxj31ZMTZzkVA
openssl passwd -1 -salt xxxxxxxx password:
$1$xxxxxxxx$UYCIxa628.9qXjpQCjM4a.
openssl passwd -apr1 -salt xxxxxxxx password:
$apr1$xxxxxxxx$dxHfLAsjHkDRmG83UXe8K0
^
18 mars 2012

htmlpdflatexmanmd




OpenSSL - pkcs12

OpenSSL - pkcs12

Utilitaire pkcs #12

Options de lecture

-in filename Fichier pkcs#12 à lire
-out filename Fichier où écrire les certificats et clé privée au format PEM.
-pass arg, -passin arg passphrase pour chiffrer les clés privées
-noout Ne sort pas les clé et certificats dans le fichier de sortie.
-clcerts sort uniquement les certificats clients (pas de certificat CA)
-cacerts sort uniquement les certificats CA
-nocerts Ne sort pas les certificats
-nokeys Ne sort pas les clés privées
-info Affiche des informations additionnelles sur la structure du fichier PKCS#12
-des|-des3|-idea|-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256 Algorithme à utiliser pour chiffrer la clé privée.(défaut : des3)
-nodes Ne chiffre pas les clés privées
-nomacver Ne tente pas de vérifier l’intégrité MAC avant de lire le fichier
-twopass Séparer l’intégrité et le chiffrement du mot de passe. Peut rendre le fichier illisible.

Options de création

-export Spécifie une création de fichier PKCS#12
-out filename Nom du fichier PKCS#12 à créer
-in filename Fichier à lire contenant les certificats et clé privées au format PEM
-inkey filename fichier contenant la clé privée à lire.
-name friendlyname ’friendly name’ pour le certificat et sa clé privée.
-certfile filename Fichier où lire les certificats additionnels
-caname friendlyname friendly name’ pour les autres certificats. Peut-être spécifié plusieurs fois
-pass arg, -passout arg source du mot de passe pour le fichier de sortie.
-passin password Source du mot de passe pour déchiffrer la clé privée.
-chain Tente d’inclure toute la chaîne de certificat
-descert Chiffre le certificat en utilisant 3des (défaut : des3 pour la clé privée et RC2-40bits pour le certificat)
-keypbe alg, -certpbe alg Algorithme utilisé pour chiffrer la clé et les certificats. peut-être un algorithme PKCS#15 ou PKCS#12 PBE.
-keyex|-keysig Spécifie que la clé privée doit être utilisé pour un échange de clé ou juste signer. Uniquement interprété par MSIE et logiciels MS.
-macalg digest Spécifie l’algorithme digest MAC (défaut : SHA1)
-nomaciter, -noiter Affecte le compteur d’itération dans les algorithmes de clé et MAC.(défaut : 2048)
-maciter Inclus pour compatibilité avec les versions précédentes.
-nomac Ne tente pas de fournir l’intégrité MAC.
-rand file(s) fichier(s) contenant les données aléatoire utilisé par le générateur de nombre aléatoire.
-CAfile file Fichier de la CA
-CAptah dir Répertoire contenant les certificats CA.
-CSP name Ecrit le nom sous la forme Microsoft CSP name.

Exemples

Lire un fichier PKCS #12 et le sortir dans un fichier:
openssl pkcs12 -in file.p12 -out file.pem
Sortie seulement les certificats clients dans un fichier:
openssl pkcs12 -in file.p12 -clcerts -out file.pem
Sortir uniquement la clé privée dans un fichier:
openssl pkcs12 -in file.p12 -nocerts -out file.pem
Ne pas chiffrer la clé privée:
openssl pkcs12 -in file.p12 -out file.pem -nodes
Afficher des informations sur le fichier PKCS #12:
openssl pkcs12 -in file.p12 -info -noout
Créer un fichier PKCS #12:
openssl pkcs12 -export -in file.pem -out file.p12 -name "My Certificate"
Inclure des certificats supplémentaires:
openssl pkcs12 -export -in file.pem -out file.p12 -name "My Certificate" -certfile othercerts.pem
^
18 mars 2012

htmlpdflatexmanmd




OpenSSL - pkcs7

OpenSSL - pkcs7

Utilitaire pkcs #7

OPTIONS

-inform DER|PEM Spécifie le format d’entrée
-outform DER|PEM Spécifie le format de sortie
-in filename Fichier à lire
-out filename Fichier à écrire
-print-certs Affiche les certificats et CRL contenus dans le fichier.
-text Affiche les détails des certificats
-noout Ne sort pas la version encodée de la structure PKCS #7
-engine id pkcs7 va tenter d’obtenir une référence fonctionnelle de ce moteur.

Exemples

Convertir un fichier PKCS #7 PEM en DER:
openssl pkcs7 -in file.pem -outform DER -out file.der
Afficher tous les certificats dans un fichier:
openssl pkcs7 -in file.pem -print_certs -out certs.pem

Notes

Le format PKCS #7 PEM utilise:
-----BEGIN PKCS7-----
-----END PKCS7-----

Pour assurer la compatibilité avec certaines CA, il accepte également:
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

^
08 mai 2016

htmlpdflatexmanmd




OpenSSL - pkcs8

OpenSSL - pkcs8

Outil de conversion de clé privée au format pkcs#8

   Cette commande traite les clé privées au format pkcs#8. Elle peut gérer le format PrivateKeyInfo et EncryptedPrivateKeyInfo avec divers algorithmes PKCS#5 (1.5 et 2.0) et PKCS#12.

OPTIONS

-topk8 Normallement une clé privée PKCS#8 est attendue en entrée et un format de clé privée traditionnel est écris. Cette option inverse la situation
-inform DER|PEM Spécifie le format d'entrée
-outform DER|PEM Spécifie le format de sortie
-passing arg Source du mot de passe du fichier d'entrée
-out filename Fichier de sortie
-passout arg source du mot de passe du fichier de sortie
-iter count En créant un nouveau conteneur PKCS#8, utilise le nombre d'itérations donné sur le mot de passe pour dériver la clé de chiffrement.
-nocrypt Les clé PKCS#8 générées sont normallement des structures EncryptedPrivateKeyInfo. Cette option créé des structure PrivateKeyInfo.
-2 alg Active l'utilisation des algorithmes PKCS#5 v2.0. Normalement les clés privées PKCS#8 sont chiffrées avec un mot de passe basé sur l'algorithme de chiffrement pbeWithMD5AndDES-CBC qui utilise DES 56-bits. PKCS#5 v2.0 permet d'utiliser des algorithmes tel que 3DES 168bits, ou RC2 128bits.
-v2prf alg Définis l'algorithme PRF à utiliser avec PKCS#5 v2.0. Une valeur typique est hmacWithSHA256
-v1 alg Définis l'algorithme PKCS#5 v1.5 ou PKCS#12 à utiliser.
-nooct Génère des clé privées RSA dans un format cassé que certains logiciels utilisent
-embed Génère des clé DSA dans un format cassé.
-nsdb Génère des clé DSA dans un format cassé compatible avec les base de clé privée Netscape.
-engine id pkcs8 va tenter d'obtenir une référence fonctionnelle du moteur spécifié.
-scrypt Utilise l'algorithme scrypt pour le chiffrement de la clé privée en utilisant les paramètres par défaut. Actuellement N=16384, r=8 et p=1 et AES en mode CBC avec une clé 256 bits. Ces paramètres peuvent être modifiés avec -scrypt_N, -scrypt_r, -scrypt_p et -v2

Notes

Le format chiffré des fichiers PKCS#8 encodés PEM utilisent les en-tête et fin suivant:
-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----

La version non-chiffrée:
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----

   Les clé privées chiffrées en utilisant PKCS#5 v2.0 et un compteur d'itération élevé sont plus sécurisés que ceux chiffrés en utilisant les formats compatible SSLeay traditionnels. Le chiffrement par défaut est seulement de 56bits parce que c'est le chiffrement le plus courant dans les implémentations supportant PKCS#8.

   Certains logiciels peuvent utiliser des algorithmes de chiffrement basé sur mot de passe PKCS#12 avec des clés privées au format PKCS#8: ils sont gérés automatiquement mais il n'y a pas d'option pour les produire.

   Il est possible d'écrire des clé privée encodées DER au format PKCS#8 parce que les détails de chiffrement sont inclus au niveau ASN1 alors que le format traditionnel les inclus au niveau PEM.

Algorithmes PKCS#5 v1.5 et PKCS#12

   Divers algorithmes peuvent être utilisés avec l'option -v1, incluant PKCS#5 v1.5 et PKCS#12:

PBE-MD2-DES PBE-MD5-DES Ces algorithmes sont inclus dans la spécification PKCS#5 v1.5. Ils offrent une protection 56-bits vu qu'ils utilisent DES
PBE-SHA1-RC2-64 PBE-MD2-RC2-64 PBE-MD5-RC2-64 PBE-SHA1-DES Ces algorithmes ne sont pas mentionnés dans la spécification PKCS#5 v1.5 mais utilisent le même algorithme de dérivation de clé et sont supportés par certains logiciels. Ils sont mentionnés dans PKCS#5 v2.0. Ils utilisent soit rs2 64bits, ou DES 56bits
PBE-SHA1-RC4-128 PBE-SHA1-RC4-40 PBE-SHA1-3DES PBE-SHA1-2DES PBE-SHA1-RC2-128 PBE-SHA1-RC2-40 Ces algorithems utilisent l'algorithme de chiffrement de mot de passe PKCS#12 et utilisent 3DES ou rc2 128bits.

Exemples

Convertir une forme privée traditionnelle en PKCS#5 v2.0 avec 3DES
openssl pkcs8 -in key.pem -topk8 -v2 des3 -out enckey.pem
Convertir un forme privée traditionnelle en PKCS#5 v2.0 avec AES 256 en mode CBC et hmacWithSHA256 PRF
openssl pkcs8 -in key.pem -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -out enckey.pem
Convertir une clé privée en PKCS#8 utilisant PKCS#5 1.5 (DES)
openssl pkcs8 -in key.pem -topk8 -out enckey.pem
Convertir un clé privée en PKCS#8 en utilisant un algorithme compatible PKCS#5 1.5 (DES)
openssl pkcs8 -in key.pem -topk8 -out enckey.pem -v1 PBE-SHA1-3DES
Lire une clé privée PKCS#8 DER non-chiffré
openssl pkcs8 -inform DER -nocrypt -in key.der -out key.pem
Convertir une clé privée depuis un format PKCS#8 dans un format traditionnel
openssl pkcs8 -in pk8.pem -out key.pem
Convertir une clé privée au format PKCS#8, la chiffrer avec AES-256 et un million d'itération
openssl pkcs8 -in raw.pem -topk8 -v2 aes-256-cbc -iter 1000000 -out pk8.pem

Standards

   Le format des clé privée DSA PKCS#8 (et d'autres) ne sont pas bien documentés: c'est caché dans PKCS#11 v2.01, section 11.9. Openssl se conforme à ce standard.
^
18 mars 2012

htmlpdflatexmanmd




OpenSSL - pkey

OpenSSL - pkey

Outil de traitement de clé privée ou publique

OPTIONS

-inform DER|PEM Format du fichier d’entrée
-outform DER|PEM Spécifie le format de sortie
-in filename Fichier à lire
-out filename Fichier à écrire
-passin arg source du mot de passe du fichier d’entrée
-passout password source du mot de passe du fichier de sortie.
-cipher Chiffre la clé privée avec le chiffrement spécifié
-text Affiche les composant de clé privée ou publique en texte clair en plus de la version encodée.
-text_pub Affiche uniquement la composante clé publique.
-noout Ne sort pas la version encodée de la clé
-pubin Par défaut, la clé privée est lue depuis le fichier d’entrée, cette option lit une clé publique à la place
-pubout Par défaut une clé privée est écrite en sortie. Cette option sort une clé publique.
-engine id pkey va tenter d’obtenir une référence fonctionnelle de ce moteur.

Exemples

Enlever un passphrase d’une clé RSA:
openssl pkey -in key.pem -out keyout.pem
Chiffrer une clé publique avec 3DES:
openssl pkey -in key.pem -des3 -out keyout.pem
Convertir une clé privée PEM en DER:
openssl pkey -in key.pem -outform DER -out keyout.der
Afficher les composants de clé privée:
openssl pkey -in key.pem -text -noout
Afficher les composants publics d’une clé privée:
openssl pkey -in key.pem -text_pub -noout
Sortie la partie publique d’une clé privée:
openssl pkey -in key.pem -pubout -out pubkey.pem
^
18 mars 2012

htmlpdflatexmanmd




OpenSSL - pkeyparam

OpenSSL - pkeyparam

Outil de traitement de paramètres d'algorithme de clé publique

OPTIONS

-in filename Fichier à lire au format PEM
-out filename Fichier à écrire au format PEM
-text Affiche les paramètres en clair en plus de la version encodée
-noout Ne sort pas la version encodée des paramètres
-engine id pkeyparam va tenter d’obtenir une référence fonctionnelle de ce moteur.

Exemples

Afficher la version des paramètres:
openssl pkeyparam -in param.pem -text
^
31 mars 2012

htmlpdflatexmanmd




OpenSSL - pkeyutl

OpenSSL - pkeyutl

Utilitaire de manipulation de clé publique

OPTIONS

-in filename Spécifie le nom du fichier d’entrée
-out filename Spécifie le fichier de sortie
-inkey file fichier clé d’entrée, par défaut devrait être une clé privée.
-keyform PEM|DER Format de clé PEM, DER ou ENGINE
-passin arg Source du mot de passe de la clé en entrée
-peerkey file Fichier de clé pair, utilisé par les opérations de dérivation de clé
-peerform PEM|DER Format du fichier de clé pair PEM, DER ou ENGINE
-engine id pkeyutil va tenter d’obtenir une référence fonctionnelle de ce moteur.
-pubin Le fichier d’entrée est une clé publique
-certin L’entrée est un certificat contenant une clé publique
-rev Renverse l’ordre du tampon d’entrée. Utile pour certains libraires comme CryptoAPI qui présente l’entrée au format little endian
-sign Signe les données d’entrée et sort le résultat signé, requière une clé privée.
-verify Vérifie les données en entrée avec le fichier de signature et indique si l’opération à réussie ou non
-verifyrecover Vérifie les données entrée et sort les données récupérées
-encrypt Chiffre les données en entrée en utilisant un clé publique
-decrypt Déchiffre les données en entrée en utilisant une clé privée
-derive Dérive une clé partagée en utilisant une clé paire
-hexdump Dump en hexa les données sorties
-asn1parse asn1parse les données en sortie. Utilisé avec -verifyrecover

Notes

   Les opérations et options dépendent de l’algorithme de clé et de son implémentation. Tous les algorithmes supportent l’option digest:alg qui spécifie le digest à utiliser pour les opérations de signature et vérification.

RSA

   RSA supporte les opérations de chiffrement, déchiffrement, signature et vérification.

-rsa_padding_mode:mode Définis le padding RSA. (pkcs1, sslv23, none oaep, x931 et pss). oeap supporte uniquement le chiffrement et déchiffrement. pss support uniquement la signature et la vérification. rsa_pss_saltlen:len pour le mode pss, spécifie la longueur du salt. (Valeurs spéciales : -1 - le salt est à la longueur du digest, -2 - valeur maximum permise).

DSA

   DSA support les opérations de signature et de vérification uniquement.

DH

   DH supporte uniquement les opérations de dérivation

EC

   EC supporte les opérations de signature, de vérification et de dérivation. La signature et vérification utilise ECDSA et la dérivation ECDH.

Exemples

Signer des données en utilisant une clé privée:
openssl pkeyutl -sign -in file -inkey key.pem -out sig
Récupérer des données signées:
openssl pkeyutl -verifyrecover -in sig -inkey key.pem
Vérifier la signature:
openssl pkeyutl -verify -in file -sigfile sig -inkey key.pem
Signer les données en utilisant un message digest:
openssl pkeyutl -sign -in file -inkey key.pem -out sig -pkeyopt digest:sha256
Dériver une clé secrète partagée:
openssl pkeyutl -derive -inkey key.pem -peerkey pubkey.pem -out secret
^
19 février 2012

htmlpdflatexmanmd




OpenSSL - présentation

OpenSSL - présentation

Utilitaire cryptographique

   OpenSSL est un utilitaire cryptographique implémentant SSL v2/v3 et TLS v1 et les standards cryptographiques liés. Il permet de:

        - Crée des paramètres de clé RSA, DH et DSA
        - Créer des certificats X.509, CSR et CRL
        - Calculer les digests de messages
        - Crypter et décrypter avec chiffrement
        - Tests client/serveur SSL/TLS
        - Manipuler les mails signé ou chiffré S/MIME

Sommaire des commandes

list-standard-commands Affiche la liste des commandes standards
list-message-digest-commands Affiche la liste des commandes Digest standard
list-cipher-commands Affiche la liste des commandes de chiffrement standard
list-public-key-algorithms Liste les algorithmes de clé publique supportés.
no-‹commande› test si une commande est disponible. (Sort 0 si la commande existe, 1 sinon)

Commandes standards

asn1parse Parse une séquence ASN.1
ca Gestion de CA
ciphers Détermine le Cipher Suite Description
cms Utilitaire CMS
crl Gestion de CRL
crl2pkcs7 Conversion de CRL vers pkcs7
dgst Calcul de Message Digest
dh Gestion des paramètre Diffie Hellman
dhparam Génération et gestion des paramètres Diffie Hellman
dsa Gestion des données DSA
dsaparam Génération des paramètres DSA
ec Traitement de clé EC
ecparam Génération et manipulation de paramètres EC
enc Encodage avec Chiffrement
engine Information et manipulation du moteur
errstr Conversion des numéro d’erreur en message d’erreur
gendh Génération des paramètres Diffie Hellman
gendsa Génération des paramètres DSA
genrsa Génération des paramètres RSA
genpkey Génération des clés privée ou paramètres
nseq Créer ou examiner une séquence de certificat Netscape
ocsp Utilitaire pour le protocole Online Certificate Status
passwd Génération de hash de mot de passe
pkcs12 Gestion des données PKCS #12
pkcs7 Gestion des données PKCS #7
pkey Gestion de clé publique et privée
pkeyparam Gestion des paramètres d’algorithme de clé publique
pkeyutl Utilitaire pour les opérations cryptographique de clé publique
rand Génère des octets pseudo-aléatoire
req Gestion des CSR
rsa Gestion des données RSA
rsautil Utilitaire RSA pour signer, vérifier, chiffrer et déchiffrer
s_client Implémente un client générique SSL/TLS pour établir une connexion transparente à un serveur distant.
s_server Implémente un serveur SSL/TLS qui accepte les connections depuis des clients distant.
s_time Timer de connexion SSL
sess_id Gestion de données de session SSL
smime Traitement des mail S/MIME
speed Mesure de vitesse des algorithmes
spkac Utilitaire de génération et d’affichage SPKAC
ts Outil client/serveur d’autorité TimeStamping
verify Vérification de certificats X.509
version Information de version d’openssl
x509 Gestion des données des certificats x509

Commandes Digest Standards

md2 digest md2
md5 Digest md5
mdc2 digest mdc2
rmd160 digestion RMD-160
sha digest sha
sha1 digest sha-1
sha224 digest sha-224
sha256 digest sha-256
sha384 digest sha-384
sha512 digest sha-512

Commandes d’encodage et de chiffrement

base64 Encodage en base64
bf bf-cbc bf-cfb bf-ecb bf-ofb Chiffrement blowfish
cast cast-cbc Chiffrement CAST
cast5-cbc cast5-cfb cast5-ecb cast5-ofb Chiffrement CAST5
des des-cbc des-cfb des-ecb des-ede des-ebe-cbc des-ebe-cfb des-ebe-ofb des-ofb Chiffrement DES
des3 desx des-ede3 des-ede3-cdc des-ede3-cfb des-ede3-ofb Chiffrement TRIPLE-DES
idea idea-cbc idea-cfb idea-ecb idea-ofb Chiffrement IDEA
rc2 rc2-cbc rc2-ecb rc2-ofb Chiffrement RC2
rc4 Chiffrement rc4
rc5 rc5-cbc rc5-cfb rc5-ecb rc5-ofb Chiffrement rc5

Arguments de pass-phrase

pass:password Le mot de passe actuel est password.
env:var Obtenir le mot de pass depuis la variable d’environnement var
file:pathname La première ligne du fichier est le mot de passe. Si ce même fichier est spécifié à -passin et -passout, la première ligne est pour l’entrée la ligne suivante est pour la sortie
fd:number Lit le mot de passe depuis le descripteur de fichier spécifié
stdin Lit le mot de passe depuis l’entrée standard
^
31 mars 2012

htmlpdflatexmanmd




OpenSSL - rand

OpenSSL - rand

Générateur pseudo-aléatoire

OPTIONS

-out file Spécifie le fichier à écrire
-rand file(s) Utilise le(s) fichier(s) pour le moteur de nombre aléatoire.
-base64 Effectue un encodage en base 64 sur la sortie
-hex Affiche la sortie en hexa.
^
31 mars 2012

htmlpdflatexmanmd




OpenSSL - req

OpenSSL - req

Utilitaire pour créer et traiter des requêtes pkcs#10

OPTIONS

-inform PEM|DER Format du fichier d’entrée
-outform PEM|DER Format du fichier de sortie
-in filename Fichier d’entrée
-passin arg source du mot de passe du fichier d’entrée
-out filename Fichier de sortie
-passout arg Source du mot de passe pour le fichier de sortie
-text Affiche la requête en clair
-subject Affiche le sujet de la requête
-pubkey Affiche la clé publique
-noout N’affiche pas la version encodée de la requête
-modulus Affiche le modulo de la clé publique contenue dans la requête
-verify Vérifie la signature de la requête
-new Génère une nouvelle requête de certificat.
-subj arg Remplace le champ sujet dans la requête d’entrée doit être au format /type0=value0/type1=value1/typeN=valueN...
-rand file(s) Fichier(s) contenant les données aléatoire pour le générateur de nombre aléatoire.
-newkey arg Crée une nouvelle requête de certificat et une nouvelle clé privée. arg peut être sous la forme rsa:nbits où nbits est la longueur de la clé RSA. Tous les autres algorithmes supportent la forme alg:file où file est un fichier de paramètre. param:file utilise le fichier de paramètre ou le certificat spécifié par file. L’algorithme est déterminé par les paramètres.
-pkeyopt opt:value Définie une options d’algorithme. (Voir genpkey)
-key filename Spécifie le fichier contenant la clé privée à lire. Accepte le format PKCS#8.
-keyform PEM-DER Le format du fichier de clé privée.
-keyout filename Nom du fichier où écrire la clé privée.
-nodes Si cette option est spécifiée, la clé privée créée n’est pas chiffrée
-[digest] Spécifie le message digest à utiliser pour signer la requête.
-multivalue-rdn Permet d’interpréter -subj au format RDN multi-valué (exemple : /DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe, sinon le format sera : 123456+CN=John Doe)
-x509 Sort un certificat auto-signé au lieu d’une requête de certificat.
-days -n avec -x509, spécifie la durée de validité du certificat (défaut : 30jours)
-set_serial n Définis le numéro de série du certificat auto-signé. Peut-être en décimal ou en hexa.
-extensions section
-reqexts section Spécifient les sections alternatives à inclure dans la requête.
-utf8 interprète les valeurs de champs au format UTF8
-nameopt option détermine comment le sujet et l’issuer sont affichés (voir x509)
-repopt Personnalise le format de sortie avec -text. l’argument peut être une simple options ou plusieurs, séparés par des ’,’ (voir x509)
-asn1-kludge Par défaut, req sort les requêtes de certificat ne contenant pas d’attributs dans le format PKCS#10 correct. Cependant, certaines CA acceptent uniquement les requêtes ne contenant pas d’attributs dans une forme invalide : cette options produit ce format invalide (les attributs dans une requête PKCS#10 sont définis comme un set d’attribut SET OF. Ils ne sont pas optionnels donc si aucun attribut n’est présent, il devrait être encodé comme un SET OF vide, une forme invalide ne contient pas ce SET OF vide)
-no-asn1-kludge Inverse l’effet de -asn1-kludge
-newhdr Ajoute le mot NEW dans l’en-tête et pied de page PEM.
-batch Mode non-interactif
-verbose Affiche les détails sur l’opération courante
-engine id req va tenter d’obtenir une référence fonctionnelle du moteur spécifié
-keygen_engine id Spécifie un moteur qui devrait être utilisé pour les opérations de génération de clé.

Format du fichier de configuration

input_password output_password Les mots de passe pour les fichier de clé privée d’entrée et de sortie (remplace passin et passout)
default_keyfile Taille en bits de la clé (défaut 512, remplace -newkey)
oid_file Spécifie un fichier contenant des OID additionnels. Chaque ligne consiste de l’oid suivi d’un espace blanc, suivi du nom cours, suivi par un blanc et suivi par un nom long.
oid_section Spécifie la section dans le fichier de configuration contenant les oid supplémentaires
RANDFILE Spécifie un nom de fichier contenant les données aléatoires à utiliser par le moteur de génération de nombres pseudo-aléatoires
encrypt_key à no, la clé privée n’est pas chiffrée. (Remplace -nodes)
default_md Spécifie l’algorithme digest à utiliser. (md5, sha1 ou mdc2, défaut : md5)
string_mask Masque l’utilisation de certaines chaines dans certains champs. default utilise PrintableStrings, T61Strings et BMPStrings.
pkix utilise PrintableStrings et BMPStrings. utf8only utilise UTF8Strings. nombstr utilise PrintableStrings et T61Strings.
req_extensions Spécifie la section du fichier de configuration contenant la liste des extensions à ajouter à une requête (remplace -reqexts)
x509_extensions Spécifie la section du fichier de configuration contenant un liste des extensions à ajouter au certificat généré avec -x509 (remplace -extensions)
prompt à no désactive la demande des champs du certificat et prend les valeurs dans le fichier de configuration
utf8 à yes les valeurs de champs sont interprétés en utf8 (ASCII par défaut)
attributes Spécifie la section contenant les attributs de requête. Identique à distinguished_name. Actuellement ignoré par OpenSSL.
distinguished_name Spécifie la section contenant les champs dn à demander pour générer un certificat ou une requête.

Format des sections Distinguished Name et Attribute

Il y’a 2 formats pour ces sections. Si l’option prompt est à no, ces sections consistent de noms de champs et de valeur. Par exemple:
CN=My Name
OU=My Organization
emailAddress=someone@somewhere.org

Si prompt est absent ou à yes, ces sections contiennent la liste des champs à demander:
fieldName="prompt"
fieldName_default="default field value"
fieldName_min= 2
fieldName_max= 4

fieldname est le nom d’un champs, par exemple commonName ou CN. "prompt" est utilisé pour demander à l’utilisateur d’entrer les informations du champ. Si l’utilisateur n’entre rien, ce champ est omis.
- Si une valeur par défaut est définie, elle sera utilisée si l’utilisateur n’entre rien. L’utilisateur peut outrepasser cette valeur par défaut en entrant le caractère '.'
- Les limites min et max peuvent être utilisé pour limiter les valeurs de champs. Par exemple, countryName peut seulement avoir 2 caractères et doivent être correspondre à un PrintableString
- Certains champs comme organizationName peuvent être utilisé plus d’une fois dans un DN. Un second organizationName peut être entré en l’appelant 1.organizationName
- Les noms de champs permis sont des noms cours ou long d’object identifier. Incluant : commonName, countryName, localityName, organizationName, organizationUnitName, stateOrProvinceName. emailAddress, name, surname, givenName, dnQualifier.
- Des object identifier additionnels peuvent être définis avec les options oid_file et oid_section dans le fichier de configuration. Ces champs additionnels seront traités comme si c’était un DirectoryString

Exemples

Examiner et vérifier une requête de certificat:
openssl req -in req.pem -text -verify -noout
Créer une clé privée et générer une requête de certificat:
openssl genrsa -out key.pem 1024
openssl req -new -key key.pem -out req.pem
Idem en utilisant uniquement req:
openssl req -newkey rsa:1024 -keyout key.pem -out req.pem
Générer un certificat root auto-signé:
openssl req -x509 -newkey rsa:1024 -keyout key.pem -out req.pem
Exemple de fichier pointé par l’option oid_file:
1.2.3.4 shortName A longer Name
1.2.3.6 otherName Other longer Name
Exemple d’une section pointée par oid_section:
testoid1=1.2.3.5
testoid2=$testoid1.6

Exemple de fichier de configuration demandant les valeurs de champs


[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca
    
dirstring_type = nobmp
    
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = AU
countryName_min = 2
countryName_max = 2
    
localityName = Locality Name (eg, city)
    
organizationalUnitName = Organizational Unit Name (eg, section)
    
commonName = Common Name (eg, YOUR name)
commonName_max = 64
    
emailAddress = Email Address
emailAddress_max = 40
    
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
    
[ v3_ca ]
    
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = CA:true

Exemple de configuration contenant toutes les valeurs de champs


RANDFILE = $ENV ::HOME/.rnd
    
[ req ]
default_bits = 1024
default_keyfile = keyfile.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
prompt = no
output_password = mypass
    
[ req_distinguished_name ]
C = GB
ST = Test State or Province
L = Test Locality
O = Organization Name
OU = Organizational Unit Name
CN = Common Name
emailAddress = test@email.address
    
[ req_attributes ]
challengePassword = A challenge password

Notes

Le format PEM inclus:
-----BEGIN CERTIFICATE REQUEST-----
-----END CERTIFICATE REQUEST-----

Certains logiciels comme Netscape certificate server nécessitent:
-----BEGIN NEW CERTIFICATE REQUEST-----
-----END NEW CERTIFICATE REQUEST-----

Variables d'environnement

OPENSSL_CONF peut être utilisé comme emplacement de fichier de configuration alternatif.
^
09 avril 2012

htmlpdflatexmanmd




OpenSSL - rsa

OpenSSL - rsa

Traitement des clés rsa

OPTIONS

-inform DER|NET|PEM Format du fichier d’entrée.
-outform DER|NET|PEM Format du fichier de sortie
-in filename Fichier d’entrée
-passin arg source du mot de passe du fichier d’entrée
-out filename Fichier de sortie où écrire la clé
-passout password source du mot de passe du fichier de sortie
-sgckey Utilisé pour l’algorithme modifié NET utilisé avec certaines versions de Microsoft IIS et les clé SGC.
-des|-des3|-idea Algorithme utilisé pour chiffrer la clé privée.
-text Affiche des infos sur les clés privée et publique
-noout N’affiche pas la version encodée de la clé
-modulus Affiche la valeur du modulo de la clé
-check Vérifie la consistance de la clé privée RSA
-pubin Lit une clé publique en entrée plutôt qu’une clé privée
-pubout Sort une clé publique plutôt qu’une clé privée
-engine id rsa va tenter d’obtenir une référence fonctionnelle de ce moteur.

Notes

la forme PEM de la clé privée contient:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

la forme PEM de la clé publique contient:
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----

Exemples

Supprimer le passphrase d’une clé privée:
openssl rsa -in key.pem -out keyout.pem
Chiffrer une clé privée avec triple DES:
openssl rsa -in key.pem -des3 -out keyout.pem
Convertir une cléprivée PEM en DER:
openssl rsa -in key.pem -outform DER -out keyout.der
Afficher les composantes de la clé privée:
openssl rsa -in key.pem -text -noout
Afficher la partie publique de la clé privée:
openssl rsa -in key.pem -pubout -out pubkey.pem
^
09 avril 2012

htmlpdflatexmanmd




OpenSSL - rsautl

OpenSSL - rsautl

Utilitaire rsa

OPTIONS

-in filename Fichier d’entrée
-out filename Fichier de sortie
-inkey file Fichier de clé privée RSA en entrée
-pubin Le fichier d’entrée est une clé publique RSA
-certin L’entrée est un certificat contenant une clé publique RSA
-sign Signe la donnée en entrée et sort le résultat signé. requière une clé privée RSA
-verify Vérifie les données en entrée et sort les données récupérées
-encrypt Chiffre l’entrée en utilisant la clé publique RSA
-decrypt Déchiffre l’entrée en utilisant la clé privée RSA
-pkcs, -oeap, -ssl, -raw Le padding à utiliser (respectivement PKCS#1 v1.5, PKCS#1 OEAP, padding utilisé dans ssl v2, aucun padding). pour les signatures, seul -pkcs et -raw sont utilisé
-hexdump Dump en hexa les données en sortie
-asn1parse asn1parse la sortie. utile avec -verify

Notes

   rsautl utilise directement l’algorithme RSA, il ne peut être utlisé que pour de petites portions de données.

Exemples

Signer des données en utilisant une clé privée:
openssl rsautl -sign -in file -inkey key.pem -out sig
Récupérer les données signées:
openssl rsautl -verify -in sig -inkey key.pem
Examiner les données signées en raw:
openssl rsautl -verify -in file -inkey key.pem -raw -hexdump


0000 - 00 01 ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0010 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0020 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0030 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0040 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0050 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0060 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0070 - ff ff ff ff 00 68 65 6c-6c 6f 20 77 6f 72 6c 64 .....hello world

   Ce block est formaté PKCS#1. çà été fait en utilisant encrypt puis en déchiffrant le block detype 2 (le 2eme octet) et un padding aléatoire visible à la place des octets 0xff. Il est possible d’analyser la signature des certificats en utilisant rsautl avec asn1parse.

En considérant un exemple auto-signé dans certs/pca-cert.pem:
openssl asn1parse -in pca-cert.pem


0:d=0 hl=4 l= 742 cons : SEQUENCE
4:d=1 hl=4 l= 591 cons : SEQUENCE
8:d=2 hl=2 l= 3 cons : cont [ 0 ]
10:d=3 hl=2 l= 1 prim : INTEGER :02
13:d=2 hl=2 l= 1 prim : INTEGER :00
16:d=2 hl=2 l= 13 cons : SEQUENCE
18:d=3 hl=2 l= 9 prim : OBJECT :md5WithRSAEncryption
29:d=3 hl=2 l= 0 prim : NULL
31:d=2 hl=2 l= 92 cons : SEQUENCE
33:d=3 hl=2 l= 11 cons : SET
35:d=4 hl=2 l= 9 cons : SEQUENCE
37:d=5 hl=2 l= 3 prim : OBJECT :countryName
42:d=5 hl=2 l= 2 prim : PRINTABLESTRING :AU
....
599:d=1 hl=2 l= 13 cons : SEQUENCE
601:d=2 hl=2 l= 9 prim : OBJECT :md5WithRSAEncryption
612:d=2 hl=2 l= 0 prim : NULL
614:d=1 hl=3 l= 129 prim : BIT STRING

Le BIT STRING final contient la signature actuelle, et peut être extrait avec:
openssl asn1parse -in pca-cert.pem -out sig -noout -strparse 614
La clé publique du certificat peut être extrait avec:
openssl x509 -in test/testx509.pem -pubkey -noout ›pubkey.pem
La signature peut être analysée avec:
openssl rsautl -in sig -verify -asn1parse -inkey pubkey.pem -pubin


0:d=0 hl=2 l= 32 cons : SEQUENCE
2:d=1 hl=2 l= 12 cons : SEQUENCE
4:d=2 hl=2 l= 8 prim : OBJECT :md5
14:d=2 hl=2 l= 0 prim : NULL
16:d=1 hl=2 l= 16 prim : OCTET STRING
0000 - f3 46 9e aa 1a 4a 73 c9-37 ea 93 00 48 25 08 b5 .F...Js.7...H%..

C’est la version parsée d’une structure ASN1 DigestInfo, ici avec un digest md5.
La partie du certificat qui a été signée peut être extraite avec:
openssl asn1parse -in pca-cert.pem -out tbs -noout -strparse 4
et son digest calculé avec:
openssl md5 -c tbs
MD5(tbs)= f3:46:9e:aa:1a:4a:73:c9:37:ea:93:00:48:25:08:b5
Qui peut être récupéré avec cette valeur.
^
03 juin 2012

htmlpdflatexmanmd




OpenSSL - sess_id

OpenSSL - sess_id

Utilitaire pour manipuler et afficher les ID de session SSL/TLS

OPTIONS

-inform DER|PEM Format d’entrée
-outform DER|PEM Format de sortie
-in filename Fichier d’entrée contenant les informations de session
-out filename Fichier de sortie où écrire les informations de session
-text Affiche les composante clé privée et publique en texte clair en plus de la version encodée
-cert Si un certificat est présent dans la session il sera sortie, si -text il sera affiché
-noout Ne sort pas la version encodée de la session
-context ID Spécifie l’id de session

Sortie


SSL-Session :
Protocol : TLSv1
Cipher : 0016
Session-ID : 871E62626C554CE95488823752CBD5F3673A3EF3DCE9C67BD916C809914B40ED
Session-ID-ctx : 01000000
Master-Key : A7CEFC571974BE02CAC305269DC59F76EA9F0B180CB6642697A68251F2D2BB57E51DBBB4C7885573192AE9AEE220FACD
Key-Arg : None
Start Time : 948459261
Timeout : 300 (sec)
Verify return code 0 (ok)

Détails

Protocol Protocole utilisé (TLSv1, SSLv2 ou SSLv3)
Cipher Chiffrement utilisé
Session-ID L’id de session en hexa
Session-ID-ctx Contexte de l’id de session en hexa
Master-Key Clé maître de session SSL
Key-Arg Argument clé, utilisé en SSLv2
Start Time Heure de début de la session au format Unix standard
Timeout timeout en secondes
Verify return code code de retour quand le certificat client est vérifié

Notes

La version PEM du fichier de session utilise:
-----BEGIN SSL SESSION PARAMETERS-----
-----END SSL SESSION PARAMETERS-----

^
03 juin 2012

htmlpdflatexmanmd




OpenSSL - smime

OpenSSL - smime

Utilitaire smime

OPTIONS

-encrypt Chiffrer un mail.
-decrypt Déchiffrer un mail
-sign Signer un mail
-verify Vérifier un mail signé
-pk7out Prend un message et le sort sous forme d’une structure PKCS#7 PEM
-resign Resigne un message
-in filename Ficher d’entrée
-inform SMIME|PEM-DER Format du fichier d’entrée
-out filename Fichier de sortie
-outform SMIME|PEM|DER Format du fichier de sortie
-stream -indef sont équivalent et activent le streaming I/O pour les opérations d’encodage. Permet de traiter en une seule passe sans maintenir toutes les données en mémoire.
-noindef Désactive le streaming I/O
-content filename Ficher contenant le contenu détaché. Utilisable si la structure PKCS#7 utilise la signature détachée, où le contenu n’est pas inclus.
-text Ajoute les en-têtes MIME en texte clair.
-CAfile file Fichier contenant la chaînes des certificats à truster, utilisé avec -verify
-CApath dir Répertoire contenant les certificats CA en ’hash form’
-md digest Algorithme de digest à utiliser pour signer ou resigner. (Défaut SHA1)
-[cipher] Algorithme de chiffrement à utiliser (défaut RC2 40bits)
-nointern Normalement lors de la vérification d’un message, les certificats inclus dans le message sont recherché pour valider la signature. Cette options utilise ceux spécifié avec -certfile.
-noverify Ne pas vérifier le certificat du signataire d’un message signé
-nochain Ne pas vérifier la chaîne de certificats des signataires.
-nosigs Ne tente pas de vérifier les signatures dans le message
-nocerts En signant un message, le certificat du signataire est normalement inclus. Cette option ne l’inclus pas.
-noattr Normalement un message signé inclus des attributs dont la date de signature et les algorithmes symmétriques supportés. Cette option ne les inclus pas.
-binary Normalement le message est convertit au format canonique utilisant CR et LF comme fin de ligne comme requis dans la spécification S/MIME. Avec cette option, aucune traduction n’est faite.
-nodetach En signant un message avec une signature opaque, plus résistant aux traductions par relais mais ne peuvent pas être lus pas des MTA qui ne supportent pas S/MIME. Avec cette option, aucune traduction n’est faite.
-certfile file Certificats PEM additionnels à inclure avec le message.
-signer file Certificats des signataires si un message est vérifié avec succès, ces certificats seront écris dans le fichier.
-recip file Certificat pour déchiffrer un message. Doit matcher un des bénéficiaires du message.
-inkey file La clé privée à utiliser pour signer ou déchiffrer. Peut être spécifié plusieurs fois.
-passin arg Source du mot de passe de la clé privée.
-rand file(s) fichier(s) contenant les données pour le générateur de nombre aléatoire.
cert.pem Un ou plusieurs certificats utilisés pour chiffrer un message
-to, -from, -subject Champs d’en-tête du mail
-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check,
-extended_crl, -x509_strict, -policy -check_ss_sig Diverses options de vérification de chaîne de certificat. voir verify

Notes

   Cette version ne permet qu’un seul signataire, mais permet de vérifier des messages contenant plusieurs signataires.

Codes de sortie

0 succès de l’opération
1 Une erreur s’est produite en parsant les options
2 Un des fichiers en entrée ne peut être lu
3 Une erreur s’est produite en créant un fichier PKCS #7 ou en lisant un message SMIME
4 Une erreur s’est produite en déchiffrant ou en vérifiant le message
5 Le message a été vérifié correctement mais une erreur s’est produite en écrivant les certificats des signataires

Exemples

Créer un message signé en texte clair:
openssl smime -sign -in message.txt -text -out mail.msg -signer mycert.pem
Créer un message signé opaque:
openssl smime -sign -in message.txt -text -out mail.msg -nodetach -signer mycert.pem
Créer un message signé, incluant des certificats additionnels et en lisant la clé privée depuis un autre fichier:
openssl smime -sign -in in.txt -text -out mail.msg -signer mycert.pem -inkey mykey.pem -certfile mycerts.pem
Créer un message signé par 2 signataires:
openssl smime -sign -in message.txt -text -out mail.msg -signer mycert.pem -signer othercert.pem
Envoyer un message signé à sendmail, incluant des en-têtes:
openssl smime -sign -in in.txt -text -signer mycert.pem -from steve@openssl.org -to someone@somewhere -subject "Signed message" | sendmail someone@somewhere
Vérifier un message et extraire le certificat du signataire:
openssl smime -verify -in mail.msg -signer user.pem -out signedtext.txt
Envoyer un message chiffré avec 3DES:
openssl smime -encrypt -in in.txt -from steve@openssl.org -to someone@somewhere -subject "Encrypted message" -des3 user.pem -out mail.msg
Signer et chiffrer un mail:
openssl smime -sign -in ml.txt -signer my.pem -text | openssl smime -encrypt -out mail.msg -from steve@openssl.org -to someone@somewhere -subject "Signed and Encrypted message" -des3 user.pem
Déchiffrer un mail:
openssl smime -decrypt -in mail.msg -recip mycert.pem -inkey key.pem
Créer un message chiffrer avec Camellia 128bits:
openssl smime -encrypt -in plain.txt -camellia128 -out mail.msg cert.pem
Ajouter un signataire à un message:
openssl smime -resign -in mail.msg -signer newsign.pem -out mail2.msg
^
03 juin 2012

htmlpdflatexmanmd




OpenSSL - speed

OpenSSL - speed

Test de performances des algorithmes

OPTIONS

-engine id speed va tenter d’obtenir une référence fonctionnelle du moteur spécifié.
[0 ou plusieurs algorithmes] si aucun algorithme n’est spécifié, test tous les algorithmes disponibles.
^
03 juin 2012

htmlpdflatexmanmd




OpenSSL - spkac

OpenSSL - spkac

Utilitaire d’affichage et de génération SPKAC (Signed Public Key And Challenge)

OPTIONS

-in filename Fichier en entrée
-out filename Fichier de sortie
key keyfile Crée un fichier SPKAC en utilisant la clé privée spécifiée -in, -noout, -spksect et -verify seront ignorés
-passin password Source du mot de passe du fichier d’entrée
-challenge string challenge si un SPKAC est créé.
-spkac spkacname Permet une forme alternative de la variable contenant le SPKAC. (Défaut : SPKAC)
-spksect section Spécifie une forme alternative de la section contenant le SPKAC.
-noout N’affiche pas la version texte du SPKAC
-pubkey Affiche la clé publique d’un SPKAC
-verify Vérifie la signature du SPKAC fournis
-engine id spkac va tenter d’obtenir une référence fonctionnelle du moteur spécifié.

Exemples

Afficher le contenu d’un SPKAC:
openssl spkac -in spkac.cnf
Vérifier la signature d’un SPKAC:
openssl spkac -in spkac.cnf -noout -verify
Créer un SPKAC en utilisant le challenge 'hello':
openssl spkac -key key.pem -challenge hello -out spkac.cnf
Exemple d’un SPKAC:
SPKAC=MIG5MGUwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA1cCoq2Wa3Ixs47uI7FPVwHVIPDx5yso105Y6zpozam135a
8R0CpoRvkkigIyXfcCjiVi5oWk+6FfPaD03uPFoQIDAQABFgVoZWxsbzANBgkqhkiG9w0BAQQFAANBAFpQtY/FojdwkJ
h1bEIYuc2EeM2KHTWPEepWYeawvHD0gQ3DngSC75YCWnnDdq+NQ3F+X4deMx9AaEglZtULwV4=
^
09 avril 2012

htmlpdflatexmanmd




OpenSSL - s_client

OpenSSL - s_client

Programme client SSL/TLS qui peut se connecter à un hôte distant en utilisant SSL/TLS. Utilitaire de diagnostique très utile

OPTIONS

-connect host:port Hôte et port distant (défaut : localhost:4433)
-cert certname Le certificat à utiliser (défaut : n’utilise pas de certificat)
-certform format Format du certificat, DER ou PEM
-key keyfile La clé privée à utiliser
-keyform format Le format de la clé privée, DER ou PEM
-pass arg Source du mot de passe de la clé privée
-verify depth Active la vérification du certificat du serveur et spécifie la longueur max de la chaine de certificat du serveur
-CApath directory Répertoire à utiliser pour la vérification du certificat du serveur. doit être un ’hash format’
-CAfile file Fichier contenant les certificats à truster
-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all,
-policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig Définir divers options de validation de la chaîne de certificat (voir verify)
-reconnect Se reconnecte au même serveur 5 fois avec le même session ID, utile pour tester le cache de session.
-pause effectue une pause d’une seconde entre chaque appel de lecture et d’écriture
-showcerts Affiche la chaîne entière de certificat (défaut : seul le certificat du serveur est affiché)
-prexit Affiche les informations de session quand le programme quitte.
-state Affiche les statistiques de session SSL
-debug Affiche des informations additionnelles, incluant un dump hexa de tout le traffic
-msg Affiche tous les messages de protocole avec un dump hexa
-nbio_test Tests IO non bloquant
-nbio Active l’I/O non bloquant
-crlf Traduit un line feed depuis le terminal en CR+LF
-ign_eof Inhibe la fin de connection quand la fon du fichier est atteind
-quiet N’affiche pas d’information de session et des certificats. active implicitement -ign_oef
-psk_identity identity Utilise l’identité PSK lors de l’utilisation de la suite de chiffrement PSK
-psk key Sépcifie la clé PSK lors de l’utilisation de la suite de chiffrement PSK. La clé est donnée en nombre hexa sans le 0x, par exemple : -psk 1a2b3c4d
-ssl2, -ssl3, -tls1, -no_ssl2, -no_ssl3, -no_tls1 Désactive l’utilisation de certains protocoles SSL ou TLS. Par défaut, le handshake utilise une méthode qui devrait être compatible avec tous les serveur et permet d’utiliser SSLv3, SSLv2 ou TLS.
-bugs Il y’a de nombreux bugs connus dans les implémentations SSL et TLS. Cette option autorise diverses solutions.
-cipher cipherlist Permet d’envoyer la liste des chiffrements à modifier. Le serveur détermine quelle suite est utilisée et devrait prendre la première supportée dans la liste.
-starttls protocol Envoie les messages spécifique au protocole pour passer en TLS pour les communications. le protocole est un mot clé pour le protocole (smtp, pop3, imap et ftp)
-tlsextdebug Affiche un dump hexa des extensions TLS reçues du serveur
-no_ticket Désactive le support de ticket de session RFC4507bis
-sess_out filename sort la session SSL dans le fichier
-sess_in sess.pem Charge la session SSL depuis le fichier. Le client va tenter de résumer une connection depuis cette session.
-engin id s_client va tenter d’obtenir une référence fonctionnelle du moteur spécifié.
-rand file(s) Le(s) fichier(s) contenant les données aléatoire utilisé par le générateur de nombre aléatoire.

Exemples

se connecter à un serveur SSL distant:
openssl s_client -connect servername:443
^
03 juin 2012

htmlpdflatexmanmd




OpenSSL - s_server

OpenSSL - s_server

Serveur SSL/TLS

OPTIONS

-accept port Port TCP d’écoute (défaut : 4433)
-context id ID de Context SSL. Peut être une valeur chaîne.
-cert certname Certificat à utiliser.
-certform PEM|DER Format du certificat
-key keyfile Clé privée à utiliser
-keyform PEM|DER Format de la clé privée
-pass arg Source du mot de passe de la clé privée
-dcert filename, -dkey keyname Certificat et clé privée additionnel
-dcertform format, -dkeyform format, -dpass arg Le format du certificat et de la clé privée supplémentaire, et la source du mot de passe.
-nocert Ne pas utiliser de certificat. Restreint la suite de chiffrements à anonymous DH.
-dhparam filename Fichier de paramètres DH à utiliser
-no_dhe Ne charge aucun paramètre DH et désactive les suites de chiffrement ephemeral DH.
-no_tmp_rsa Pour les suites utilisant une clé RSA temporaire, désactive la génération d’une telle clé.
-verify depth, -Verify depth Spécifie la longueur max de la chaîne de certificat client et force le serveur à demander le certificat du client. -verifie, le client n’a pas à fournir de certificat, -Verify l’oblige.
-crl_check, -crl_check_all Vérifie la CRL. Les crl sont ajoutés au fichier de certificat.
-CApath directory Répertoire contenant les certificats de la CA au ’hash format’
-CAfile file Un fichier contenant les certificats de confiance
-state Affiche l’état de session SSL
-debug Affiche des informations de débogage incluant un dump hexa de tout le trafic
-msg Affiche tous les messages de protocoles avec dump hexa
-nbio_test Tests IO non bloquant
-nbio Active l’I/O non bloquant
-crlf Traduit un line feed depuis le terminal en CR+LF
-quiet Inhibe l’affichage de session et des informations de certificat
-psk_hint hint Utilise l’identité PSK en utilisant la suite de chiffrement PSK.
-psk key Utilise la clé PSK spécifié. La clé est donnée en hexa sans 0x, exemple : 1a2b3c4d
-ssl2, -ssl3, -tls1, -no_ssl2, -no_ssl3, -no_tls1 Désactive l’utilisation de certains protocoles SSL ou TLS. Par défaut, le handshake utilise une méthode qui devrait être compatible avec tous les serveurs et permet d’utiliser SSLv3, SSLv2 ou TLS.
-bugs Il y’a de nombreux bugs connus dans les implémentations SSL et TLS. Cette option autorise diverses solutions.
-hack Active une solution de contournement pour certaines anciennes versions de Netscape SSL.
-cipher cipherlist Permet de modifier la liste des chiffrements utilisés par le serveur.
-tlsextdebug Affiche un dump hexa des extensions TLS reçue
-no_ticket Désactive le support de ticket de session RFC4507bis
-www Envoie un message de statut au client quand il se connecte. Inclus beaucoup d’informations sur les chiffrements utilisé et divers paramètres de session, la sortie est au format HTML.
-WWW Emule un serveur web simple. Les pages chargées sont relatives au répertoire courant. (Ex : https://myhost/page.html charge ./page.html)
-HTTP idem, mais les pages chargée contiennent une réponse HTTP complète et correcte.
-engine id s_server va tenter d’obtenir une référence fonctionnelle du moteur spécifié.
-id_prefix arg Génère un ID de session SSL/TLS préfixé par arg.
-rand file(s) Le(s) fichier(s) contenant les données aléatoire utilisé par le générateur de nombre aléatoire.

Commandes connectées

   Si une connexion est établie avec un client SSL et ni -www ni -WWW n’est utilisé, les données du client sont affichées et l’appuie sur une touche sera envoyé au client:

q Termine la connexion SSL courante, mais accepte les nouvelles connections
Q Termine la connexion SSL courante et quitte.
r Renégocie la session SSL
R Renégocie la session SSL et demande un certificat client
P Envoie un texte en clair à la connexion TCP : devrait forcer le client à se déconnecter dû à une violation de protocole.
S Affiche les informations de statut du cache de session

Notes

s_server peut être utilisé pour débugger les clients SSL. Pour accepter les connections depuis un navigateur web:
openssl s_server -accept 443 -www
Beaucoup de navigateurs ne supportent que les suites de chiffrement RSA. Les paramètres de session peuvent être imprimés avec sess_id.
^
03 juin 2012

htmlpdflatexmanmd




OpenSSL - s_time

OpenSSL - s_time

Programme de test de performance SSL/TLS

OPTIONS

-connect host:port Spécifie l’hôte:port distant
-www page Spécifie la page à GET. Sans cette options, s_time effectue simplement un handshake pour établir la connexion SSL, mais ne transfère pas de données payload.
-cert certname Certificat à utiliser (PEM)
-key keyfile Clé privée à utiliser
-verify depth Active la vérification du certificat du serveur et spécifie la longueur max de la chaine de certificat du serveur
-CApath directory Répertoire à utiliser pour la vérification du certificat du serveur. doit être un ’hash format’
-CAfile file Fichier contenant les certificats à truster
-new Effectue un test de temps en utilisant un nouvel ID de session pour chaque connexion.
-reuse Effectue un test de temps en utilisant le même ID de session.
-nbio Active l’I/O non bloquant
-ssl2, -ssl3 Désactive l’utilisation de certains protocoles SSL. Par défaut, le handshake utilise une méthode qui devrait être compatible avec tous les serveurs et permet d’utiliser SSLv3, SSLv2 ou TLS.
-bugs Il y’a de nombreux bugs connus dans les implémentations SSL et TLS. Cette option autorise diverses solutions.
-cipher cipherlist Permet d’envoyer la liste des chiffrements à modifier. Le serveur détermine quelle suite est utilisée et devrait prendre la première supportée dans la liste.
-time length Spécifie le temps en second que s_time devrait mettre pour établir les connections et optionnellement transférer les données payload du serveur.

Notes

s_time peut être utilisé pour mesurer les performances d’une connexion SSL. Pour se connecter à un serveur SSL HTTP et obtenir la page par défaut:
openssl s_time -connect servername:443 -www / -CApath yourdir -CAfile yourfile.pem -cipher commoncipher [-ssl3]
^
14 avril 2013

htmlpdflatexmanmd




OpenSSL - ts

OpenSSL - ts

Outil de Time Stamping Authority (TSA) client/serveur

   ts est un outil de base TSA client/serveur comme spécifié dans la RFC3161. Un TSA peut être une partie d’une PKI et son rôle est de fournir une preuve à long terme de l’existence d’un horodatage avant une date particulière. Brève description du protocole:

        1. Le client TSA calcule un hash 'one-way' pour un fichier de données et l’envoie au TSA.
        2. Le TSA attache la date et l’heure courante au hash reçu, signe le tout et renvoie ce token au client.
        3. Le client TSA reçoit le token et vérifie la signature. Il vérifie également si le token contient le même hash qu’il avait envoyé au TSA.

Génération de requête et Time Stamp

-query Permet de générer une requête avec les options suivantes:

        -rand file:file... Fichier contenant les données pour le générateur pseudo-aléatoire, plusieurs fichiers peuvent être utilisés
        -config configfile Fichier de configuration à utiliser. Seul la section OID est utilisée (remplace la variable OPENSSL_CONF)
        -data file_to_hash Fichier de donnée pour lequel la requête doit être crée.
        -digest digest_bytes Permet de spécifier l’empreinte du message sans le fichier de donnée, au format hexadécimal
        -md2|-md4|-md5|-sha|-sha1|-mdc2|-ripemd160|... Message digest à appliquer au fichier de données
        -policy object_id Stratégie que le client s’attend à ce que le TSA utilise pour créer le time stamp. Sous forme OID numérique ou nom IOD.
        -no_nonce Aucun nonce n’est utilisé, sinon un nombre pseudo-aléatoire 64 bits est inclus dans la requête. nonce est recommandé.
        -cert Le TSA doit inclure son certificat de signature dans la réponse
        -in request.tsq Spécifie une précédente requête time stamp en DER à afficher en sortie
        -out request.tsq Nom du fichier de sortie pour écrire la requête.
        -text Affiche la sortie compréhensible au lieu du DER.

Génération d'une réponse Time Stamp

-reply Créer une réponse time stamp, incluant le status de la réponse et le token lui-même, avec les options suivantes:

        -config configfile Fichier de configuration à utiliser. (remplace la variableOPENSSL_CONF)
        -section tsa_section Nom de la section contenant les paramètres pour la génération de la réponse
        -queryfile request.tsq Nom du fichier contenant la requête timestamp encodée en DER
        -passin password_src Source du mot de passe pour la clé provée du TSA
        -signer tsa_cert.pem Certificat du signataire du TSA au format PEM. Doit avoir eactement un extension d’utilisation de clé ’timeStamping’ et doit être critique
        -inkey private.pem clé privée du signataire du TSA au format PEM
        -chain certs_file.pem Certification au format PEM à inclure dans la répnose en plus du certificat u signataire
        -policy object_id Stratégie par défaut à utiliser pour la réponse à moins que le client en demande une. (nom ou OID)
        -in response.tsr Spécifie une réponse timestamp créé précédemment ou un tocken timestamp au format DER qui sera écrit dns le fichier de sortie. Ne requière pas de requête. Permet d’examiner le contenu d’une réponse
        -token_in avec -in, indique que l’entrée est un otken timestamp DER (ContentInfo) au lieu d’une réponse (TimeStampResp)
        -out response.tsr Fichier de sortie
        -token_out La sortie est un timestamp token (ContentInfo) au lieu d’une réponse (TimeStampResp)
        -text Sort au format human-readable au lieu d’un DER
        -engine id ts va tenter d’obtenir une référence fonctionnelle du moteur spécifié.

Vérification de réponse Time Stamp

-verify permet de vérifier une réponse ou un jeton, il accèpte les options suivante:

        -data file_to_hash La réponse ou le token doit être vérifié avec. Ce fihcier est hashé avec le message digest spécifié dans le token.
        -digest digest_bytes La réponse ou le token doit être vérifié avec le message digest
        -queryfile request.tsq La requête originale en DER
        -in response.tsr La réponse qui doit être vérifiée au format DER
        -token_in avec -in, indique que l’entrée est un token DER (ContentInfo) au lie d’une réponse (TimeStampResp)
        -CApath trusted_cert_path Répertoire contenant Les certificats de CA du client
        -CAfile trusted_certs.pem Le nom du fichier contenant un jeu de certificats PEM de ca
        -untrusted cert_file.pem Définis des certificats non-trustés PEM qui peuvent être nécessaire pour créer une chaîne de certificat

Options de configuration

tsa section, default_tsa Section principale. Spécifie le nom d’une autre section qui contient toutes les autres options pour la commande -reply
oid_file voir ca
oid_section voir ca
RANDFILE voir ca
serial Voir le nom du fichier qui contient le numéro de série héxa de la dernière réponse timestamp. il est incréménté de 1
crypto_device Moteur openssl par défaut pour tous les algorithmes disponibles
signer_cert PEM certificat de signature TSA (idem à -signer)
certs Fichier contenant les certificats PEM à inclure dans la réponse (idem à -chain)
signer_key Clé privée du TSA en PEM
default_policy Stratégie par défaut (idem à -policy)
other_policies Liste de stratégies accèptés par le TSA
digests Liste des algorithmes de messages digest accéptès par le TSA
accuracy Source de précision du temps de TSA en secondes, millisecondes et microsecondes
clock_precision_digits Nombre maximum de chiffre représentant la fraction de secondes à inclure dans le champs time (max : 6)
ordering à yes, la réponse générée par ce TSA peut toujour être ordonnée, même si la différence de temps entre 2 réponses est inférieurs à la précision du temps
tsa_name à yes, le sujet du TSA doit est inclus dans le champs name de la réponse
ess_cert_id_chain les objets SignedData créés par le TSA contiennent toujours l’id du certificat du signataire dans l’attribut signed (RC2634)

Exemples

Créé une requêtes pour design.txt avec SHA-1 sans nonce ni stratégie ni certificat dans la réponse:
openssl ts -query -data design1.txt -no_nonce -out design1.tsq
Similaire en spécifiant le digest:
openssl ts -query -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b -no_nonce -out design1.tsq
Afficher le contenu des requêtes précédentes:
openssl ts -query -in design1.tsq -text
Créer une requête qui inclus MD5 de design2.txt, le certificat du signataire et nonce et spécifie la stratégie:
openssl ts -query -data design2.txt -md5 -policy tsa_policy1 -cert -out design2.tsq
Créer une réponse:
openssl ts -reply -queryfile design1.tsq -inkey tsakey.pem -signer tsacert.pem -out design1.tsr
idem en utilisant les paramètres dans un fichierde configuration:
openssl ts -reply -queryfile design1.tsq -out design1.tsr
Afficher la réponse:
openssl ts -reply -in design1.tsr -text
Créer un token:
openssl ts -reply -queryfile design1.tsq -out design1_token.der -token_out
Afficher un token
openssl ts -reply -in design1_token.der -token_in -text -token_out
Extraire le token d’un réponse:
openssl ts -reply -in design1.tsr -out design1_token.der -token_out
Ajouter le status ’granted à un token en crént une réponse valide:
openssl ts -reply -in design1_token.der -token_in -out design1.tsr
Vérifier une réponse avec la requête:
openssl ts -verify -queryfile design1.tsq -in design1.tsr -CAfile cacert.pem -untrusted tsacert.pem
Vérifier une réponse qui inclus la chaîne de certificat:
openssl ts -verify -queryfile design2.tsq -in design2.tsr -CAfile cacert.pem
Pour vérifier un token avec le fichier originel:
openssl ts -verify -data design2.txt -in design2.tsr -CAfile cacert.pem
Pour vérifier un token avec une empreinte:
openssl ts -verify -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b -in design2.tsr -CAfile cacert.pem
^
14 avril 2013

htmlpdflatexmanmd




OpenSSL - verify

OpenSSL - verify

Vérifier les chaînes de certificat

OPTIONS

-CApath directory Répertoire des certificats de confiance
-CAfile file Fichier de certificats de confiance
-untrusted file Fichiers de certificats non trustés
-purpose purpose Utilisation du certificat
-verbose mode verbeux
-issuer_checks Affiche des info liés à la recherche du certifieurs.
-policy arg Active le traitement de stratégie et ajoute ’arg’ au user-initial-policy-set (RFC5280)
-policy_check Active le traitement de stratégie de certificat
-explicit_policy définis require-explicite-policy (RFC5280)
-inhibit_any définis inhibit-any-policy (see RFC5280)
-inhibit_map définis inhibit-policy-mapping (see RFC5280)
-policy_print Affiche des info sur le traitement des tratégies
-crl_check Vérifie la crl
-crl_check_all Vérifie la validité de toute la chaîne de certificat
-ignore_critical Ignore les extension critique non gérées
-x509_strict mode strict X.509 compliance
-extended_crl Active les fonctionnalités étendues de CRL
-use_deltas Active le support des CRL delta
-check_ss_sig Vérifie la signature du root CA
indique la dernière option, les arguments suivants sont des certificats
certificates Un ou plusieurs certificats à vérifier

Opérations de vérification

   verify utilise les même fonctions que la vérification SSL et S/MIME. La différence entre verify et les opérations de vérification est que verify peut passer les erreurs et de continuer les opérations de vérifications.

Diagnostique

Quand une opération échoue, un message d’erreur est affiché du type:
server.pem: /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit)
error 24 at 1 depth lookup:invalid CA certificate

La première ligne contient le nom du certificat qui a été vérifié, suivi du sujet.
La seconde ligne contient le numéro d’erreur est une courte description de l’erreur


0 X509_V_OK : ok
2 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT : unable to get issuer certificate
3 X509_V_ERR_UNABLE_TO_GET_CRL : unable to get certificate CRL
4 X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE : unable to decrypt certificate’s signature
5 X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE : unable to decrypt CRL’s signature
6 X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY : unable to decode issuer public key
7 X509_V_ERR_CERT_SIGNATURE_FAILURE : certificate signature failure
8 X509_V_ERR_CRL_SIGNATURE_FAILURE : CRL signature failure
9 X509_V_ERR_CERT_NOT_YET_VALID : certificate is not yet valid
10 X509_V_ERR_CERT_HAS_EXPIRED : certificate has expired
11 X509_V_ERR_CRL_NOT_YET_VALID : CRL is not yet valid
12 X509_V_ERR_CRL_HAS_EXPIRED : CRL has expired
13 X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD : format error in certificate’s notBefore field
14 X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD : format error in certificate’s notAfter field
15 X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD : format error in CRL’s lastUpdate field
16 X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD : format error in CRL’s nextUpdate field
17 X509_V_ERR_OUT_OF_MEM : out of memory
18 X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT : self signed certificate
19 X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN : self signed certificate in certificate chain
20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY : unable to get local issuer certificate
21 X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE : unable to verify the first certificate
22 X509_V_ERR_CERT_CHAIN_TOO_LONG : certificate chain too long
23 X509_V_ERR_CERT_REVOKED : certificate revoked
24 X509_V_ERR_INVALID_CA : invalid CA certificate
25 X509_V_ERR_PATH_LENGTH_EXCEEDED : path length constraint exceeded
26 X509_V_ERR_INVALID_PURPOSE : unsupported certificate purpose
27 X509_V_ERR_CERT_UNTRUSTED : certificate not trusted
28 X509_V_ERR_CERT_REJECTED : certificate rejected
29 X509_V_ERR_SUBJECT_ISSUER_MISMATCH : subject issuer mismatch
30 X509_V_ERR_AKID_SKID_MISMATCH : authority and subject key identifier mismatch
31 X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH : authority and issuer serial number mismatch
32 X509_V_ERR_KEYUSAGE_NO_CERTSIGN:key usage does not include certificate signing
50 X509_V_ERR_APPLICATION_VERIFICATION : application verification failure

^
14 avril 2013

htmlpdflatexmanmd




OpenSSL - version

OpenSSL - version

Affiche les informations de version d’openssl

OPTIONS

-a Toutes les informations
-v Version courante d’openssl
-b La date de buid de la version courante
-o Information optionnelles
-c Flags de compilation
-p Paramètre de plateforme
-d Paramètre OPENSSLDIR
^
14 avril 2013

htmlpdflatexmanmd




OpenSSL - x509

OpenSSL - x509

Utilitaire de manipulation de certificat

OPTIONS

-inform DER|PEM|NET Format du fichier x509 en entrée
-outform DER|PEM|NET Format du fichier en sortie
-in filename Fichier en entrée
-out filename Fichier de sortie
-md2|-md5|-sha1|-mdc2 Message digest à utiliser
-engine id x509 va tenter d’obtenir une référence fonctionnelle du moteur spécifié.

Options d'affichage

-text Affiche le certificat au format texte.
-certopt option Personnalise la sortie utilisée avec -text liste d’options à afficher. Peut être spécifié plusieurs fois
-noout N’affiche pas la version encodée de la requête
-pubkey Affiche le block SubjectPublicKeyInfo du certificat au format PEM
-modulus Affiche la valeur du modulo de la clé publique contenue dans le certificat
-serial Affiche le numéro de série du certificat
-subject_hash Affiche le hash du nom du certificat
-issuer_hash Affiche le hash de l’issuer du certificat
-hash idem à -subject_hash
-subject_hash_old Affiche le hash du nom du certificat en utilisant l’ancien algorithme pré v1
-issuer_hash_old Affiche le hash de l’issuer du certificat en utilisant l’ancien algorithme pré v1
-subject Affiche le sujet
-issuer Affiche le fournisseur
-nameopt option Détermine comment le sujet et l’issuer sont affichés (voir options de nom)
-email Affiche les adresses email
-ocsp_uri Affiche les adresses de répondeur OCSP
-startdate Affiche la date de début de validité du certificat
-enddate Affiche la date de fin de validité du certificat
-dates Affiche la date de début et d’expiration du certificat
-fingerprint Affiche le digest de la version encodé DER du certificat
-C Affiche le certificat sous la forme d’un source C

Paramètres de confiance

-trustout Sort un certifcat de confiance.
-setalias arg Définis l’alias du certificat
-alias Affiche l’alias du certificat, s’il existe
-clrtrust Efface toutes les utilisations de confiance et permises du certificat
-clrreject Efface toutes les utilisations rejetée ou interdites du certificat
-addtrust arg Ajoute une utilisation de certifiaction de confiance. (clientAuth, serverAuth, emailProtection)
-addreject arg Ajoute une utilisation interdite. Accèpte lesmême valeurs que -addtrust
-purpose Effectue des tests sur les extensions du certificat et affiche le résultat (voir les extensions de certificat)

Options de signature

-signkey filename Signe le fichier en entrée avec la clé privée spécifiée. Si l’entrée est une requête de certificat, génère un certificat auto-signé
-clrext Supprime des extensions d’un certificat
-keyform PEM|DER Format de la clé privée
-days arg Spécifie le nombre de jours pour créer une validité pour le certificat
-x509toreq Convertit un certificat en une requête
-req L’entrée est une requete au lieu d’un certificat
-set_serial n Numéro de série à utiliser en décimal ou hexa
-CA filename Certificat de la CA à utiliser pour signer le certificat
-CAkey filename Clé privée de la CA
-CAserial filename Définis le fichier de numéro de série à utiliser
-CAcreateserial Créé le fichier de numéro de série s’il n’existe pas
-extfile filename Fichier contenant les extensions à utiliser
-extensions section Section où se trouvent les extensions à ajouter

Options de nommage

compat Utiliser l’ancien formats, équivalent à ne spécifier aucune option de nommage
RFC2253 Affiche les noms compatibles avec la rfc2253 equivalent à spécifier: esc_2253, esc_ctrl, esc_msb, utf8, dump_nostr, dump_unknown, dump_der, sep_comma_plus, dn_rev et sname
oneline Format oneline, plus lisible que rfc2253. equivalent à spécifier: esc_2253, esc_ctrl, esc_msb, utf8, dump_nostr, dump_der, use_quote, sep_comma_plus_space, space_eq et sname
multiline Format multiligne. équivalent à spécifier: esc_ctrl, esc_msb, sep_multiline, space_eq, lname et align.
esc_2253 Échappe les caractères spéciaux (,+"‹› ;#) requis par la rfc2253
esc_ctrl Échappe les caractères de contrôle d’échappement
esc_msb Echappe les caractères avec le MSB mis, c’est à dire les valeurs ASCII › 127
use_quote Échappe certains caractères en les plaçant entre "" au lieu de \
utf8 Convertit toutes les chaînes en UTF8
no_type Ne tente pas d’interpréter les caractères multi-octets
show_type Affiche le type de chaîne caractère ASN1
dump_der Dump en encodé DER les champs qui doivent être dumpé en hexa
dump_nostr Dump les types de chaînes non caractères
dump_all Dump tous les champs
dump_unknown Dump les champs dont l’OID n’est pas reconnus par openssl
sep_comma_plus
sep_comma_plus_space
sep_semi_plus_space
sep_multiline Déterminent les séparateurs de champs
dn_rev Renverse les champs d’un DN
nofname
sname
lname
oid Altère la manière dont le nom des champs est affiché
align Aligne les valeurs de champs
space_eq Met des espace autour du caractère ’=’

Options de texte

compatible Utiliser l’ancien formats, équivalent à ne spécifier aucune option de sortie
no_header N’affiche pas les en-têtes
no_version N’affiche pas le numéro de version
no_serial N’affiche pas le numéro de série
no_signame N’affiche pas l’algorithme de signature utilisé
no_validity N’affiche pas la validité
no_subject N’affiche pas le sujet
no_issuer N’affiche pas l’issuer
no_pubkey N’affiche pas la clé publique
no_sigdump Ne dump par la signature du certificat
no_aux N’affiche pas les informations de trust du certificat
no_extensions N’affiche pas les extensions X509v3
ext_default Tente d’afficher les extensions de certificat non supportés
ext_error Affiche une erreur pour les extensions de certificat non supportés
ext_parse Parse en ASN1 les extensions non supportés
ext_dump Dumps en hexa les extensions non supportés
ca_default Valeur utilisé par l’utilitaire ca. equivalent à o_issuer, no_pubkey, no_header, no_version, no_sigdump et no_signame

Exemples

Afficher le contenu d’un certificat:
openssl x509 -in cert.pem -noout -text
Afficher le numérode série d’un certificat:
openssl x509 -in cert.pem -noout -serial
Affiche le sujet d’un certificat:
openssl x509 -in cert.pem -noout -subject
Afficher le sujet du certificat sous la forme RFC2253:
openssl x509 -in cert.pem -noout -subject -nameopt RFC2253
Afficher le sujet du certificat en une ligne et en utf8:
openssl x509 -in cert.pem -noout -subject -nameopt oneline,-esc_msb
Affiche l’empreinte MD5 du certificat:
openssl x509 -in cert.pem -noout -fingerprint
Affiche l’empreinte SHA1 du certificat:
openssl x509 -sha1 -in cert.pem -noout -fingerprint
Convertir un certificat PEM en DER:
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
Convertit un certificat en requête:
openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem
Convertit une requête en un certificat auto-signé utilisant des extensions:
openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca -signkey key.pem -out cacert.pem
Signer une requête en utilisant le certificat d’un CA et en ajoutant des extensions utilisateur:
openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr -CA cacert.pem -CAkey key.pem -CAcreateserial
Définis un certificat à truster pour un client SSL et changer son alias en "Steve’s Class 1 CA":
openssl x509 -in cert.pem -addtrust clientAuth -setalias "Steve’s Class 1 CA" -out trust.pem

Notes

Le format PEM utilise les élements suivants:
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

ou:
-----BEGIN X509 CERTIFICATE-----
-----END X509 CERTIFICATE-----

Les certificats trustés auronts les lignes:
-----BEGIN TRUSTED CERTIFICATE-----
-----END TRUSTED CERTIFICATE-----

Extensions de certificat

   l’option -purpose vérifie les extensions de certificat et détermine l’utilisation du certificat.

basicContraints (Bool)Cette extension est utilisé pour déterminer si le certificat peut être utilisé comme CA.
keyUsage Cette extension contient des restrictions sur l’utilisation du certificat. Un certificat CA doit avoir le but keyCertSign mis si cette extension est présente.

Description de chaque tests

SSL Client L’extension d’utilisation de clé doit être absent ou inclure l’OID web client authentication. keyUsage doit être absent ou avoir le bit digitalSignature mis.
SSL Client CA L’extension d’utilisation de clé doit être absent ou inclure l’OID web client authentication.
SSL Server L’extension d’utilisation de clé doit être absent ou inclure l’OID web server authentication et/ou un OID SGC. keyUsage doit être absent ou avoir le bit digitalSignature et/ou keyEncipherment mis.
SSL Server CA L’extension d’utilisation de clé doit être absent ou inclure l’OID web server authentication et/ou un OID SGC.
Netscape SSL Server Pour que les clients Netscape se connectent à un serveur SSL il doitavoir le bit keyEncipherment mis si keyUsage est présent
Common S/MIME Client Tests L’extension d’utilisation de clé doit être absent ou inclure l’OID email protection.
S/MIME Signing idem, et test le bit digitalSignature sur keyUsage est présent
S/MIME Encryption idem et test le bit keyEncipherment sur keyUsage est présent
S/MIME CA L’extension d’utilisation de clé doit être absent ou inclure l’OID email protection.
CRL Signing KeyUsage doit être absent ou avoir le bit CRL Signing mis.
CRL Signing CA Test normal CA, excepté que l’extention basicContraints ne doit pas être présent
^
15 avril 2013

htmlpdflatexmanmd




OpenSSL - x509v3_config

OpenSSL - x509v3_config

Format de configuration des extensions de certificat X509 v3

   Le format est le suivant:

  extension_name=[critical,] extension_options

  Si critical est présent, l’extension est critique. Il y’a 4 types d’extension: chaînes, multi-valué, raw, et arbitraire.

exemple chaîne:
nsComment="This is a Comment"
exemple multi-valué:
basicConstraints=critical,CA:true,pathlen:1
variante d’un multivalué:
basicConstraints=critical,@bs_section
[bs_section]
CA=true
pathlen=1

Extensions standard

Contraintes de base Extension multi-valué qui indique si un certificat est un certificat de CA


basicConstraints=CA:TRUE
basicConstraints=CA:FALSE
basicConstraints=critical,CA:TRUE, pathlen:0

   Un certificat de CA doit avoir basicContraints à TRUE et optionnellement un pathlen qui indique le nombre maximum de CA qui peut apparaitre sous celle-ci dans une chaîne. A 0, peut seulement signer des certificats finaux.

Utilisation de clé Extension multi-valué consistant d’une liste de noms d’utilisation de clé permis Les noms supportés sont : digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign, cRLSign, encipherOnly et decipherOnly.

exemple:
keyUsage=digitalSignature, nonRepudiation
keyUsage=critical, keyCertSign

Utilisation de clé étendue Consiste en une liste d’utilisation indiquant l’utilisation de la clé publique. Peut être un nom court, ou un OID:

Value Meaning
----- -------
serverAuth SSL/TLS Web Server Authentication.
clientAuth SSL/TLS Web Client Authentication.
codeSigning Code signing.
emailProtection E-mail Protection (S/MIME).
timeStamping Trusted Timestamping
msCodeInd Microsoft Individual Code Signing (authenticode)
msCodeCom Microsoft Commercial Code Signing (authenticode)
msCTLSign Microsoft Trust List Signing
msSGC Microsoft Server Gated Crypto
msEFS Microsoft Encrypted File System
nsSGC Netscape Server Gated Crypto

exemple:
extendedKeyUsage=critical,codeSigning,1.2.3.4
extendedKeyUsage=nsSGC,msSGC

Identifiant de clé du sujet Extention de type chaîne qui prend 2 valeurs : hash qui suit la rfc3280 ou une chaîne hexa donnant la valeur de l’extension à inclure

exemple:
subjectKeyIdentifier=hash

Identifiant de clé d’autorité Permet 2 options, keyid et issuer et peuvent prendre optionnellement la valeur always

           Avec keyid, tente de copier le subject key identifier depuis le certificat parent. Avec always, une erreur est retourné si l’option échoue.

  avec issuer, copie l’issuer et le numéro de série de l’issuer

exemple:
authorityKeyIdentifier=keyid,issuer

Subject Alternative Name L’extention subjectAltName permet d’inclure divers valeurs : email, URI, DNS, RID (ID:Object Identitifer), IP, dirName (un DN) et otherName.

        email contient une options spécial ’copy’ qui inclus automatiquement les emails contenus dans le sujet dans l’extension
        dirName devrait pointer vers une section contenant un DN à utiliser.
        otherName peut inclure des données arbitraires associées avec un OID

exemple:
subjectAltName=email:copy,email:my@other.address,URI :http://my.url.here/
subjectAltName=IP:192.168.7.1
subjectAltName=IP:13::17
subjectAltName=email:my@other.address,RID:1.2.3.4
subjectAltName=otherName:1.2.3.4;UTF8:some other identifier
    
subjectAltName=dirName:dir_sect
    
[dir_sect]
C=UK
O=My Organization
OU=My Unit
CN=My Name

Issuer Alternative Name Supporte toutes les options litéral de subjectAltName. Il ne supporte pas l’option mail:copy. Il supporte issuer:copy qui copie tous les subjectAltName du certificat de l’issuer

exemple:
issuerAltName = issuer:copy

Authority Info Access Extension d’accès aux informations de l’authorité donne des détails sur la mannière d’accéder à certaines informations lié à la CA. la syntaxe est accessOID;location, où location a la même syntaxe qu’un subjectAltName (excepté email:copy) accessOID peut être un OID valide mais seul certaines valeurs ont une signification, par exemple OCSP et calssuers

exemple:
authorityInfoAccess = OCSP;URI:http://ocsp.my.host/
authorityInfoAccess = caIssuers;URI:http://my.ca/ca.html

Point de distribution de CRL Extension multi-valuée qui peut être un nom:valeur utilisant la même forme qu’un subjectAltName

   Dans le cas d’une simple option, la section indiquée contient les valeurs pour chaque champs. dans cette section:

  Si le nom est fullname la valeur devrait contenir le nom complet du point de distribution dans le même format que subjectAltName.

  Si le nom est relativename, la valeur devrait contenir un nom de section dont le contenu représente un DN

  Le nom CRLIssuer devrait contenir une valeur pour ce champ au format subjectAltName

  Si le nom est reasons, la valeur devrait consister en un champ contenant les raisons: keyCompromise, CACompromise, affiliationChanged, superseded, cessationOfOperation, certificateHold, privilegeWithdrawn, AACompromise.

exemple:
crlDistributionPoints=URI:http://myhost.com/myca.crl
crlDistributionPoints=URI:http://my.com/my.crl,URI:http://oth...
crlDistributionPoints=crldistpoint1_section
    
[crldistpoint1_section]
fullname=URI:http://myhost.com/myca.crl
CRLissuer=dirName:issuer_sect
reasons=keyCompromise, CACompromise
    
[issuer_sect]
C=UK
O=Organisation
CN=Some Name

Issuing Distribution Point Devrait seulement apparaître dans les CRL. Extension multi-valuée dont la syntaxe est similaire à la section pointé par l’extension de point de distribution de CRL avec quelques différences

   Les noms reasons et CRLIssuer ne sont pas reconnus

  Le nom onlysomereasons est accepté. La valeur est au même format que le champ reasons des crlDistributionPoints. Les noms onlyuser, onlyCA, onlyAA et indirectCRL sont aussi acceptés et sont des booléen.

exemple:
issuingDistributionPoint=critical, @idp_section
[idp_section]
fullname=URI:http://myhost.com/myca.crl
indirectCRL=TRUE
onlysomereasons=keyCompromise,CACompromise
[issuer_sect]
C=UK
O=Organisation
CN=Some Name

Certificate Policies Extension raw

Si on suit la recommandation PKIX, en utilisant des OID:
certificatePolicies= 1.2.4.5, 1.1.3.4

   Si on inclus des qualifiers, les OID de stratégie et les qualifieurs doivent être spécifiés dans une section séparée (sous la forme @section) La section référée doit inclure l’OID de stratégie en utilisant policyIdentifier. les qualifiers cPSuri peuvent être inclus avec cette syntaxe:


CPS.nnn=value

les qualifiers userNotice peuvent être définis avec:
userNotice.nnn=@notice

   Cette section peut inclure explicitText, organization et noticeNumbers.

exemple:
certificatePolicies=ia5org,1.2.3.4,1.5.6.7.8,@polsect
[polsect]
policyIdentifier = 1.3.5.8
CPS.1="http://my.host.name/";
CPS.2="http://my.your.name/";
userNotice.1=@notice
[notice]
explicitText="Explicit Text Here"
organization="Organisation Name"
noticeNumbers=1,2,3,4

   Si userNotice est utilisé avec IE5, il faut l’option ia5org avant pour modifier l’encodage. Cette options modifie le type de champs organization dans la rfc2459, il peut seulement être de type DisplayText. Dans la rfc3280 IA5String est aussi permis.

Policy Constraints Extension multivaluée consistant de nom requireExplicitPolicy ou inhibitPolicyMapping et une valeur entière non négative Au moins un composant doit être présent.

exemple:
policyConstraints = requireExplicitPolicy:3

Inhibit Any Policy Extension chaîne consistant de valeurs non négatives

exemple:
inhibitAnyPolicy = 2

Name Constraints Extension multi-valuée. Le nom devrait commencer avec le mot permitted ou excluded, suivi par un ';' le reste suivi la syntaxe subjectAltName excepté email:copy et IP

exemple:
nameConstraints=permitted;IP:192.168.0.0/255.255.0.0
nameConstraints=permitted;email:.somedomain.com
nameConstraints=excluded;email:.com
issuingDistributionPoint = idp_section

OCSP No Check Extension chaîne, mais sa valeur est ignored

exemple:
noCheck = ignored

Extensions arbitraires

   Si une extension n’est pas supportée par OpenSSL, elle doit être encodé en utilisant le format arbitraire. Il est possible d’utiliser ce format pour les extensions connues.

  Il y’a 2 manières d’écrire des extensions de type arbitraire:

Utiliser le mot ASN1 suivi de l’extension en utilisant la même syntaxe que ASN1_generate_nconf(3):
1.2.3.4=critical,ASN1:UTF8String:Some random data
1.2.3.4=ASN1:SEQUENCE:seq_sect
[seq_sect]
field1 = UTF8:field1
field2 = UTF8:field2

Utiliser le mot DER pour inclure les donnée brutes:
1.2.3.4=critical,DER:01:02:03:04
1.2.3.4=DER:01020304

La valeur après DER est un dump DER d’une extension. Une extension peut être placée dans cette forme pour remplacer le mode par défaut :
basicConstraints=critical,DER:00:01:02:03

Notes

Si une extension est multi-valué et un champs doit contenir un ',', la forme longue doit être utilisée sinon le séparateur sera mal interprété:
subjectAltName=URI:ldap://somehost.com/CN=foo,OU=bar


va produire une erreur, mais ceci est valide:
subjectAltName=@subject_alt_section
[subject_alt_section]
subjectAltName=URI:ldap://somehost.com/CN=foo,OU=bar

Due à la librairie conf, le même nom de champ ne peut se trouver qu’une seul fois. Celà signifie que:
subjectAltName=@alt_section
[alt_section]
email=steve@here
email=steve@there

Va seulement reconnaître la dernière valeur, alors que ceci reconnaîtra toutes les valeurs:
[alt_section]
email.1=steve@here
email.2=steve@there

^
12 février 2012

htmlpdflatexmanmd




pam_pkcs11

pam_pkcs11

Module PAM d'authentification via une librairie PKCS #11

   Module PAM pour faire de l'authentification au moyen d'un certificat X509 au travers d'une librairie PKCS #11. Pour la vérification des certificats utilisateurs, le certificat de l'autorité stocké localement et la CRL en ligne ou locale sont utilisés. Les modules PKCS #11 doivent remplir les prérequis de RSA Asymmetric Client Signing Profil. Pour permettre au propriétaire d'un certificat de se connecter, pam_pkcs11 utilise des modules appelés des mappers, qui effectuent des mappages cert-to-login.

Configurer le package

1. créer le répertoire de base /etc/pam_pkcs11/
2. Copier ${base}/etc/pam_pkcs11.conf.example dans /etc/pam_pkcs11/ et le renommer en /etc/pam_pkcs11/pam-pkcs11.conf
3. créer /etc/pam_pkcs11/crls/ et /etc/pam_pkcs11/cacerts/. Le répertoire tools/ fournis un outil pkcs11_make_hask_link qui peut être utilisé pour créer les fichiers de hash pour chaque fichier certificat et crl valide.
4. Choisir un ou plusieurs mappers à installer, les configurer.
5. Éditer et configurer /etc/pam.d/xxx
6. Utiliser pkcs11_inspect et pklogin_finder pour voir si vous pouvez lire le certificat et effectuer un mappage correct
7. tester un login.

Configurer pam_pkcs11

la configuration de pam-pkcs11 se fait en 2 étapes:
1. configurer pam-pkcs11
2. Configurer les options PAM.

Vous devez connaître

- quel module PKCS #11 vous allez utiliser, et son fichier
- quels mappers vous voulez et comment le créer et l'éditer
- Les fichiers de l'authorité de certification et le fichier de révocation
- Une liste d'utilisateurs autorisés à se connecter, et leur certificats correspondant.

Spécifier la CRL et la CA

   pam-pkcs11 a besoin d'une liste d'authorité de certification reconnue pour valider l'utilisateur. Celà s'applique également à la CRL :

1. Créer les répertoire ca_dir et crl_dir en accord avec le fichier de configuration
2. Copier les certificats de la CA au format DER ou PEM
3. Créer un hash link vers les certificats CA, fournis avec pkcs11_make_hash_link. Noter que openSSL doit être installé :
cd /etc/pam_pkcs11/cacerts
/usr/bin/pkcs11_make_hash_link
4. Répéter la procédure pour la CRL
5. Sélectionner la stratégie de vérification de certificat (cert_policy)

   NOTE : Du à des limitations de librairie OpenSSL, les certificats de la CA doivent résider dans le système de fichier local.

Un fichier de map a la syntaxe suivante:
Certificate1 data -› login1
Certificate2 data -› login2
Certificate3 data -› login3
Ce fichier est parsé du début àla fin et la première occurence qui match est retournée.

Configuration PAM

   Configurer les fichiers pam.d

  auth sufficient pam_pkcs11.so ...

OPTIONS

debug mode debug
err_display_time Secondes à attendre après un message d'erreur pour lire le message
config_file Spécifier le fichier de configuration (défaut : /etc/pam_pkcs11/pam_pkcs11.conf)
nullok Autorise les mots de passe vide
use_first_pass Ne demande pas le mot de passe à l'utilisateur, mais le prend depuis le PAM_items.
try_first_pass Ne demande pas le mot de passe à l'utilisateur à moins que PAM_(OLD)AUTHOK ne soit pas mis.
use_authok Comme try_first_pass mais échoue si le nouveau PAM_AUTHOK n'a pas été précédemment mis.
pkcs11_module=‹file› Nom de fichier du module PKCS11 (défaut : /etc/pam_pkcs11/pkcs11_module.so)
slot_num=‹nb› Numéro de slot à utiliser (défaut = 0 = utiliser le premier slot disponible)
ca_dir=‹path› Répertoire contenant les certificats CA (défault : /etc/pam_pkcs11/cacerts/)
crl_dir=‹path› Répertoire contenant la CRL (défault : /etc/pam_pkcs11/crls/)
cert_policy=none, ca, signature, crl_online, crl_offline, crl_auto Spécifier la stratégie de vérification par défaut.

Utiliser la fonction d'auto-détection de LOGIN

   Depuis pam-pkcs11-0.4.2 pam-pkcs11 peut déduire le username depuis le certificat utilisateur sans utiliser le login prompt.

  Quand pam_get_user() retourne null ou une chaîne vide, pam-pkcs11 va alors utiliser la fonction ’find’ du mapper au lieu du match normal. Si le finder retourne un succès, le username est définit avec pam_set_item(PAM_USER) et PAM_AUTH_OK est retourné.

Il y’a 2 manières d’utiliser cette fonctionnalité :
a. Patcher gdm et login pour détecter la présence d’un carte et retourner null comme nom d’utilisateur
b. Utiliser une version non patchée et entrée un espace pour login et entrée pour gdm.
^
12 février 2012

htmlpdflatexmanmd




pam_pkcs11.conf

pam_pkcs11.conf

fichier de configuration pour pam_pkcs11

   Le fichier de configuration utilise la librairie scconf. Les paramètres et données sont groupées dans des blocks. ils peuvent être imbriqués.

Un fichier de configuration pam_pkcs11 ressemble à:
pam-pkcs11
    global options
    [...]
    use_pkcs11_module = pkcs11 module to be used
    pkcs11_module module1 {
        module1 specific options
    }
    pkcs11_module module2 {
        module2 specific options
    }
    [...]
    use_mappers = mapper1, mapper2,... ;
    mapper mapper1 {
        mapper1 specific options
    }
    mapper mapper2 {
        mapper2 specific options
    }
    [...]
    mapper mapperN {
        mapperN specific options
    }
}

Exemple de fichier pam_pkcs11.conf
pam_pkcs11 {
    nullok = true ; # Allow empty passwords
debug = true ; # Enable debugging support.
    use_first_pass = false ; # Do not prompt for the passwords but take them from the PAM_ items instead
    try_first_pass = false ; # Do not prompt for the passwords unless PAM_(OLD)AUTHTOK is unset.
    use_authtok = false ; # Like try_first_pass, but fail if the new PAM_AUTHTOK has not been previously set (intended for stacking password modules only).
    use_pkcs11_module = opensc ; # Filename of the PKCS #11 module. The default value is "default"
    
pkcs11_module opensc {
    module = /usr/lib/opensc-pkcs11.so ;
    description = "OpenSC PKCS#11 module" ;
    slot_description = "none" ; # spécifier le slot à utiliser. préférer cette option à slot_num.
    # slot_num = 0 ; # spécifier soit slot_description, soit slot_num.
    ca_dir = /etc/pam_pkcs11/cacerts ; # répertoire contenant les certificats de l’autorité au format pem ou asn1 oui des liens hash.
    crl_dir = /etc/pam_pkcs11/crls ; # répertoire contenant la CRL offline
    support_threads = false ; # certaines librairies supportent le multi-thread
    cert_policy = ca,signature ; # définis la vérification de certificat
    # none aucune vérification
    # ca vérfication de la CA
    # crl_online télécharge la CRL
    # crl_offline utilise la crl offline
    # crl_auto tente d’abord la online, puis la offline
    # signature vérifie la signature
    token_type = "Smart card" ; # spécifie le type de token. sera utilisé dans le message de prompt.
    pkcs11_module etoken { # Aladdin eTokenPRO 32
        module = /usr/local/lib/libetpkcs11.so
        description = "Aladdin eTokenPRO-32" ;
    
        slot_num = 0 ;
        support_threads = true ;
        ca_dir = /etc/pam_pkcs11/cacerts ;
        crl_dir = /etc/pam_pkcs11/crls ;
        cert_policy = ca,signature ;
    }
    pkcs11_module nss { # NSS (Network Security Service) config
        nss_dir = /etc/ssl/nssdb ;
        crl_policy = none ;
    }
    pkcs11_module default { # Default pkcs11 module
        module = @libdir@/pam_pkcs11/pkcs11_module.so ;
        description = "Default pkcs#11 module" ;
        slot_num = 0 ;
        support_threads = false ;
        ca_dir = /etc/pam_pkcs11/cacerts ;
        crl_dir = /etc/pam_pkcs11/crls ;
        cert_policy = none ;
    }
    use_mappers = digest, cn, pwent, uid, mail, subject, null ;    # spécifie les mappers à utiliser:
        # subject    Sujet du certificat
        # pwent     CN ou gecos
        # ldap        mapper LDAP
        # opensc    Cherche le certificat dans ${HOME}/.eid/authorized_certificates
        # openssh    Cherche la clé public du certificat dans ${HOME}/.ssh/authorized_keys
        # mail        compare le champs email du certificat
        # ms        Utilise l’UPN
        # krb        Compare avec le Kerberos Principal Name
        # cn        Compare le CN
        # uid        Compare l’UID
        # digest    Certificat Digest
        # generic    Contenu définis par l’utilisateur
        # null        blind access/deny mapper
    mapper_search_path = @libdir@/pam_pkcs11 ;    # chemin des module mapper.
    mapper subject {                # Mapper le sujet du certificat pour le login, fournis dans un fichier sous la forme "Subject -› login"
        debug = false ;
        #module = @libdir@/pam_pkcs11/subject_mapper.so ;
        module = internal ;
        ignorecase = false ;
        mapfile = file :///etc/pam_pkcs11/subject_mapping ;
    }
    mapper pwent {                # map le CN à getpwent()
        debug = false ;
        ignorecase = false ;
        module = internal ;
        #module = @libdir@/pam_pkcs11/pwent_mapper.so ;
    }
    mapper ldap {                # mapper d’annuaire
        debug = false ;
        module = @libdir@/pam_pkcs11/ldap_mapper.so ;
        ldaphost = "" ;                 # fqdn du serveur ldap (utilise l’URI ldap pour en spécifier plusieurs)
        ldapport = ;                 # port du serveur ldap s’il n’est pas donné dans l’URI
        URI = "" ;                # list d’URI utilisés dans l’ordre
        scope = 2 ;                 # scope de recherche : 0 (base), 1 (one), 2 (sub)
        binddn = "cn=pam,o=example,c=com" ;     # DN du bind. doit avoir un accès en lecture
        passwd = "" ;                 # password du binddn
        base = "ou=People,o=example,c=com" ;    # base de recherche
        attribute = "userCertificate" ;        # attribut qui contient le certificat
        filter = "(&(objectClass=posixAccount)(uid=%s))" # Filtre de recherche pour les entrées utilisateurs ( doit seulement laisser passer l’entrée pour le login utilisateur )
        ssl = tls                # off (désactiver), tls (activer tls), on|ssl (activer ssl)
        tls_randfile =                 # chemin de la source entropie
        tls_cacertfile = /etc/ssl/cacert.pem    # Chemin vers le certification pour l’authentification du pair
        tls_cacertdir =                # Répertoire contenant les certificats X509 pour l’authentification du pair
        tls_checkpeer = 0            # 0 ou 1. spécifie de vérifier le certificat.
        tls_ciphers =                 # Chiffrement à utiliser
        tls_cert = ...                # Chemin du fichier contenant le certificat local pour l’authentification TLS client
        tls_key = ...                # Chemin du fichier contenant la clé privée pour l’authentification TLS client
    }
    mapper opensc {                 # recherche les certificats depuis $HOME/.eid/autorized_certificates qui match l’utilisateur
        debug = false ;
        module = @libdir@/pam_pkcs11/opensc_mapper.so ;
    }
    mapper openssh {                # Cherche les clés publique dans $HOME/.ssh/authorized_keys qui match l’utilisateur
        debug = false ;
        module = @libdir@/pam_pkcs11/openssh_mapper.so ;
    }
    mapper mail {                # Compare le champ email du certificat
        debug = false ;
        module = internal ;
        # module = @libdir@/pam_pkcs11/mail_mapper.so ;
        mapfile = file :///etc/pam_pkcs11/mail_mapping ;    # Déclarer un fichier de map, ’empty’ ou vide pour ne pas utiliser de fichier de map
        ignorecase = true ;            # ignorer la casse
        ignoredomain = false ;            # Vérifie le domaine mx. en utilisant un fichier de map, cette option est ignorée.
    }
    mapper ms {                    # utilise l’UPN (login@AD_domain)
        debug = false ;
        module = internal ;
        # module = @libdir@/pam_pkcs11/ms_mapper.so ;
        ignorecase = false ;
        ignoredomain = false ;
        domain = "domain.com" ;
    }
    mapper krb {                # Compare avec le principal kerberos
        debug = false ;
        module = internal ;
        # module = @libdir@/pam_pkcs11/krb_mapper.so ;
        ignorecase = false ;
        mapfile = "none" ;
    }
    mapper cn {                    # le CN est le login
        debug = false ;
        module = internal ;
        # module = @libdir@/pam_pkcs11/cn_mapper.so ;
        ignorecase = true ;
        # mapfile = file :///etc/pam_pkcs11/cn_map ;
        mapfile = "none" ;
    }
    mapper uid {                # l’uid (s’il existe) est le login
        debug = false ;
        module = internal ;
        # module = @libdir@/pam_pkcs11/uid_mapper.so ;
        ignorecase = false ;
        mapfile = "none" ;
    }
    mapper digest {                # Evalue le digest du certificat et le map dans un fichier
        debug = false ;
        module = internal ;
        # module = @libdir@/pam_pkcs11/digest_mapper.so ;
        algorithm = "sha1" ;             # Algorithme utilisé pour évaluer le digest ("null","md2","md4","md5","sha","sha1","dss","dss1","ripemd160")
        mapfile = file :///etc/pam_pkcs11/digest_mapping ;
        # mapfile = "none" ;
    }
    mapper generic {                # mapper de contenu générique
        debug = true ;
        #module = @libdir@/pam_pkcs11/generic_mapper.so ;
        module = internal ;
        ignorecase = false ;            # ignirer la casse
        cert_item = cn ;             # ( "cn" , "subject" , "kpn" , "email" , "upn" ou "uid" )
        mapfile = file :///etc/pam_pkcs11/generic_mapping ;
        use_getpwent = false ;            # utiliser petpwent() pour mapper le login
    }
    mapper null {                # Pas de mappage. Quand un utilisateur match à NULL ou nobody
        debug = false ;
        # module = @libdir@/pam_pkcs11/null_mapper.so ;
        module = internal ;
        default_match = false ;            # match toujours (true) ou échoue toujours (false)
        default_user = nobody ;            # en cas de match, retourner cet utilisateur
    }
}

^
13 février 2012

htmlpdflatexmanmd




pcscd

pcscd

Service PC/SC pour pcsclite et le framework MuscleCard

   Service PC/SC pour pcsclite et le framework MuscleCard. C’est un gestionnaire de ressource qui coordonne les communications entre les lecteur de cartes et les cartes et tokens connectés au système.

  Les pilotes de lecteur de carte série sont dans /usr/lib/pcsc/drivers. pcscd localise les pilotes en utilisant /var/lib/pcscd/reader.conf (les pilotes sont disponibles à http://www.musclecard.com/drivers.html)

  Les pilotes USB sont placés dans /usr/lib/pcscd/drivers. Vous ne devriez pas ajouter de pilote USB dans reader.conf.

Fichiers

/var/lib/pcscd/reader.conf: Fichier de configuration des lecteurs
/var/run/pcscd/pcscd.pid: process id
/usr/lib/pcsc/drivers: Répertoire des pilotes usb.

OPTIONS

-a, --apdu log les APDU et SW en utilisant la méthode de debug
-c, --config Spécifie le fichier alternatif à /var/lib/pcscd/reader.conf
-f, --foreground Ne lance pas en tâche de fond et envoie les mesage sur stderr au lieu de syslog
-d, --debug Niveau de debug
--info Utilise le niveau de log info (mode par défaut)
--error Utilise le niveau de log error
--critical Utilise le niveau de log critical
-H, --hotplug Demande à pcscd de rescanner les bus USB et relire /var/lib/pcscd/reader.conf pour détecter les lecteurs non-USB.
^
13 février 2012

htmlpdflatexmanmd




pcsc_scan

pcsc_scan

Scanner les lecteurs de carte

   Scan les lecteurs de carte à interval régulier. Il demande à pcscd la liste des lecteurs disponible. Quand une carte est insérée, il affiche diverses informations:

  Date et heure, nom du lecteur, état de la carte et évènements, ATR de la carte à l’insertion et analyse si la commande ATR_analysis est disponible

OPTIONS

-n  N’effectue pas d’analyse ATR.
^
05 mars 2012

htmlpdflatexmanmd




PKCS#1

PKCS#1

RSA Cryptography Standard

   RSA (Rivest Shamir Adleman) est un algorithme asymétrique.

Génération des clés

Pour calculer une paire de clé privée/publique RSA, l’algorithme s’appuie sur 2 nombres premiers, p et q. Une fois ces 2 nombres déterminés, on obtient 2 nombres:
n = p x q
z = ( p - 1 ) x ( q - 1 )
On calcul ensuite l’indicatrice d’Euler e de z (inférieur à z), qui doit nécessairement être premier avec z:
d = e-1 mod((p - 1)(q - 1))

   le couple (n,e) est la clé publique, le couple (n,d) est la clé privée. Une fois e, d et n caclulés, il faut détruire p, q, et z pour des raisons évidentes de sécurité. La clé privée est généralement chiffrée avec un algorithme symmetrique pour la conserver de façon sûre.

Chiffrement et déchiffrement

Pour chiffrer un nombre, il faut le mettre à la puissance de e. Le reste modulo n représente le nombre chiffré:
c = te mod n
pour déchiffrer, on utilise la même opération, mais à la puissance d:
t = cd mod n
exemple simple utilisant de petits nombres:
pour chiffrer le texte suivant: "Hello World", on choisis p = 37 et q = 43.
on déduit :
n = 37 x 43 = 1591
z = 36 x 42 = 1512
on choisit e = 19, premier avec 1512. L’inverse de 19 modulo 1512 est d = 955.
pour chiffrer chaque caractère:
Hello World = 72 101 108 108 111 32 87 111 114 108 100


H___e___l___l___o___ ___W___o___r___l___d
72__101_108_108_111_32__87__111_114_108_100

on caclule chaque caractère avec:
7219 [1591] = 335 ; 10119 [1591] = 1174 ; etc…


72____101____108____108____111___32____87____111___114___108____100
335___1174___1329___1329___703___930___431___703___632___1329___396

On déchiffre avec:
335955 [1591] = 72 ; 1174955 [1591] = 101 ; etc…

Notes

   Plusieurs techniques permettent de déchiffrer ou déduire la clé privée:

- si p et q sont trop petits, un brute force ne prend que très peu de temps à déterminer la clé privée. il faut donc choisir des valeures très grandes (minimum 1024 bits)
- Le chiffrement par caractère comme dans l’exemple ci-dessus, peut être cassé en déterminant la fréquence des octets (analyse fréquentielle). Il est préférable de chiffrer un bloc d’octets.
- n ne doit pas être inférieur au bloc d’octets à chiffrer, sinon plusieurs valeurs initiales peuvent donner le même nombre chiffré, donnant des erreurs au déchiffrement.
- on peut déterminer la taille d’une clé privée en déterminant le temps que prend le déchiffrement d’un message. Toute la sécurité RSA repose sur le temp nécessaire pour calculer p et q à partir de n.
^
15 février 2012

htmlpdflatexmanmd




pkcs11-data

pkcs11-data

Manipulateur de token accessible via PKCS #11. Il utilise cryptoki

OPTIONS

--verbose Mode verbeux
--add-provider Ajouter un fournisseur PKCS #11. Peut-être spécifié plusieurs fois.
--public objet Data dans la section publique
--prompt-prog Demande l’enregistrement
--token-wait Attend jusqu’à ce que le token soit inséré
--cmd=tokens Liste les token disponibles
--cmd=list Liste les objets

        --token= Id du token

--cmd=export Exporter un objet

        [--token=] Id du token
        --application= Nom de l’application
        --label Label
        [--file] Fichier cible ou stdout

--cmd=import Importer des objets

        --token= Id du token
        --application= Nom de l’application
        --label Label
        [--file] Fichier source ou stdin

--cmd=remove Supprimer un objet

        --token= Id du token
        --application= Nom de l’application
        --label Label
^
15 février 2012

htmlpdflatexmanmd




pkcs11-dump

pkcs11-dump

Dump le contenu d’un token PKCS #11 sur stdout dans un format lisible

   Les types supportés sont:

CKO_DATA
CKO_CERTIFICATE
CKO_PUBLIC_KEY
CKO_PRIVATE_KEY
CKO_SECRET_KEY
CKO_HW_FEATURE
CKO_DOMAIN_PARAMETERS
CKO_MECHANISM
CKO_VENDOR_DEFINED

OPTIONS

info
slotlist
dump
^
15 février 2012

htmlpdflatexmanmd




pkcs11-listcerts

pkcs11-listcerts

Lister les certificats PKCS#11 d’une carte à puce

OPTIONS

debug mode debug
^
15 février 2012

htmlpdflatexmanmd




pkcs11-tool

pkcs11-tool

Utilitaire pour gérer et utiliser les token de sécurité PKCS#11. Il permet de gérer et les objets sur les cartes à puce, lister et lire le PIN, clés et certificats stockés

OPTIONS

--login, -l Authentifie le token avant d’effectuer d’autres opérations.
--pin, -p Utilise le pin donné pour les opérations.
--so-pin Utilise le pin donné comme Security Officer PIN (doit être utilisé avec --label)
--init-token Initialise un token : défini son label et le Security Officer PIN
--init-pin Initialise le PIN de l’utilisateur
--change-pin, -c Change le pin de l’utilisateur
--test, -t Effectue des tests sur le token
--show-info, -I Affiche les informations générale sur le token
--list-slots, -L Affiche une liste de slots disponible sur le token
--list-mechanisms, -M Affiche une liste de mécanismes supportés par le token
--list-objects, -O Affiche la liste des objets
--sign, -s Signe des données
--hash, -h Hash des données
--mechanism, -m Utilise le mécanisme spécifié pour les opérations du token
--keypairgen, -k Génère une nouvelle pair de clé
--write-object, -w Écrit une clé ou un certificat dans le token
--type, -y Spécifie le type d’objet sur lequel opérer (cert, privkey, pubkey)
--id, -d Spécifie l’id de l’objet sur lequel opérer
--label, -a Spécifie le nom de l’objet sur lequel opérer
--slot Spécifie l’id du slot à utiliser
--slot-id Spécifie le nom du slot à utiliser
--set-id, -e Définis le CKA_ID de l’objet
--attr-from Extrait les informations du chemin spécifié (certificat DER) et créé les attributs correspondant quand il écrit un objet dans le token. (ex : le sujet du certificat est utilisé pour écrire le CKA_SUBJECT)
--input-file, -i Spécifie le chemin d’un fichier en entrée
--output-file, -o Spécifie le chemin d’un fichier en sortie
--module Spécifie le module pkcs11 à charger
--moz-cert, -z Tester une génération et la requête de pair de clé type mozilla. Spécifier le chemin du fichier du certificat
--verbose, -v mode verbeux
^
15 février 2012

htmlpdflatexmanmd




pkcs11_eventmgr

pkcs11_eventmgr

Identique à card_eventmgr avec quelques améliorations. Il utilise la libraire PKCS #11 au lieu de l’API pcsc-lite, le polling time et le temps d’expiration est en seconde

commandes

[no]debug mode debug
[no]daemon placer en tâche de fond
polling_time=‹s› Temps en secondes entre 2 statuts consécutifs (défaut : 1)
expire_time=‹s› Temps en seconde pour l’évènement expire_time au retrait de la carte (défaut : 0)
config_file=‹file› Fichier de configuration à utiliser (défaut : /etc/pam_pkcs11/pkcs11_eventmgr.conf)
pkcs11_module=‹file› Libraire PKCS #11 à utiliser (défaut : /usr/lib/pkcs11/opensc-pkcs11.so)
^
15 février 2012

htmlpdflatexmanmd




pkcs11_eventmgr.conf

pkcs11_eventmgr.conf

Fichier de configuration pour pkcs11_eventmgr


pkcs11_eventmgr {
    daemon = true ; # lancer en tâche de fond
    debug = false ; # mode debug
    polling_time = 1 ; #polling time en secondes
    expire_time = 0 ; # temps d’expiration en seconde (0 pas d’expiration)
    pkcs11_module = /usr/lib/opensc-pkcs11.so ; # module PKCS #11 à utiliser
    # Liste des évènements et actions
    event card_insert {
        on_error = ignore ;
        action = "/usr/bin/play /usr/share/sounds/warning.wav",
        "/usr/X11R6/bin/xscreensaver-command -deactivate" ;
    }
    event card_remove {
        on_error = ignore ;
        action = "/usr/bin/play /usr/share/sounds/error.wav",
        "/usr/X11R6/bin/xscreensaver-command -lock" ;
    }
    event expire_time {
        on_error = ignore ;
        action = "/bin/false" ;
    }
}

Problèmes de sécurité

   Toutes les commandes des évènements sont exécutées avec les privilèges utilisateur.

  En invoquant setuid et setgid, ces commandes ignorent l’environnement de l’utilisateur et définissent le leur.

  Les actions sont exécutées via execve("/bin/sh","-c","commande",null,environ).
^
15 février 2012

htmlpdflatexmanmd




pkcs11_inspect

pkcs11_inspect

Utilitaire pour explorer des certificats

   Il utilise le même fichier de configuration que pam_pkcs11. Il charge les mappers définis et les utilise pour regarder dans le certificat les entrées requises. Quand un mapper trouve une entrée valide, il la convertit en UTF-8 et l’affiche sur stdout.

OPTIONS

debug mode debug
config_file=‹file› Fichier de configuration (défaut : /etc/pam_pkcs11/pam_pkcs11.conf)
^
15 février 2012

htmlpdflatexmanmd




pkcs11_make_hash_link

pkcs11_make_hash_link

hash symbolique de certificats

   Crée un lien hash symbolique pour chaque certificat CA et chaque CRL dans le répertoire donné

^
15 février 2012

htmlpdflatexmanmd




pkcs11_setup

pkcs11_setup

Affiche tous les certificats

OPTIONS

debug mode debug
list_module liste les modules disponible et configurés dans /etc/pam_pkcs11/pam_pkcs11.conf
use_module Affiche le module utilisé par pam_pkcs11 ou le définis
ins_action[=commande] Affiche les commande exécutées quand la carte est insérée ou définis les commandes
rm_action[=commande] Affiche les commande exécutées quand la carte est retirée ou définis les commandes
^
15 février 2012

htmlpdflatexmanmd




pkcs15-crypt

pkcs15-crypt

Effectuer des opérations crypto en utilisant des cartes pkcs #15

OPTIONS

--sign, -s Signer numériquement une donnée lue depuis un fichier. Le contenu du fichier est le résultat d’une opération de hash md5. Il attend une donnée binaire. Si aucun fichier de sortie n’est spécifié, affiche sur stdout
--pkcs1 pkcs15-crypt attend en entrée des données à la longueur correcte. Cette option force pkcs15-crypt à convertir à la bonne longueur en utilisant pkcs1
--sha-1 Le fichier d’entrée est le résultat d’une opération de hash SHA1 au lieu de md5. (Doit être en représentation binaire)
--decipher, -c Déchiffre le contenu du fichier. le résultat est écrit sur stdout si aucun fichier de sortie n’est spécifié
--key, -k Spécifie l’id de la clé à utiliser
--reader, -r Sélectionne le nième lecteur de carte
--input, -i Spécifie le fichier à utiliser en entrée
--output, -o Spécifie le fichier à utiliser en sortie
--raw, -R Sort les données brut 8bits
--pin, -p Spécifie le PIN si une opération le nécessite
--verbose, -v mode verbeux
^
15 février 2012

htmlpdflatexmanmd




pkcs15-init

pkcs15-init

Utilitaire de personnalisation de carte à puce

   Il permet de créer des structures PKCS #15 sur les cartes à puce, créer des PIN et ajouter des clés et des certificats. Les détails de la structure est contrôlée par des profils.

Utilisation du PIN

   Une carte OpenSC peut avoir un security officer PIN, et 0 ou plusieurs PIN utilisateurs. Généralement, un PIN est une séquence de chiffres, mais certaines cartes acceptent des caractères ascii. Le SO-PIN est spécial, il est utilisé pour protéger les métadonnées sur la carte, tel que la structure PKCS #15 elle-même. Le SO-PIN est optionnel. Pour chaque PIN, vous pouvez spécifier un PUK.

Modes opératoires

  

Initialisation

Première étape de la personnalisation de la carte, et va créer les fichiers de bases sur la carte. Pour créer une structure PKCS #15 (le PIN, le PUK et le SO-PIN sont demandés):
pkcs15-init --create-pkcs15
Si la carte le supporte, vous pouvez également l’effacer avant avec --erase

Installation du PIN de l'utilisateur

Avant d’installer des objets, vous avez besoin d’au moins un PIN pour protéger ces objets (demande le PIN et le PUK):
pkcs15-init --store-pin --id " nn
Où nn est un ID PKCS #15 en notation hexadécimal. Les valeurs communes sont 01, 02, etc.

Génération de clé

Pour générer une nouvelle clé et la stocker:
pkcs15-init --generate-key " keyspec " --auth-id " nn
Où keyspec décrit l’algorithme et la longueur de la clé à créer, tel que rsa/512. Actuellement seul RSA est supporté. nn est l’ID d’un PIN utilisateur
Cela va stocker la portion privée et publique de la clé. Par défaut, tente d’utiliser la fonctionnalité embarquée de la carte.

Télécharger la clé privée

Vous pouvez utiliser une clé par un autre moyen et la charger dans la carte. Doit être au format PEM, DER, et les certificats pkcs12 et pfx :
pkcs15-init --store-private-key key.pem --id 45 --auth-id 01
L’option --id sert pour définir 2 templates de clé. l’id 45 sert pour l’authentification et l’id 46 pour la non-répudiation.

Télécharger la clé publique

--store-public-key stocke la clé publique. Utiliser --format pour spécifier le format du fichier (PEM par défaut)

Télécharger un certificat

--store-certificat stocke le certificat. Le fichier est supposé être un fichier x.509 au format DER

Télécharger les fichiers pkcs#12

pkcs15-init --store-private-key key.p12 --format pkcs12 --auth-id 01

OPTIONS

--profil, -p Charge le profile général spécifié. Des options peuvent être spécifiées pour ce module en ajoutant un + entre chaque option. ex : pkcs15+onepin
--card-profile, -c Charge l’option de profile de carte spécifié.
--create-pkcs15, -C Crée un structure PKCS #15 sur la carte
--erase-card, -E Efface la carte avant de créer la structure PKCS #15
--generate-key, -G Dit à la carte de générer une nouvelle clé et de la stocker sur la carte, avec l’algorithme/longueur spécifiée
--store-private-key, -S Télécharge la clé privée sur la carte. Crée également un objet clé publique
--store-public-key, -P Télécharge la clé publique sur le certificat
--store-certificate, -X Stocke le certificat sur la carte
--so-pin, --so-puk, --pin, --puk Permet de spécifier les valeurs pour les opérations qui le nécessite
--passphrase Permet de spécifier la passphrase pour débloquer la clé privée
--verbose, -v mode verbeux
--options-file Lit les options additionnelles depuis le fichier spécifié. Ce fichier est supposé contenir une option longue par ligne. (Peut être spécifié plusieurs fois). ex:

        pin frank
        puk zappa
^
15 février 2012

htmlpdflatexmanmd




pkcs15-tool

pkcs15-tool

Utilitaire pour manipuler les structures de données PKCS #15

OPTIONS

--learn-card, -L Met en cache les données du token PKCS #15. Les opérations suivantes sont effectuées sur les données en cache si possible.
--read-certificate, -r Lit le certificat avec l’id spécifié
--list-certificates, -c Liste tous les certificats présent
--list-pins Liste tous les PIN
--change-pin Change un PIN
--unblock-pin, -u Débloque un PIN en utilisant le PUK
--list-keys, -k Listes les clés privées
--list-public-keys Liste toutes les clés publiques
--read-public-key Lit la clé publique avec l’id spécifié
--read-ssh-key Lit la clé publique avec l’id spécifié, affiche dans un format compatible pour $HOME/.ssh/authorized_keys
--output, -o Fichier de sortie
--no-cache Désactive la mise en cache des données
--pin-id, -a Spécifie le PIN à utiliser pour l’opération. Utile avec -change-pin
--reader Utilise le lecteur spécifié par son numéro
--verbose, -v mode verbeux
^
07 mars 2012

htmlpdflatexmanmd




PKCS#3

PKCS#3

Diffie-Hellman Key-Agreement Standard

   L’échange de clé Diffie-Hellman est une méthode par laquelle 2 personnes peuvent se mettre d’accord sur un nombre qu’ils peuvent utiliser pour chiffrer des données.

Exemple

1. 2 utilisateurs A et B choisisent un nombre premier p et une base g: p=23, et g=3
2. L’utilisateur A choisi un nombre secret a=6
3. L’utilisateur A envoie la valeur A = ga [mod p] = 36 [23] = 16
4. L’utilisateur B choisit un nombre secret b=15
5. L’utilisateur B envoie la valeur B = gb [mod p] = 315 [23] = 12
6. L’utilisateur A calcule la clé secrète K : (gb [mod p])a [mod p] = 126 [23] = 9
7. L’utilisateur B calcule la clé secrète K : (ga [mod p])b [mod p] = 1615 [23] = 9

   Il est nécessaire d’utiliser des nombres suffisamment grand pour éviter une attaque par recherche exhaustive.

  Diffie-Hellman est vulnérable aux attaques MITM. Pour parer à cette attaque, on peut signer les échanges avec une paire de clés asymétriques.
^
15 février 2012

htmlpdflatexmanmd




pklogin-finder

pklogin-finder

Trouver des maps Cert-to-login

   Utilisé pour trouver les maps Cert-to-login, en dehors de l’environnement PAM. Peut être utilisé pour créer et tester les maps. Il utilise la même structure de configuration que le module pam-pkcs11. Il lit le certificat et tente tous les mappers spécifiés pour trouver l’utilisateur.

OPTIONS

[no]debug mode debug
config_file=‹file› Fichier de configuration (défaut : /etc/pam_pkcs11/pam_pkcs11.conf)
^
13 février 2012

htmlpdflatexmanmd




reader.conf

reader.conf, reader.conf.d

Fichiers de configuration pour les pilotes des lecteurs pcscd

Syntaxe

   Chaque entrée doit être définie par 4 champs:

FRIENDLYNAME Texte arbitraire pour identifier le lecteur. Affiché par la commande pcsc_scan
DEVICENAME (ifdhandler ›= 3.0). Utilisé pour identifier le port physique sur lequel le lecteur est connecté
LIBPATH Nom du fichier du pilote
CHANNELD (ifdhandler ‹ 3.0). Remplacé par DEVICENAME

Exemples

Gemplus lecteur GemPCTwin avec communication série:
FRIENDLYNAME "GemPCTwin serial"
DEVICENAME /dev/ttyS0
LIBPATH /usr/lib/pcsc/drivers/serial/libccidtwin.so.0.4.1
CHANNELID 1
^
13 février 2012

htmlpdflatexmanmd




smartcard_list.txt

smartcard_list.txt

Correspondance ATR - type de carte

   Ce fichier contient les référence entre un ATR et un type de carte. La liste la plus récente peut être téléchargée à http://ludovic.rousseau.free.fr/softwares/pcsc-tools/smartcard_list.txt

Syntaxe

Pour une association ATR - type de carte:
ATR sous la forme d'une expression régulière
[tab] Texte descriptif
[tab] Texte descriptif
[tab] Texte descriptif
ligne vide
^
13 février 2012

htmlpdflatexmanmd




update-reader.conf

update-reader.conf

Outil pour générer reader.conf

   Outil pour regénérer /etc/reader.conf. Il tente de générer le fichier de configuration depuis les fichiers inclus dans /etc/reader.conf.d/. l’ancienne version est backupée dans /etc/reader.conf.old

OPTIONS

force Si le /etc/reader.conf ne contient pas de tag spécial sur la première ligne, il annule la régénération. Ce paramètre le force à continuer.