Instalación do DNIe en Linux: Diferenzas entre revisións

De Wiki do Ciclo ASIR do IES de Rodeira
Saltar á navegación Saltar á procura
 
(Non se amosan 21 revisións do historial feitas polo mesmo usuario.)
Liña 14: Liña 14:


'''Examinando se detecta o lector de tarxetas'''
'''Examinando se detecta o lector de tarxetas'''



root@Port-Profes4:/home/usuario# lsusb -t
root@Port-Profes4:/home/usuario# lsusb -t
Liña 37: Liña 36:
Necesitamos ter instaladas as seguintes ferramentas:
Necesitamos ter instaladas as seguintes ferramentas:


* '''pcscd''': (''Personal Computer/Smart Card'')'''É un''' '''Middleware,''' é dicir, proporciona unha API que permite a outras ferramentas interactuar cos lectores de tarxetas intelixentes.
* '''pcscd'''(''Personal Computer/Smart Card'')''' - É un''' '''Middleware,''' é dicir, proporciona unha API que permite a outras ferramentas interactuar cos lectores de tarxetas intelixentes.
* '''pscd-tools''': Ferramentas para interactuar cos lectores de tarxetas intelixentes
* '''pscd-tools''': Ferramentas para interactuar cos lectores de tarxetas intelixentes.
* '''pinentry-gtk2''': Para que nos pida o pin do DNIe en modo gráfico.
* '''pinentry-gtk2''': Para que nos pida o pin do DNIe en modo gráfico.


<source lang='text'>
apt-get install pcscd pcsc-tools pinentry-gtk2
apt-get install pcscd pcsc-tools pinentry-gtk2
</source>



Unha vez instalado pscd o sistema xa recoñece o lector de tarxetas e lle asigna un módulo para xestionalo.
Unha vez instalado pscd o sistema xa recoñece o lector de tarxetas e lle asigna un módulo para xestionalo.
Liña 52: Liña 52:
|__ Port 2: Dev 2, If 0, Class=Chip/SmartCard, '''Driver=usbfs,''' 12M
|__ Port 2: Dev 2, If 0, Class=Chip/SmartCard, '''Driver=usbfs,''' 12M


'''Comprobamos o que funciona correctamente'''
'''Comprobamos que funciona correctamente'''



Empregamos unha das ferramentas proporcionadas por pcsc-tools para comunicarnos co lector de tarxetas intelixentes e obter información da tarxteta intelixente inserida.
Empregamos unha das ferramentas proporcionadas por pcsc-tools para comunicarnos co lector de tarxetas intelixentes e obter información da tarxteta intelixente inserida.



root@Port-Profes4:/home/usuario/DNIE# pcsc_scan
root@Port-Profes4:/home/usuario/DNIE# pcsc_scan
Liña 78: Liña 76:


Podemos probar cunha tarxeta de crédito, pero seguramente non a recoñecerá, xa que non estará na lista de tarxetas coñecidas.
Podemos probar cunha tarxeta de crédito, pero seguramente non a recoñecerá, xa que non estará na lista de tarxetas coñecidas.



== Instalación do “driver” específico para o DNIe ==
== Instalación do “driver” específico para o DNIe ==
O lector de smartcard funciona correctamente, permite ler a información da tarxeta. Pero para que os programas entendan a información almacenada no DNIe é preciso instalar '''OpenSC-OpenDNIe'''.
O lector de smartcard funciona correctamente, permite ler a información da tarxeta. Pero para que os programas entendan a información almacenada no DNIe é preciso instalar '''OpenSC-OpenDNIe'''.


É dicir, OpenSC con soporte para el DNI electrónico Español. Este é un driver de código aberto para traballar cos lectores de DNIe. É a fusión de dous proxectos:
É dicir, OpenSC con soporte para el DNI electrónico Español. Este é un driver de código aberto para traballar cos lectores de DNIe. É unha versión específica para soportar o DNIe de [https://www.opensc-project.org/ OpenSC]:''', que é un standard de manexo de smartcards ou tarxetas criptográficas pkcs#15.


O proxecto OpenSC aceptou os parches propostos para o DNIe no seu árbore de desenvolvemento, polo que nun futuro bastará coa instalación do paquete estándar ''OpenSC'', e este documento carecerá de validez.
* [https://www.opensc-project.org/ OpenSC]:''' é o standard de manexo de smartcards ou tarxetas criptográficas pkcs#15.
* '''OpenDNIe''': Incorpora o necesario para comunicarse co DNIe Español.


O paquete proporcionado na [http://www.dnielectronico.es/ páxina oficial] está discontinuado así que empregaremos este. A última versión desenrolada foi para '''Debian Squeeze'''.
O paquete proporcionado na [http://www.dnielectronico.es/ páxina oficial] está discontinuado así que empregaremos este. A última versión desenrolada foi para '''Debian Squeeze'''.
Liña 96: Liña 92:
Como o código do noso driver está aloxado en GitHub podemos descargar o código e compilalo para a nosa versión de Debian para crearnos o .deb. Para elo seguimos as instruccións da páxina
Como o código do noso driver está aloxado en GitHub podemos descargar o código e compilalo para a nosa versión de Debian para crearnos o .deb. Para elo seguimos as instruccións da páxina


* '''Instalamos dependencias'''<br/> apt-get install build-essential devscripts dh-autoreconf git-buildpackage<br/> apt-get build-dep opensc
* '''Instalamos dependencias'''
<source lang='text'>
apt-get install build-essential devscripts dh-autoreconf git-buildpackage
apt-get build-dep opensc
</source>


Este último comando instala as dependencias necesarias para compilar o paquete opensc, para elo''' temos que ter engadida no sources.lst unha liña do tipo deb-src'''.''' '''Por exemplo
Este último comando instala as dependencias necesarias para compilar o paquete opensc, para elo''' temos que ter engadida no sources.lst unha liña do tipo deb-src'''.Por exemplo


<source lang='text'>
deb-src http://ftp.es.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.es.debian.org/debian/ jessie main contrib non-free
</source>


* '''Clonar repositorio con gbp:'''<br/> É dicir descargamos o código fonte do repositorio github para compilalo. <br/> Como usuario normal<br/> mkdir DNIE<br/> cd DNIE<br/> gbp-clone [https://github.com/clopez/OpenSC-OpenDNIe-Debian https://github.com/clopez/OpenSC-OpenDNIe-Debian]<br/> Esto crea unha carpeta chamada OpenSC-OpenDNIe-Debian co código fonte<br/> cd OpenSC-OpenDNIe-Debian <br/>
* '''Clonar repositorio con gbp''': É dicir descargamos o código fonte do repositorio github para compilalo. Procedemos sen necesidade de ser '''root''':
<source lang='text'>
mkdir DNIE
cd DNIE
gbp-clone https://github.com/clopez/OpenSC-OpenDNIe-Debian
</source>


Esto creará unha carpeta chamada OpenSC-OpenDNIe-Debian co código fonte. Procederemos á compilación de ''OpenSC-OpenDNIe''


<source lang='text'>
* '''Compilamos o paquete'''
cd OpenSC-OpenDNIe-Debian <br/>
git-buildpackage
</source>


Se se produce algún erro e non crea o .deb podemos executalo como ''git-buildpackage –git-ignore-new''.
git-buildpackage

Se se produce algún erro e non crea o .deb podemos executalo como

git-buildpackage –git-ignore-new


O proceso finaliza coa seguinte mensaxe de erro. Pero é normal
O proceso finaliza coa seguinte mensaxe de erro. Pero é normal



Now signing changes and any dsc files...
Now signing changes and any dsc files...
Liña 130: Liña 136:
gbp:error: Couldn't run 'debuild -i -I': debuild -i -I returned 29
gbp:error: Couldn't run 'debuild -i -I': debuild -i -I returned 29


É normal que falle, está tratando de firmar o paquete empregando gpg, pero é imposible que o firmemos nos, xa que non somos o autor do mesmo e non temos a súa clave privada.
É normal que falle, está tratando de firmar o paquete empregando gpg, pero é imposible que o firmemos nos, xa que non somos o autor do mesmo e non temos a súa clave privada. Poderíamos modificar a configuración para firmalo coa nosa propia chave gpg si quixeramos, pero non é necesario.


Se todo vai ben obteremos no directorio DNIE o paquete .deb para instalar
Se todo vai ben obteremos no directorio DNIE o paquete .deb para instalar
Liña 137: Liña 143:


Como root
Como root
<source lang='text'>
dpkg -i opensc_0.12.2-OpenDNIe_amd64.deb
</source>


Debemos asegurarnos de que o navegador pode solicitarnos o PIN nun diálogo. O ficheiro ''/etc/opensc/opensc.conf'' debe especificar '''enable_pinpad = false;''' na sección ''reader_driver pcsc''.
dpkg -i opensc_0.12.2-OpenDNIe_amd64.deb


<source lang='text'>

reader_driver pcsc {
.
......
#
# Enable pinpad if detected (PC/SC v2.0.2 Part 10) </nowiki>
# Default: true
enable_pinpad = false;
#
</source>


== Configurar o navegador para autentificarnos co DNIe ==
== Configurar o navegador para autentificarnos co DNIe ==
Imos a configurar o iceweasel. Temos que facer dúas cousas
Imos a configurar o iceweasel. Temos que facer dúas cousas


* '''Importar certificado da FNMT''': É necesario importar no navegador o certificado raíz da DGP. Podemos obtelo no [http://www.dnielectronico.es/seccion_integradores/certs.html área de descargas] de certificados da páxina do DNIe. Descargamos [http://www.dnielectronico.es/ZIP/ACRAIZ-SHA2.zip Certificado pkcs1-sha256WithRSAEncryption]. Descomprimimos o arquivo e importamos o certificado no navegador.
* '''Importar certificado da FNMT'''
** É necesario importar no navegador o certificado raíz da DGP <br/> Imos a [http://www.dnielectronico.es/seccion_integradores/certs.html área de descargas] de certificados da páxina do DNIe. <br/> Descargamos [http://www.dnielectronico.es/ZIP/ACRAIZ-SHA2.zip Certificado pkcs1-sha256WithRSAEncryption] <br/> Descomprimimos o arquivo e importamos o certificado no navegador



[[Image:]]
[[Image:certraiz.png|center|700px|Instalación do Certificado Raíz]]


* '''Engadir dipositivo de seguridade'''
* '''Engadir dipositivo de seguridade'''


[[Image:]]


[[Image:dnicert.png|center|700px|Novo Dispositivo de Seguridade]]
Engadimos /usr/lib/x86_64-linux-gnu/'''opensc-pkcs11.so'''


== [[Image:]] ==
== Comprobando o seu funcionamento ==
Imos a unha páxina onde podamos empregar o DNIe, por exempo a [http://www.dgt.es/portal/es/oficina_virtual/permiso_por_puntos/ www.dgt.es ]para comprobar o noso saldo de puntos. Escollemos “Saldo de puntos con certificado”


Engadimos /usr/lib/x86_64-linux-gnu/'''opensc-pkcs11.so'''
[[Image:]]


== Comprobando o seu funcionamento ==
Pode que todo pareza ir ben pero non abre a ventá para introducir o pin. Para solucionalo en
Podemos comprobar o funcionamento na [https://av-dnie.cert.fnmt.es/compruebacert/compruebacert Páxina de Comprobación], ou ir a unha páxina onde podamos empregar o DNIe, por exempo a [https://aplcr.dgt.es/WEB_COPACI/certificado/irAntecedentes.faces páxina de tráfico] para comprobar o noso saldo de puntos. Escollemos “Saldo de puntos con certificado”

/etc/opensc/opensc.conf. Temos que descomentar enable_pinpad = false;

reader_driver pcsc {
......
<nowiki># </nowiki>
<nowiki># Enable pinpad if detected (PC/SC v2.0.2 Part 10) </nowiki>
<nowiki># Default: true </nowiki>
'''enable_pinpad = false; '''
<nowiki># </nowiki>


Agora o acceder á páxina xa debería solicitar o PIN

Revisión actual feita o 4 de marzo de 2014 ás 19:46

Instalación e configuración do DNIe en Debian

Introdución

C3po.png

Queremos empregar o noso DNIe baixo Debian para poder autentificarnos pola rede ou firmar documentos.

Situación de partida:

  • Debian testing jessie con kernel 3.2.0-4-amd64
  • Lector de tarxetas C3PO LTC31v2

Comprobamos o funcionamento do lector

Enchufamos o lector de tarxetas

Examinando se detecta o lector de tarxetas

root@Port-Profes4:/home/usuario# lsusb -t 
/:  Bus 08.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M 
/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M 
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M 
    |__ Port 2: Dev 2, If 0, Class=Chip/SmartCard, Driver=, 12M

Amósamos información detallada sobre o dispositivo e comprobamos que non ten un driver asociado.

root@Profes1:/home/usuario# lsusb -s 6:2 -v 
Bus 006 Device 002: ID 0783:0006 C3PO LTC31v2 
Device Descriptor: 
 ......
  idVendor           0x0783 C3PO 
  idProduct          0x0006 LTC31v2 
  bcdDevice            0.38 
  iManufacturer           1 C3PO 
  iProduct                2 USB SMART CARD READER

Instalación das ferramentas para traballar co lector de tarxetas

Necesitamos ter instaladas as seguintes ferramentas:

  • pcscd(Personal Computer/Smart Card) - É un Middleware, é dicir, proporciona unha API que permite a outras ferramentas interactuar cos lectores de tarxetas intelixentes.
  • pscd-tools: Ferramentas para interactuar cos lectores de tarxetas intelixentes.
  • pinentry-gtk2: Para que nos pida o pin do DNIe en modo gráfico.
 apt-get install pcscd pcsc-tools pinentry-gtk2

Unha vez instalado pscd o sistema xa recoñece o lector de tarxetas e lle asigna un módulo para xestionalo.

root@Port-Profes4:/home/usuario# lsusb -t 
/:  Bus 08.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M 
/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M 
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M 
    |__ Port 2: Dev 2, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M

Comprobamos que funciona correctamente

Empregamos unha das ferramentas proporcionadas por pcsc-tools para comunicarnos co lector de tarxetas intelixentes e obter información da tarxteta intelixente inserida.

root@Port-Profes4:/home/usuario/DNIE# pcsc_scan 
PC/SC device scanner 
V 1.4.21 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr> 
Compiled with PC/SC lite version: 1.8.7 
Using reader plug'n play mechanism 
Scanning present readers... 
0: C3PO LTC31 v2 (00416036) 00 00 
Fri May 31 14:57:44 2013 
Reader 0: C3PO LTC31 v2 (00416036) 00 00 
  Card state: Card inserted, 
  ATR: 3B 7F 38 00 00 00 6A 44 4E 49 65 10 02 4C 34 01 13 03 90 00 
......
.....
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt): 
3B 7F 38 00 00 00 6A 44 4E 49 65 10 02 4C 34 01 13 03 90 00 
3B 7F 38 00 00 00 6A 44 4E 49 65 [1,2]0 02 4C 34 01 13 03 90 00 
    DNI electronico (Spanish electronic ID card) 
    http://www.dnielectronico.es 

Podemos probar cunha tarxeta de crédito, pero seguramente non a recoñecerá, xa que non estará na lista de tarxetas coñecidas.

Instalación do “driver” específico para o DNIe

O lector de smartcard funciona correctamente, permite ler a información da tarxeta. Pero para que os programas entendan a información almacenada no DNIe é preciso instalar OpenSC-OpenDNIe.

É dicir, OpenSC con soporte para el DNI electrónico Español. Este é un driver de código aberto para traballar cos lectores de DNIe. É unha versión específica para soportar o DNIe de OpenSC:, que é un standard de manexo de smartcards ou tarxetas criptográficas pkcs#15.

O proxecto OpenSC aceptou os parches propostos para o DNIe no seu árbore de desenvolvemento, polo que nun futuro bastará coa instalación do paquete estándar OpenSC, e este documento carecerá de validez.

O paquete proporcionado na páxina oficial está discontinuado así que empregaremos este. A última versión desenrolada foi para Debian Squeeze.

Obteremos a versión actualizada do driver dende https://github.com/clopez/OpenSC-OpenDNIe-Debian

Git é un dos sistemas de control de versións máis populares entre os desenroladores. Parte culpa da súa popularidade tena GitHub, un excelente servizo de aloxamento de repositorios de software con este sistema

Como o código do noso driver está aloxado en GitHub podemos descargar o código e compilalo para a nosa versión de Debian para crearnos o .deb. Para elo seguimos as instruccións da páxina

  • Instalamos dependencias
 apt-get install build-essential devscripts dh-autoreconf git-buildpackage
 apt-get build-dep opensc

Este último comando instala as dependencias necesarias para compilar o paquete opensc, para elo temos que ter engadida no sources.lst unha liña do tipo deb-src.Por exemplo

 deb-src http://ftp.es.debian.org/debian/ jessie main contrib non-free
  • Clonar repositorio con gbp: É dicir descargamos o código fonte do repositorio github para compilalo. Procedemos sen necesidade de ser root:
 mkdir DNIE
 cd DNIE
 gbp-clone https://github.com/clopez/OpenSC-OpenDNIe-Debian

Esto creará unha carpeta chamada OpenSC-OpenDNIe-Debian co código fonte. Procederemos á compilación de OpenSC-OpenDNIe

  cd OpenSC-OpenDNIe-Debian <br/> 
  git-buildpackage

Se se produce algún erro e non crea o .deb podemos executalo como git-buildpackage –git-ignore-new.

O proceso finaliza coa seguinte mensaxe de erro. Pero é normal

    Now signing changes and any dsc files... 
     signfile opensc_0.12.2-OpenDNIe.dsc Carlos Alberto Lopez Perez     <clopez@igalia.com> 
    gpg: directory `/home/usuario/.gnupg' created 
    gpg:  creouse un novo ficheiro de configuración     `/home/usuario/.gnupg/gpg.conf' 
    gpg: AVISO: as opcións de `/home/usuario/.gnupg/gpg.conf' aínda non están     activas nesta execución 
    gpg: chaveiro `/home/usuario/.gnupg/secring.gpg' creado 
    gpg: chaveiro `/home/usuario/.gnupg/pubring.gpg' creado 
    gpg: skipped "Carlos Alberto Lopez Perez <clopez@igalia.com>": a chave     secreta non está dispoñible 
    gpg: /tmp/debsign.ZUVJifRs/opensc_0.12.2-OpenDNIe.dsc: clearsign failed: a     chave secreta non está dispoñible 
    debsign: gpg error occurred!  Aborting.... 
    debuild: fatal error at line 1278: 
    running debsign failed 
    gbp:error: Couldn't run 'debuild -i -I': debuild -i -I returned 29 

É normal que falle, está tratando de firmar o paquete empregando gpg, pero é imposible que o firmemos nos, xa que non somos o autor do mesmo e non temos a súa clave privada. Poderíamos modificar a configuración para firmalo coa nosa propia chave gpg si quixeramos, pero non é necesario.

Se todo vai ben obteremos no directorio DNIE o paquete .deb para instalar

  • Instalamos o paquete

Como root

 dpkg -i opensc_0.12.2-OpenDNIe_amd64.deb

Debemos asegurarnos de que o navegador pode solicitarnos o PIN nun diálogo. O ficheiro /etc/opensc/opensc.conf debe especificar enable_pinpad = false; na sección reader_driver pcsc.

  reader_driver pcsc { 
                 ......
                 # 
                 # Enable pinpad if detected (PC/SC v2.0.2 Part 10) </nowiki>
                 # Default: true
                 enable_pinpad = false;
                 #

Configurar o navegador para autentificarnos co DNIe

Imos a configurar o iceweasel. Temos que facer dúas cousas


Instalación do Certificado Raíz
  • Engadir dipositivo de seguridade


Novo Dispositivo de Seguridade


Engadimos /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so

Comprobando o seu funcionamento

Podemos comprobar o funcionamento na Páxina de Comprobación, ou ir a unha páxina onde podamos empregar o DNIe, por exempo a páxina de tráfico para comprobar o noso saldo de puntos. Escollemos “Saldo de puntos con certificado”