Mostrando entradas con la etiqueta smart card. Mostrar todas las entradas
Mostrando entradas con la etiqueta smart card. Mostrar todas las entradas

miércoles, 12 de agosto de 2020

Certificados en Java (2). Configurar Tomcat (tambien en Eclipse) https autentificacion cliente certificado. Tarjeta, Smartcard cliente

1. Configurar Tomcat  para https

Segun Namecheap  podemos instalar en Tomcat certificados .jks y tembién .p12 (pkcs12)

1.a con certificado jks

Supongamos que tenemos un certificado p12 llamado mykeystore.jks con contraseña "mypassword", entonces:

Modificamos el conector en el fichero server.xml de la carpeta conf de tomcat y para el puerto 8443 para que quede así

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<!-- Define a SSL HTTP/1.1 Connector on port 8443
        This connector uses the JSSE configuration, when using APR, the
        connector should be using the OpenSSL style configuration
        described in the APR documentation -->
    <Connector port="8443" 
              protocol="HTTP/1.1"
              SSLEnabled="true"
              maxThreads="150" 
              scheme="https" 
              secure="true"
              clientAuth="false" <!-- true to read client certificate -->
              sslProtocol="TLS" <!--"TLSv1.2" -->
              keyAlias="tomcat" <!-- Alias cuando se crea mykeystore,jks -->
	      keystoreFile="/home/ximo/mykeystore.jks"
	      keystorePass="mypassword" 
              
    /> 

Y ahora vamos al directorio "bin" del tomcat y paramos y rearrancamos el servicio

./shutdown.sh
./startup.sh

1.b con certificado pem

Supongamos que hemos obtenido de LetsEncrypt, estos certificados que estan en la carpeta  /etc/letsencrypt/live/midominio.es
  • cert.pem (certificado "solo")
  • chain.pem (cadena de certificados del root)
  • fullchain.pem (certificado "solo" + cadena de certificados del root. Equivale a los 2 ficheros anteriores juntos)
  • privkey.pem (clave privada)
Modificamos el conector en el fichero server.xml de la carpeta conf de tomcat y para el puerto 19443 para que quede así

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
 <Connector port="19443"
      protocol="HTTP/1.1"
      SSLEnabled="true"
      maxThreads="150"
      scheme="https"
      secure="true"
      sslProtocol="TLS"

      clientAuth="true"
      keyAlias="tomcat"


      SSLCertificateFile="/etc/letsencrypt/live/midominio.es/cert.pem"
      SSLCertificateChainFile="/etc/letsencrypt/live/midominio.es/chain.pem"
      SSLCertificateKeyFile="/etc/letsencrypt/live/midominio.es/privkey.pem"
   />

  
Como vemos,:
  1.  No nos ha hecho falta el fullchain.pem
  2. Tampoco nos ha hecho falta ninguna contraseña
  3. Estamos trabajando en un puerto https adicional 19443 (junto con el anterior 8443) sin ningún problema

Y ahora vamos al directorio "bin" del tomcat y paramos y rearrancamos el servicio

./shutdown.sh
./startup.sh


2. Obtener un certificado jks versión fácil


En un blog anterior hemos creeado una entidad certificadora. 


Para ello hay que seguir las instrucciones de Mkyong :

Nos situamos en el directorio /home/ximo/mycerts y creamos un keystore con un certificado auto firmado:

keytool -genkey -alias tomcat -keyalg RSA -keystore mykeystore.jks

OJO: El alias tomcat del mykeystore es el que se debe de indicar en el "keyAlias" del web.xml del tomcat
nos pide una nueva contraseña para el nuevo keystore por ejemplo "mypassword"

podemos listar el contenido del keystore con

keytool -list -v -keystore mykeystore.jks



3. Obtener un certificado jks con un certificado emitido por nuestra entidad certificadora.

Aprovechamos todos los pasos anteriores y generamos el Certificate Signing Request CSR. Para ello volvemos al directorio  /home/ximo/mycerts y tecleamos

keytool -certreq -alias tomcat1 -file mytomcat.csr -keystore mykeystore.jks

Observar que el alias el mismo que hemos creado antes (tomcat)  y nos ha creado el fichero mytomcat.csr


OJO: Para obtener cada una de las DNS, debemos hacer este comando:

nslookup 192.168.2.2

siendo 182.168.2.2 la dirección IP del servidor que queremos crear el certificado, y nos devuelve:

ws.ximodante.es
otro.ximodante.es

Y con esta información de los DNS creamos el fichero de configuración siguiente (mytomcat.conf):

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = 192.168.2.2
DNS.2 = localhost --> SOLO PARA PUEBAS en PRE
DNS.3 = otro.ximodante.es
DNS.4 = ws.ximodante.es

Por tanto debeis cambiar a la IP que realmente está usando el servidor 

Ahora generamos el certificado

openssl x509 -req -in mytomcat.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out mytomcat.crt -days 825 -sha256 -extfile mytomcat.conf
 
Hay que tener en cuenta que debemos disponer de los certificados de nuestra entidad certificadora (myCA.key y myCA.pem) obtenidos en el post anterior.

Finalmente importamos el certificado generado usando el mismo alias "tomcat" a nuestro almacén de claves.

keytool -import -alias tomcat1 -file mytomcat.crt -keystore mykeysore.jks

Y rearrancamos el servicio de Tomcat como hemos hecho antes:


./shutdown.sh
./startup.sh

Y si entramos en el navegador se quejará, salvo que le indiquemos al navegador que confie en nuestra entidad certificadora.

4. Autentificación en el servidor con certificado de cliente.


Si queremos que el cliente nos muestre su certificado, hay que indicarle en la línea 11 del fragmento anterior de servers.xml:

clientAuth="true" 

Con lo que nos pide el certificado de cliente y podemos autenticarnos en el servidor mediante certificado.

5. Autentificación en el servidor con tarjeta criptográfica (en cliente).

Cuando se intenta acceder con tarjeta criptográfica en el cliente, nos da este error en el cliente:
SSL_ERROR_BAD_CERT_ALERT

Supongo que tal vez haya que indicar un truststore que contenga el certificado raíz.
Parece ser que tomcat utiliza el alacen de certificados de java.

Se va a copiar el fichero keystore  java_path/lib/security/cacerts a una carpeta de pruebas y con el programa keystore explorer, añadimos los certificados raiz de la etidad certificadora de la tarjeta obtenidas de la ACCV 

En concreto añadimos el certificado raiz, los 110 y 120

y vamos a modificar el server.xml para que tenga un truststore


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<!-- Define a SSL HTTP/1.1 Connector on port 8443
        This connector uses the JSSE configuration, when using APR, the
        connector should be using the OpenSSL style configuration
        described in the APR documentation -->
    <Connector port="8443" 
              protocol="HTTP/1.1"
              SSLEnabled="true"
              maxThreads="150" 
              scheme="https" 
              secure="true"
              clientAuth="false" <!-- true to read client certificate -->
              sslProtocol="TLS" <!--"TLSv1.2" -->
              keyAlias="tomcat" <!-- Alias cuando se crea mykeystore,jks -->
	      keystoreFile="/home/ximo/mykeystore.jks"
	      keystorePass="mypassword" 
              
    /> 



6. Configurar el tomcat de Eclipse.



"If you've already created the server, you can edit the server.xml template it copies. If you use the project explorer, It is under Other Projects->Servers->Tomcat Server Name->server.xml"

Así de fácil localizamos el server.xml y lo configuramos como si fuera un tomcat normal.








sábado, 11 de agosto de 2018

Ubuntu 16: Instalar tarjeta ACCV smart card

1. Introducción


1.1 Debemos primeramente tener instalado el lector de tarjetas (En el post anterior hemos instalado el Zoweetek).

1.2 Ahora debemos saber si nuestro ordenador es de 32 o 64 bits. Para ello teclear

uname -i

si aparece x86_64 entonces es de 64 bits, si aparece solo x86 entonces será de 32 bits

2. Lector distinto de Zoweetek(64 bits)

En este caso seguramente se tendrá un lector suminstrado por la ACCV, en este caso descargar
Para el caso de 32 bits seguir lo que dice la ACCV en este link

Para 64 bits, siguiendo las directrices de este link:

Instalamos los prerequisitos

sudo apt-get -y install pcscd libpcsclite1 libccid opensc-pkcs11 libpam-pkcs11

Descargamos el driver

http://www.accv.es/fileadmin/Archivos/software/scmccid_linux_64bit_driver_V5.0.21.tar.gz

Ahora descomprimimos y nos vamos a la carpeta donde está el fichero y nos situamos con el comand "cd" dentro de la carpeta scmccid_5.0.21_linux 

Instalamos, ejecutando:

sudo sh ./install.sh

Y reiniciamos el demonio de pcsd

sudo /etc/init.d/pcscd restart

3. Descarga de drivers (controladores)

Puede ser interesante que se instalen los controladores de los lectores de la ACCV(del apartado2) , pues pueden instalar prerequisitos que no tengamos instalados previamente.

Descargarnos los drivers para la tarjeta G&D (Si es Siemens puede no funcionar)

2.1 Versión de 64 bits: 3.0.87 de la ACCV.

2.2 Versión 32 bits:3.0.87 de la ACCV.

Existen otras versiones, por ejemplo la de la entidad certificadora SafeWeb de Brasil que proporciona la versión 3.93 pero solo para 32 bits ya que el enlace a 64 bits no es correcto y apunta a la de 32 bits

4. Instalación del controlador

Según la ACCV, la guía viene indicada para Ubuntu 14 y 12. Para ello pide que se instale los 2 prerequisitos siguientes con "sudo apt-get -y install libwxgtk2.8-0 libwxbase2.8-0", pero este comado falla.

Para ello buscamos en Google ("Ubuntu 16  libwxgtk2.8-0" y "Ubuntu 16  libwxbase2.8-0") y nos propone las descargas de estos paquetes, en concreto podemos descargarlos desde estos enlaces.

Para 32 bits:



Para 64 bits:


Para cada uno de los paquetes ejecutamos, para 64 BITS que es nuestro caso

sudo dpkg -i libwxgtk2.8-0_2.8.12.1+dfsg2-2ubuntu2+1_webupd8_xenial0_amd64.deb

sudo dpkg -i libwxbase2.8-0_2.8.12.1+dfsg2-2ubuntu2+1_webupd8_xenial0_amd64.deb

con ello hemos instalado los prerequisitos

Ahora nos toca instalar el controlador de la tarjeta G&D (Smart Cafe), que para nuestro casdo de 64 BITS es:

sudo dpkg -i safesign_3.0.87.amd64.deb

5. Istalarlo en Mozilla firefox

Abre Firefox y busca las 3 rayitas de la parte superior derecha y da click



Seleccione preferencias


Ir a seguridad y privacidad



Bucar Certificados

En dispositivos de seguridad apretar botón


Seleccionamos cargar







E indicamos de nombre

ACCV G&D PKSC11

Y de nombre del fichero del módulo

/usr/lib/libaetpkss.so.3

Ahora entramos en ACCV G&D PKCS11 y entre los dispositivos que hay (en mi caso puedo ver ACCV) , lo selecciono y aparece y le damos "iniciar la sesion"




Ahora

nos pide la contraseña de la tarjeta y en teoría debería de funcionar



Cuando entramos en una web que nos pide autenticación por certificado, aparece


En fin ya me funciona tras 2 días de lucha!

Pero mi gozo en un pozo.

Tras instalar posteriormente Autofirma, me ha jodío bien el asunto!!!!

Pero haciendo de nuevo

sudo dpkg -i safesign_3.0.87.amd64.deb

He podido entrar en la web de la SS y obtener la vida laboral.

Por tanto hay que ver que hace autofirma para que desinstale el driver de la smart card!


viernes, 10 de agosto de 2018

Ubuntu 16 instalar Smart Card Reader Zoweetek 12026-2 tarjeta

1. Introducción


Compré por Amazon este lector de Smart Cards, y decían que eran compatibles en Linux.

Con 10 €, digo, poco puedo perder (pero no contaba con el tiempo).

En esta url nos indican los drivers tanto para Linux como para windows, pero para instalar la opción para Linux (Ubuntu 16) estan desfasados y me tiré un día entero perdido.

Haciendo un lsusb me aparece como

Bus 003 Device 017: ID 058f:9540 Alcor Micro Corp. AU9540 Smartcard Reader

Parece ser que este dispositivo es una copia del Alcor AU9540

Veamos como proceder a su instalación


2. Descargar drivers actualizados


Ver si hay nuevas versiones en dichas URLs, yo de momento he descargado estas últimas versiones y lo he hecho funcionar.

2.1 libusb-1.0.22

2.2 pcsc-lite-1.8.22

2.3 ccid-1.4.28


3. Instalar

Ahora hay que seguir los pasos, tras conectar el lector a un puerto USB y metiendo la tarjeta. En mi caso es una tarjeta de la ACCV:

3.1. Copiar todos los archivos en una carpeta

3.2 Extraer dichos archivos comprimidos. Cada archivo va a crear su carpeta propia

3.3 (Opcionalmente borrar los archivos comprimido)

3.4 Instalar libusb:

cd libusb*                  
./configure                             
make                                    
sudo make install   

3.5 Instalar pcsc-lite:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig;export PKG_CONFIG_PATH
 
cd ../pcsc-lite*
./configure --disable-libudev
make                                    
sudo make install

3.6 Instalar el driver ccid:

cd ../ccid*
./configure
make                                    
sudo make install  

sudo cd src
sudo cp 92_pcscd_ccid.rules /etc/udev/rules.d/


3.7 Rearrancar el demonio pcscd

sudo /etc/init.d/pcscd restart

3.8 Probar si lee la tarjeta: Para ello


cd ../pcsc*
cd doc/example
./pcsc_demo

Y nos debe de salir


PC/SC sample code
V 1.4 2003-2009, Ludovic Rousseau <ludovic.rousseau@free.fr>

THIS PROGRAM IS NOT DESIGNED AS A TESTING TOOL FOR END USERS!
Do NOT use it unless you really know what you do.

SCardListReaders: OK

0: Alcor Micro AU9560 00 00
1: OMNIKEY AG CardMan 3121 01 00
 Protocol: 2
SCardConnect: OK

 Reader: Alcor Micro AU9560 00 00 (length 25 bytes)
 State: 0x34
 Prot: 2
 ATR (length 17 bytes): 3B F7 18 00 00 80 31 FE 45 73 66 74 65 2D 6E 66 C4
SCardStatus: OK

Sending: 00 A4 00 00 02 3F 00 
Received: 6A 86 
SCardTransmit: OK

SCardDisconnect: OK

 Protocol: 2
SCardConnect: OK

Sending: 00 A4 00 00 02 3F 00 
Received: 6A 86 
SCardTransmit: OK

SCardReconnect: OK

 Reader: Alcor Micro AU9560 00 00 (length 25 bytes)
 State: 0x34
 Prot: 2
 ATR (length 17 bytes): 3B F7 18 00 00 80 31 FE 45 73 66 74 65 2D 6E 66 C4
SCardStatus: OK

 state: 0x0122
SCardGetStatusChange: OK

SCardBeginTransaction: OK

Sending: 00 A4 00 00 02 3F 00 
Received: 6A 86 
SCardTransmit: OK

SCardEndTransaction: OK

SCardDisconnect: OK

Ahora solo falta instralar los drivers del Smart Card (que puede ser Siemens CardOS, G&D, DNI electrónico etc)

También se puede ver si funciona haciendo

pcsc_scan

y sale


PC/SC device scanner
V 1.4.25 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.8.14
Using reader plug'n play mechanism
Scanning present readers...
0: Identive CLOUD 2700 R Smart Card Reader (53691541213387) 00 00
1: Alcor Micro AU9560 01 00
2: OMNIKEY AG CardMan 3121 02 00

Mon Aug 13 14:27:23 2018
Reader 0: Identive CLOUD 2700 R Smart Card Reader (53691541213387) 00 00
  Card state: Card removed, 
Reader 1: Alcor Micro AU9560 01 00
  Card state: Card inserted, 
  ATR: 3B F7 18 00 00 80 31 FE 45 73 66 74 65 2D 6E 66 C4

ATR: 3B F7 18 00 00 80 31 FE 45 73 66 74 65 2D 6E 66 C4
+ TS = 3B --> Direct Convention
+ T0 = F7, Y(1): 1111, K: 7 (historical bytes)
  TA(1) = 18 --> Fi=372, Di=12, 31 cycles/ETU
    129032 bits/s at 4 MHz, fMax for Fi = 5 MHz => 161290 bits/s
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = 00 --> Extra guard time: 0
  TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0 
-----
  TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 
-----
  TA(3) = FE --> IFSC: 254
  TB(3) = 45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5
+ Historical bytes: 73 66 74 65 2D 6E 66
  Category indicator byte: 73 (proprietary format)
+ TCK = C4 (correct checksum)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B F7 18 00 00 80 31 FE 45 73 66 74 65 2D 6E 66 C4
 SmartCafe Expert 3.2 72K
Reader 2: OMNIKEY AG CardMan 3121 02 00
  Card state: Card removed,