Cómo eliminar solo un certificado de una cadena de certificados en un almacén de claves Java

Tengo un servidor Tomcat con una cadena de certificados para HTTPS almacenada en un almacén de claves Java. La cadena incluye el certificado de CA raíz autofirmado. Aunque esto aparentemente está bien según la especificación TLS , algunos servicios de validación advierten al respecto, y probablemente sea mejor dejarlo .

¿Cómo puedo editar el almacén de claves para eliminar solo el certificado de CA raíz autofirmado, pero dejar intacto el resto de la cadena y la clave privada?

Respuesta 1

Primero, convierta el almacén de claves de JKS a PKCS12 (este y otros comandos requerirán la entrada de contraseña):

keytool -importkeystore -srckeystore old.jks -destkeystore old.p12 -deststoretype pkcs12

A continuación, exporte un archivo PEM con clave y certs desde el archivo PKCS12:

openssl pkcs12 -in old.p12 -out pemfile.pem -nodes

Ahora simplemente use un editor de texto para editar pemfile.pemy eliminar el certificado ofensivo (y sus "atributos de bolsa" anteriores).

Luego, cargue el archivo PEM editado en un nuevo archivo PKCS12. Deberá dar al cert / key el alias de almacén de claves apropiado, por ejemplo, "tomcat", en este punto.

openssl pkcs12 -export -in pemfile.pem -name tomcat -out new.p12

Finalmente, vuelva a convertir de PKCS12 a JKS:

keytool -importkeystore -srckeystore new.p12 -destkeystore new.jks -srcstoretype pkcs12

El archivo new.jkses lo que quieres.

Respuesta: 2

En mi código tengo muchas advertencias para "código muerto". El problema es que tengo un código como este público anula myMethod (texto de cadena final) {if (CONST_FLAG && something == true) {...

Para mi proyecto actual, tengo que enviar una firma de PHP a la aplicación Java. Estoy usando Crypt / RSA en este momento para firmar mis datos. Para la prueba, estoy firmando solo "abc" con el siguiente código: $ rsa = ...

Hola, estoy tratando de entender el código que he escrito y por qué imprime el resultado debajo de public void isSymmetricNow (int [] [] matrix) {for (int i = 0; i <matrix.length; i ++) {for .. .

Estoy usando el cifrado AES-256 con el modo CFB. Tengo que usar la clave de 32 bytes. Pero estoy un poco confundido sobre el vector de inicialización. ¿Cuántos bytes de vector de inicialización se deben usar con AES -...