Al comprar un certificado de firma de código, ¿cuáles son los méritos de comenzar con un certificado PKCS12 frente a JKS? Algunos vendors dan instrucciones para comenzar con una solicitud de firma de certificado JKS o PKCS12. Nos gustaría tener la máxima flexibilidad en el uso de un certificado comprado, especialmente teniendo en cuenta el costo. Por ejemplo, podemos estar firmando algo más que código Java (por ejemplo, firma de código de iPhone o Android). ¿Qué consideraciones técnicas debemos tener en cuenta al elegir cualquiera de los enfoques?¿Cuáles son los méritos de JKS vs PKCS12 para la firma de código?
Respuesta
Si está trabajando en Java, Java Key Store es un lugar bastante natural para almacenar claves privadas. Las aplicaciones Java normalmente esperan obtener las claves que necesitan de JKS, y es fácil acceder desde sus propias aplicaciones Java. JKS no es accesible (sin saltos de algunos aros) desde fuera de Java.
Los archivos PKCS # 12 (alias PFX), por otro lado, son una forma neutral de almacenar certificados y claves privadas encriptadas, y han existido lo suficiente como para que sean compatibles en casi todos lados. Sin embargo, tenga en cuenta que el formato de archivo es terriblemente complejo y excesivamente general: eche un vistazo a "PFX - Cómo no diseñar un protocolo/estándar criptográfico" de Peter Gutmann (http://www.cs.auckland.ac.nz/~pgut001/pubs/pfx.html) para tener una visión alegre de los problemas .
Tenga en cuenta que el uso de uno u otro de estos formatos de almacenamiento es realmente un problema acerca de cómo su aplicación almacenará localmente claves privadas cifradas. El proveedor que le vende su certificado nunca verá la clave privada, por lo que no le importa qué formato use. Usted le envía a él (el proveedor/CA) una solicitud de certificado PKCS n. ° 10 (que contiene la clave pública y la firma usando la clave privada, pero NO contiene la clave privada) y le devuelve un certificado (que puede almacenar en JKS o en el archivo PKCS # 12 o ambos, o en cualquier otro lugar que te apetezca).
Técnicamente, ninguno de los dos formatos es ideal, ya que ambos protegen la clave privada cifrándola con una clave derivada de una contraseña; sin embargo, esto no hace que ninguno sea mejor que el otro. La seguridad (aunque no la conveniencia) es mejor si puede usar una tarjeta inteligente u otra solución de almacenamiento de clave de hardware.
El factor principal que determina su elección debe ser cómo planea usar la clave privada, es decir: qué aplicaciones necesitarán usar la clave privada y qué formato (s) de almacenamiento de claves ya manejan. PKCS # 12 es la opción más flexible ... pero si tiene la intención de usar la clave solo con el código que usted mismo escribe (no se requiere interoperabilidad), entonces también podría considerar el uso de contenedores PKCS # 8 o PKCS # 15.
No puedo recomendar escribir su propio código para manejar PKCS # 12 (lo he hecho, no es divertido) - use una biblioteca probada de terceros (como OpenSSL).
En caso de que tenga almacén de claves JKS puede convertir a PKCS12 mediante el siguiente comandos
keytool -importkeystore -srckeypass secret -destkeypass meow123 -srcstorepass secretstore -deststorepass secretstore -srcalias certforsigning -destalias certforsigning -srcalias certforencryption -destalias certforencryption -srckeystore my_java_keystore.jks -destkeystore PFX_keystore.pfx -deststoretype PKCS12
donde my_java_keystore.jks es el almacén de claves de Java que tiene dos teclas con alias certforsigning y certforencryption
y también puede convertir las claves de PKCS12 a JKS utilizando Keytool
- 1. ¿Cuáles son los méritos relativos de pdflatex?
- 2. ¿Cuáles son los méritos relativos de wxHaskell y Gtk2HS?
- 3. ¿Cuáles son los méritos relativos de CSV, JSON y XML para una API REST?
- 4. ¿Cuáles son los méritos de la función de configuración debug_and_release en qmake?
- 5. snk vs. certificado de firma de código
- 6. ¿Cuáles son los casos de uso de Node.js vs Twisted?
- 7. ¿Cuáles son los buenos complementos de análisis de código estático?
- 8. ¿Cuáles son los pros y los contras de la generación de código de tiempo de enlace? (VS 2005)
- 9. ¿Cuáles son los usos del código de auto modificación?
- 10. ¿Cuáles son los argumentos para main() para?
- 11. Objeto de solicitud, ¿cuáles son los pros y los contras?
- 12. ¿Cuáles son los caracteres válidos para los nombres de macro?
- 13. Cuáles son las implicaciones de usar el código de seguridad
- 14. ¿Cuáles son algunas herramientas de cobertura de código para Perl?
- 15. ¿Cuáles son los buenos recursos (además de Apple) para comprender los certificados, la firma de código, el aprovisionamiento y temas relacionados?
- 16. Visual Studio 2005 vs 2008 - ¿Cuáles son los beneficios?
- 17. ¿Cuáles son los argumentos para sysctl()?
- 18. ¿Cuáles son las pautas para Parallel.ForEach vs. foreach?
- 19. ¿Cuáles son los requisitos para los parámetros de plantilla C++?
- 20. ¿Cuáles son las alternativas de código abierto para Lattix?
- 21. ¿Cuáles son los pros y los contras de la UCI?
- 22. ¿Cuáles son los tipos MIME para los archivos de código fuente del proyecto .NET?
- 23. ¿Cuáles son los límites de TDD?
- 24. ¿Cuáles son los peligros de usar sql_variant?
- 25. ¿Cuáles son los caracteres que escapa stringbyAddingPercentEscapesUsingEncoding?
- 26. ¿Cuáles son buenas herramientas para identificar el código potencialmente duplicado para los usuarios de C# Express?
- 27. ¿Cuáles son los beneficios de JCA?
- 28. ¿Cuáles son los valores de salida de error para diff?
- 29. ¿Cuáles son los límites de compilar dardos para javascript?
- 30. ¿Cuáles son los nuevos marcos?
Bien, entonces el elemento crítico que señala es que PKCS # 12 es probado y verdadero. Eso funciona, gracias. –