je ne suis pas un spécialiste sécurité, mais j'ai dû faire un petit bout d'étude sur la signature de documents en java (mission SSII pour d'autres télédéclarations) et je sais qu'il est possible de signer un document en tout java.
L'obtention d'un certificat se fait de la façon suivante :
1 - une clé privée est générée par le client dans un token cryptographique. Il peut être purement logiciel ou matériel (carte à puce, token usb crypto...)
2 - le client envoie une demande de certificat à une PKI. Cette demande contient un certains nombres d'information dont le nom du détenteur de la clé et la partie publique de cla clé.
3 - la PKI envoie un certificat (en gros le nom de l'utilisateur et la clé publique tout ça signé) au client qui le stocke.
La DGI veut faire deux choses différentes avec son certificat : faire du SSL avec authentification mutuelle et faire une signature de document (de la déclaration de revenus). Bien sûr on peut signer en java mais le problème c'est l'accès à la clé privée. Si celle-ci se trouve dans les entrailles d'un Windows (c'est le cas pour les gens utilisant IE) il faut appeler l'API Win32, ce n'est pas possible en pur java. De même si la clé est sur une carte à puce ou un token crypto il faut du code natif pour accéder aux API du matériel (ex PKCS#11).
Alors oui on pourrait faire sans code natif mais compte tenu des décisions de la DGI (par exemple utiliser un seul certificat pour le SSL et la signature) on ne peut pas pour le moment se passer de code natif.
Si ça a fonctionné l'an dernier il y a peut-être un bug dans le déploiement. Essaie d'envoyer un mail si ça ne s'est pas arrangé quand tu aura reçu ta déclaration.
[^] # Re: Rhaaa pas lovely
Posté par jcs (site web personnel) . En réponse au journal Déclaration d'impot 2007 sur les revenus 2006. Évalué à 3.
Bon je reprends.
L'obtention d'un certificat se fait de la façon suivante :
1 - une clé privée est générée par le client dans un token cryptographique. Il peut être purement logiciel ou matériel (carte à puce, token usb crypto...)
2 - le client envoie une demande de certificat à une PKI. Cette demande contient un certains nombres d'information dont le nom du détenteur de la clé et la partie publique de cla clé.
3 - la PKI envoie un certificat (en gros le nom de l'utilisateur et la clé publique tout ça signé) au client qui le stocke.
La DGI veut faire deux choses différentes avec son certificat : faire du SSL avec authentification mutuelle et faire une signature de document (de la déclaration de revenus). Bien sûr on peut signer en java mais le problème c'est l'accès à la clé privée. Si celle-ci se trouve dans les entrailles d'un Windows (c'est le cas pour les gens utilisant IE) il faut appeler l'API Win32, ce n'est pas possible en pur java. De même si la clé est sur une carte à puce ou un token crypto il faut du code natif pour accéder aux API du matériel (ex PKCS#11).
Alors oui on pourrait faire sans code natif mais compte tenu des décisions de la DGI (par exemple utiliser un seul certificat pour le SSL et la signature) on ne peut pas pour le moment se passer de code natif.
Si ça a fonctionné l'an dernier il y a peut-être un bug dans le déploiement. Essaie d'envoyer un mail si ça ne s'est pas arrangé quand tu aura reçu ta déclaration.