No hay atributos en la solicitud de certificado

3

Usamos una CA que espera un challengePassword , así que configuro un openssl.cnf como este:

oid_section            = OIDs

[ req ]
distinguished_name     = req_distinguished_name
attributes             = req_attributes
req_extensions         = v3_req

[ OIDs ]
RequestProfile         = 1.3.6.1.4.1.311.20.2

[ req_distinguished_name ]
commonName             = Common Name
organizationalUnitName = Organizational Unit Name
organizationName       = Organization Name
localityName           = Locality Name
stateOrProvinceName    = State or Province Name
countryName            = Country

[ v3_req ]
basicConstraints       = CA:FALSE
keyUsage               = digitalSignature, keyEncipherment
subjectKeyIdentifier   = hash
subjectAltName         = @alt_names
RequestProfile         = ASN1:BMP:tlsserver

[ alt_names ]
IP                     = 192.168.0.1
DNS                    = test.unit.org.ch

[ req_attributes ]
challengePassword      = ChallengePassword

He creado una solicitud de certificado con

openssl req \
   -new -keyout test.key -out test.csr \
   -subj /C=ch/ST=BE/L=Berne/O=org/OU=unit/CN=test.unit.org.ch \
   -newkey rsa:2048 -nodes -config openssl.cnf

Por lo que puedo decir, el test.csr se ve generalmente bien, excepto que la lista Attributes está vacía. Esperaba ver la contraseña del desafío allí:

[simon@centos Projects]$ openssl req -noout -text -in test.csr 
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=ch, ST=BE, L=Berne, O=org, OU=unit, CN=test.unit.org.ch
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ce:b2:52:74:40:5e:c4:73:13:2a:08:ec:94:ea:
                    [...]
                Exponent: 65537 (0x10001)
        Attributes:
        Requested Extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Digital Signature, Key Encipherment
            X509v3 Subject Key Identifier: 
                37:1E:95:70:3B:27:BA:8F:09:77:E4:42:DD:FD:A8:DD:29:01:F0:51
            X509v3 Subject Alternative Name: 
                IP Address:192.168.0.1, DNS:test.unit.org.ch
            1.3.6.1.4.1.311.20.2: 
                ...t.l.s.s.e.r.v.e.r
    Signature Algorithm: sha256WithRSAEncryption
         0b:5e:96:a2:83:b0:d5:08:1f:d0:34:e3:d4:c4:37:53:f2:28:
         [...]

Esto es con OpenSSL versión 1.0.2k (CentOS 7.5), pero también ocurre en RHEL 7.3 con la versión 1.0.1e.

Probablemente estoy malinterpretando algo muy básico. ¿Podría alguien darme una pista?

    
pregunta simonz 16.05.2018 - 11:32
fuente

1 respuesta

1

La página de manual no te lo dice, pero si miras el código, la lógica de la sección distinguished_name (asunto) y la sección attributes realmente se mezclan. Cuando usa prompt=no en el archivo de configuración, afecta a ambos, y cuando usa -subj en la línea de comandos, usa una ruta de código diferente que se salta y, por lo tanto, desactiva los atributos.

Salvo una reorganización bastante importante del código, si desea atributos, no puede usar -subj . Puede usar el valor predeterminado donde se le solicitan valores de DN y atributos, o establecer prompt=no con ambos valores en el archivo de configuración. Si no desea editar realmente el archivo de configuración (o sus versiones), recuerde que en algunos shells de Unix (incluido CentOS) puede usar la sustitución de procesos como:

 openssl req -new -config <(cat fixedpart; printf '%s\n' '[req_DN]' 'commonName=test.invalid' '[req_attributes]' 'challengePassword=letmein') ...
    
respondido por el dave_thompson_085 17.05.2018 - 13:52
fuente

Lea otras preguntas en las etiquetas