GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo imprimir/mostrar el nombre principal de usuario o UPN de un certificado p12 en Linux?

El archivo PKCS#12 normalmente contiene un certificado X.509 y su clave privada asociada. Toda la información se almacena en el certificado, por lo que debe extraerla primero:

openssl pkcs12 -in foo.p12 -out foo.pem

(foo.pem contendrá tanto el certificado y la clave privada.)

El UPN se almacena como un tipo especial de "subjectAltName" en el certificado. Desafortunadamente, OpenSSL aún no sabe cómo mostrar los UPN (así como algunos otros tipos de nombres), por lo que el comando habitual para examinar certificados (openssl x509 -noout -text < foo.pem ) no trabajará. En su lugar, necesitará herramientas de bajo nivel.

Separe el certificado en un archivo propio (también puede hacerlo con un editor de texto):

openssl x509 < foo.pem > foo.cert

Imprima el certificado como una estructura ASN.1:

openssl asn1parse -i -dump < foo.cert

Busque las líneas que describen la extensión subjectAltName:

742:d=4  hl=3 l= 200 cons:     SEQUENCE          
745:d=5  hl=2 l=   3 prim:      OBJECT          :X509v3 Subject Alternative Name
750:d=5  hl=3 l= 192 prim:      OCTET STRING    [HEX DUMP]:3081BDA036...

Y ejecuta asn1parse de nuevo, esta vez diciéndole que profundice en el contenido de la extensión (que es otra estructura ASN.1); en este ejemplo, el valor (línea "OCTET STRING") comienza en el desplazamiento 750:

openssl asn1parse -i -dump -strparse 750 < foo.cert

Finalmente, busque el UPN en el basurero:

59:d=1  hl=2 l=  40 cons:  cont [ 0 ]        
61:d=2  hl=2 l=  10 prim:   OBJECT          :Microsoft Universal Principal Name
73:d=2  hl=2 l=  26 cons:   cont [ 0 ]        
75:d=3  hl=2 l=  24 prim:    UTF8STRING      :[email protected]

Si tiene herramientas GnuTLS instaladas, hay una forma más rápida pero no tan confiable. Una vez que haya extraído el certificado, puede enviarlo a certtool -i < foo.cert , e imprimirá el contenido sin procesar incluso de los nombres que no reconoce:

Subject Alternative Name (not critical):
    otherName OID: 1.3.6.1.4.1.311.20.2.3
    otherName DER: 0c1867726177697479404e554c4c524f5554452e45552e4f5247
    otherName ASCII: [email protected]

Busque el OID 1.3.6.1.4.1.311.20.2.3; será seguido por el contenido sin procesar del nombre. Afortunadamente, consisten en una única cadena UTF8String, por lo que la salida "otherName ASCII" se entiende fácilmente:simplemente elimine los dos primeros bytes (que se muestran aquí como puntos).

Una forma más sencilla sería simplemente intentar ingresar su propio inicio de sesión de Windows; el UPN siempre tiene la forma [email protected] .

(Es un poco triste que, de todas las herramientas que he probado, casi ninguna sabe cómo interpretar tipos de nombres tan simples y de uso común, incluso si son propietarios).


Linux
  1. ¿Cómo establecer el nombre de un hilo en Linux pthreads?

  2. ¿Cómo puedo obtener el estado del teclado en Linux?

  3. ¿Cómo obtengo el nombre de usuario en un Makefile?

  4. ¿Cómo puedo eliminar un usuario en Linux cuando el sistema dice que actualmente se usa en un proceso?

  5. ¿De cuántos grupos Unix puede ser miembro un usuario?

Cómo usar el comando usermod en Linux

Cómo saber los grupos de un usuario de Linux

Cómo usar el comando ulimit en Linux

Cómo cambiar el nombre de host en Debian Linux

¿Cómo puedo buscar un nombre de usuario por id en Linux?

¿Cómo puedo enumerar los atributos de usuario de Active Directory desde una computadora Linux?