Problema al implementar PKCS#11

Resuelto
kzanadeus Mensajes publicados 70 Estado Miembro -  
 karlzorn -
Hola,

soy analista/desarrollador y estoy trabajando en un gran proyecto de creación de un PKCS#11. Hasta ahora todo iba bien, pero de repente me encontré con un problema extraño.

Cuando me conecto a un sitio web seguro (https://) la conexión se rechaza y obtengo el error: sec_error_unknown_issuer. Sin embargo, si instalo la autoridad de mi certificado en el PKCS#11 de Firefox y solo mantengo mi certificado de usuario en mi PKCS#11, funciona, me conecto, me autentico y puedo hacer firmas electrónicas.

Por otro lado, tan pronto como vuelvo a poner mi certificado de autoridad en mi PKCS#11 y lo elimino del de Firefox, el sec_error_unknown_issuer vuelve una y otra vez y no hay forma de pasar.

Si alguien tiene alguna idea, estoy dispuesto a escuchar y puedo proporcionar detalles (registros o fragmentos de código) si es necesario.

Gracias de antemano.

Atentamente.

Kzanadeus.
Configuración: Windows XP Firefox 3.0.5

11 respuestas

nbn
 
Hola,
Si he entendido bien:
Tienes un token o una tarjeta con chip, así que para poder utilizarlo correctamente con Firefox en Windows, debes instalar el módulo PKCS#11 de tu dispositivo (un archivo ".dll") correspondiente en la sección "Preferencias de Firefox > Dispositivo de seguridad > Avanzado > Cifrado".
Tan pronto como conectes tu dispositivo, la parte pública que es tu certificado estará presente en tu Gestor de certificados.
Si necesitas aclaraciones, házmelo saber.
Buen trabajo
2
amine3921 Mensajes publicados 4 Fecha de registro   Estado Miembro
 
Hola,
estoy trabajando en un proyecto de integración de un middleware genérico "SAFE SIGNE" gracias a los pkcs#11 y estoy atascado en un error al llamar a la clave privada del certificado de firma. (no puedo firmar) [el cifrado y el descifrado funcionan].
El error:
[303] error de generación de la firma de los datos.
...if (custom) {
LOG.info("custom provider...");
customizeProviderP11CS(digestAlgorithm, true, false);
}

signedData = cms.sign(testData,
signerCert,
signerPKey,
digestAlgorithm,
tokenManager.getProvider());
assertNotNull(signedData);...

y también otra pregunta sobre el SlotID, ¿se obtiene en formato decimal o en hexadecimal?
si puedes ayudarme.
Gracias de antemano.
0
nbbbn > amine3921 Mensajes publicados 4 Fecha de registro   Estado Miembro
 
¿Cuál es el tipo de soporte que utilizas?
¿La aplicación que haces en qué lenguaje?
¿Utilizas la DLL en el código fuente?

Si das el código fuente en detalles, tal vez pueda ayudarte más.

Para el SlotID está en decimal.

¿Estás en Túnez?

Buen trabajo.
0
amine3921 Mensajes publicados 4 Fecha de registro   Estado Miembro > nbbbn
 
gracias por tu ayuda no, no estoy en Túnez.
el soporte que utilizo es un lector de tarjetas inteligentes + diferentes tipos de tarjetas inteligentes porque SAFESIGN permite el uso de todo tipo de tarjetas, de ahí el objetivo del proyecto.
lenguaje java.
en cuanto a la DLL, es la dll del middleware safesign aetpkss1.dll
a continuación, una parte del código:

if (provider != null) {
signedData = signGen.generate(content, isAttach, provider.getName());
} else {
signedData = signGen.generate(content, isAttach, "tarjeta PKCS#11_P11");
}

if (LOG.isDebugEnabled()) {
LOG.debug(" Firma generada");
}

SignerInformation signerInfo = (SignerInformation) signedData.getSignerInfos().getSigners().iterator().next();

if (LOG.isDebugEnabled()) {
LOG.debug(" Datos firmados");
}

this.signatureValue = signerInfo.getSignature();
this.certSigner = cert;
this.signerId = signerInfo.getSID();

return signedData.getEncoded();

} catch (Exception e) {
LOG.error("Error al firmar los datos (", e);
throw new SignatureException(
SignatureException.CODE.ERROR_GENERATE_SIGN);
}

para llamar a la dll se utiliza un archivo de propiedades de entorno:
# Pruebas de tarjeta inteligente PKCS#11
#
pkcs11.smartcard.module=C:/Windows/System32/aetpkss1.dll
pkcs11.smartcard.slot=cd01
pkcs11.smartcard.pin=1234
....
espero haber sido claro.
gracias
0
nes
 
Hola, tengo un problema con la firma pkcs11, ¿puedes ayudarme?
0
karlzorn
 
Hola, estoy en un proyecto similar con el mismo middleware y me interesa intercambiar información sobre este (9 y pkcs). Saludos,
0
kzanadeus Mensajes publicados 70 Estado Miembro 3
 
Gracias por la respuesta.

Después de numerosos intentos e investigaciones, finalmente entendí de dónde venía el problema.

De hecho, hay información adicional que debe enviarse a través de PKCS#11 a Firefox para que lo considere conocido. Proporcioné la cadena de certificación y los derechos necesarios para el certificado y todo finalmente funcionó.

Ahora mi PKCS#11 funciona bien, aunque todavía me quedan algunas áreas de incertidumbre para el futuro. De hecho, existen más de 400 algoritmos de cifrado referenciados en el estándar PKCS#11, así que aún tengo trabajo si quiero ser compatible con todo. Pero tengo tiempo ahora que las funcionalidades básicas están operativas.

Por curiosidad, ¿cómo conocen ustedes el estándar PKCS#11? ¿Han implementado uno ustedes mismos?

Atentamente.

Kzanadeus.
0
nbn
 
Hola,
He programado en JAVA, C++ y Python en diferentes proyectos, por supuesto, para gestionar tarjetas inteligentes, así que he utilizado API(s) que soportan el estándar PKCS11 como IAIK y otros...
Nizar
0
kzanadeus Mensajes publicados 70 Estado Miembro 3
 
Usted debe conocer bien ese tema.

No dudaré en ponerme en contacto con usted en caso de problema.

Gracias de nuevo.

Atentamente.

Kzanadeus.
0
nbn
 
Por supuesto, sin ningún problema.
0
byassir1984 Mensajes publicados 8 Estado Miembro
 
Hola,

debo hacer un programa en vb.net que se comunique con un HSM utilizando la API PKCS#11.
soy muy nuevo en este ámbito, sé muy poco. le pido que me ayude a encontrar un enfoque para este problema.

Atentamente.

Yassir.
0
kzanadeus Mensajes publicados 70 Estado Miembro 3
 
Hola, creo que lo mejor es empezar por la documentación oficial del PKCS#11 que se puede encontrar en el sitio de los laboratorios RSA.

Luego, creo que es necesario familiarizarse con ello utilizando FireFox, que puede instalar fácilmente todo lo que utiliza un PKCS#11.

Si se requieren más detalles, estoy aquí.

Atentamente.

Kzanadeus.
0
byassir1984 Mensajes publicados 8 Estado Miembro
 
Hola,

en primer lugar, gracias por su respuesta. De hecho, ya he comenzado con la documentación de PKCS#11 y todo funciona bien hasta ahora.
¿Cuál es el enlace entre mi proyecto (hacer un programa en vb.net utilizando la API Cryptoki, con el que se pueden crear claves para cifrado y descifrado, firma, certificados, etc.) y Firefox?

Le agradezco de nuevo.

Atentamente.

Yassir.
0
kzanadeus Mensajes publicados 70 Estado Miembro 3
 
¿Cuál es al final el objetivo de la aplicación?
0
byassir1984 Mensajes publicados 8 Estado Miembro
 
El objetivo de mi proyecto es la personalización de los datos en un e-pasaporte, y primero debo completar la primera fase ya mencionada. Luego debo pasar a la segunda fase: asegurar los datos de un pasaporte.
Quizás no sea lo suficientemente claro, ya que el entorno es muy nuevo para mí.

Atentamente.
0
kzanadeus Mensajes publicados 70 Estado Miembro 3
 
Supongo que los datos personalizados son datos de certificados electrónicos.

Si es así, el módulo PKCS#11 solo estará allí para hacer las solicitudes, así que después, no sé si la biblioteca es completa y, por lo tanto, realiza todas las llamadas o si es tu aplicación la que recibe las solicitudes del módulo PKCS#11... así que no sé muy bien cómo ayudarte.
0
pingus
 
Hola,
¿Tendría un enlace que explique el propósito, los objetivos y los problemas a los que se puede responder con PKCS#11?
(PKCS#11 para los nulos)

Gracias de antemano.
0
Kzanadeus
 
Aquí está el enlace oficial: https://www.rsa.com/en-us/company/insight?id=2133

Mira y ve las posibilidades, son enormes.
0