OpenSSL: come generare una CSR con i nomi alternativi (SAN) interattivi?

Desidero configurare OpenSSL in modo tale che quando openssl req -new per generare una nuova richiesta di firma del certificato, mi viene chiesto di includere tutti i nomi soggetti alternativi sulla CSR.

Ho aggiunto questa row alla sezione [req_attributes] del mio openssl.cnf :

  • Controllare se è installato il certificato root ca
  • Vulnerabilità Cisco CVE-2014-0224
  • Applicazione elegante di SSL in IIS 6.0
  • Protezione di due domini secondari su IIS7.5 con SSL sulla port 443
  • Nginx come proxy inverso per GitLab con SSL?
  • estrarre le parti originali ASN.1 dal certificato X.509
  •  subjectAltName = Alternative subject names 

    Questo ha l'effetto desiderato che mi viene ora richiesto per SAN quando genera una CSR:

     $ openssl req -new -out test.csr -key ./test.key <<< You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [US]: State or Province Name (full name) [New York]: Locality Name (eg, city) []: Organization Name (eg, company) [Example Co]: Organizational Unit Name (eg, section) []: Common Name (eg server FQDN or YOUR name) []:test.example.com Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Alternative subject names []:DNS:alt1.example.com 

    Nell'esempio precedente, ho immesso DNS:alt1.example.com quando viene richiesto per le SAN.

    Il problema è che la CSR risultante non sembra essere ben formattata:

     $ openssl req -text -in ./test.csr Certificate Request: Data: Version: 0 (0x0) Subject: C=US, ST=New York, O=The Banes, CN=test.thebanes.org Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: [...] Exponent: 65537 (0x10001) Attributes: X509v3 Subject Alternative Name:unable to print attribute 

    OpenSSL si lamenta di non essere in grado di printingre il valore dell'attributo Name Alternative Name. Dagli esempi in linea (where le persone codificano le SAN in openssl.cnf piuttosto che chiedere loro intertriggersmente come voglio), mi aspetto di vedere questo invece:

      Attributes: X509v3 Subject Alternative Name: DNS:alt1.example.com 

    Quindi, come posso generare una CSR ben formata con SANs provocati intertriggersmente?

    2 Solutions collect form web for “OpenSSL: come generare una CSR con i nomi alternativi (SAN) interattivi?”

    Ho combattuto con questo piccolo pizzico me stesso … che PITA!

    La mia soluzione: ho spostato tutto il file openssl.cnf in un file di Template Toolkit lasciando solo il pezzo di sans come pezzo di ricambio, poi avvolto uno script perl che lo circonda.

    Lo script perl richiede le voci di SAN, quindi li inserisce nel model, salva il model in un file temp e quindi chiamo openssl req con l'opzione -config indicata nel file temp. scartare il file temp dopo la generazione della CSR.

    Potresti anche guardare: http://www.openssl.org/docs/apps/config.html

    Ci sono altri che sovrascrivono $ ENV appena prima dell'esecuzione e avvolgono la chiamata a openssl req in perl o shell e compiono la stessa cosa in un modo leggermente più efficiente: http://blog.loftninjas.org/2008/11/11/ configurando-SSL-richieste-con-SubjectAltName-con-openssl /

    Questo "subjectAltName" non dovrebbe essere presente in questa sezione: attributes = req_attributes. Ma in una sezione per req_extensions = (chiama ciò che vuoi).

    E non c'è bisogno di tutto il BS come

     subjectAltName = Alternative subject names subjectAltName_default = DNS:www.g00gle.com 

    Basta digitare quello che vuoi, quanti desideri:

     subjectAltName = DNS:*.g00gle.com, DNS:g00gle.com, DNS:192.168.1.2 

    (L'ultimo fa l'accesso interno come " https://192.168.1.2 " senza avviso)

    Quindi qualcosa di simile:

     [ req ] req_extensions = my_extensions [my_extensions] subjectAltName = DNS:*.g00gle.com, DNS:g00gle.com, DNS:192.168.1.2 

    Saluti!

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.