¿Qué son los atributos de la bolsa y cómo puedo generarlos?

3 minutos de lectura

Avatar de usuario de Scheintod
Scheintod

al convertir algunos certificados del almacén de claves a openssl/pem, noté por primera vez que hay “Atributos de bolsa” antepuestos a los certificados.

El aspecto como este:

Bag Attributes
    friendlyName: CN=PositiveSSL CA,O=Comodo CA Limited,L=Salford,ST=Greater Manchester,C=GB
subject=/C=GB/ST=Greater Manchester/L=Salford/O=Comodo CA Limited/CN=PositiveSSL CA
issuer=/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST    Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware

¿Cumplen alguna función?

Noté que me gustan porque hacen que mis archivos en cadena (una concatenación de certificados) sean más claros. Lamentablemente, los certificados CA que descargo no los tienen.

Entonces, ¿cómo los genero?

avatar de usuario de dave_thompson_085
dave_thompson_085

Para ser exactos, aparentemente quiere decir convertir (o simplemente leer) con el openssl pkcs12 (import) utilidad un archivo PKCS#12, que puede ser compatible con Java como un almacén de claves, pero no fue el predeterminado (actualización) hasta Java9 en 2017. PKCS#12 fue diseñado y normalmente se usa para una clave privada y los certificados (generalmente múltiples ) por esa llave, aunque el formato es lo suficientemente flexible como para permitir certificados solitarios. OpenSSL línea de comando pkcs12 -export requiere una clave privada, aunque agregará certificados “adicionales” y un programa que llame al API aparentemente no puede hacer una clave privada. En mi experiencia, Java no admitía certificados solitarios en PKCS#12 antes de la versión 8, y en mi 8 y 9 tiene dos atributos: pkcs9.friendlyName y 2.16.840.1.113894.746875.1.1 que aparentemente es un uso de clave confiable definido por Oracle. La mayoría de los certificados solitarios no se almacenan ni se descargan como PKCS#12.

PKCS # 12 se define en términos de varias estructuras de “bolsa” (ligeramente diferentes) que contienen varias cosas, principalmente claves privadas y certificados con atributos opcionales adjuntos que, como era de esperar, se denominan “atributos de bolsa”; su caso (aparentemente) solo tiene certificados. Estos atributos siguen la estructura ahora convencional de un número arbitrario de pares de OID más valor dependiendo del OID. Nota en su pantalla solamente friendlyName es un atributo de bolsa, indicado porque está sangrado debajo del encabezado.

El subject= y issuer= las lineas son campos del propio certificado que la openssl pkcs12 (import) extractos de utilidades e impresiones para mayor comodidad. Si eso es suficiente, puede mostrarlos para cualquier certificado con el x509 utilidad; en particular, si desea tenerlos antes del “blob” de certificado codificado con PEM en el camino pkcs12 la salida hace, uso openssl x509 -in infile -subject -issuer -out outfile. Esto hace uno cert, por lo que si tiene una cadena en un archivo PEM, debe dividirla y hacer cada certificado por separado, y posiblemente combinarlos nuevamente después; por ejemplo algo como

# split into files cert_1, cert_2, etc.
$ awk <chain.pem -va="openssl x509 -subject -issuer >cert_" 
  '/^-----BEGIN/{b=a (++n);x=1}x{print|b}/^-----END/{close(b);x=0}'

# output entire "bag" to stdout (with blank lines between certs)
$ awk <chain.pem -va="openssl x509 -subject -issuer" \
  '/^-----BEGIN/{b=a;x=1}x{print|b}/^-----END/{close(b);x=0;print""}'

Como comparación, openssl s_client -showcerts hace algo muy similar: muestra el asunto y el emisor con cada blob de certificados de la cadena recibida, etiquetándolos con un número de nivel, “s:” e “i:”.

  • ¡Gracias! Esta es una respuesta más completa de lo que esperaba.

    – Scheintod

    18 de diciembre de 2014 a las 11:51

  • Aquí hay una versión del script Bash ligeramente modificada que mantiene todo el “bolso”/”paquete” juntos en lugar de dividirlo en varios archivos: bagcerts guión de shell

    – Dan Lensky

    17 de julio de 2018 a las 3:57


  • Dan Lenski, su secuencia de comandos bagcerts resolvió un problema de conexión de phpMyAdmin muy desconcertante. ¡Estoy muy agradecido!

    – nubexix

    17 de mayo de 2020 a las 5:51


¿Ha sido útil esta solución?