Come aggiungere string di utilizzo chiave estesa quando genera un certificato auto-firmato utilizzando openssl

Sto utilizzando openssl su Mac OS X 10.9 per generare un certificato auto-firmato per Windows Server Remote Desktop Services.

Utilizzando il command qui sotto posso generare il certificato,

  • apache ssl - imansible get il certificato locale dell'emittente
  • Rimozione di un ruolo Hyper-V da Windows Server 2012 R2
  • Come posso impedire ad un'altra interface di networking di aggiornare il DNS con il suo indirizzo IP?
  • Dove sono le ulimit predefinite specificate in OS X (10.5)?
  • Come abilitare "Sleep" per il server Windows 2012
  • Routing IPv6 su VPN
  • openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt 

    Tuttavia, devo aggiungere una estesa string di utilizzo chiave Authentication Server (1.3.6.1.5.5.7.3.1) e non riesco a capire come farlo nel command precedente.

    Ho provato a usare l'openssl option -extfile con un file contenente questo,

     [= default ] extendedKeyUsage = 1.3.6.1.5.5.7.3.1 

    Tuttavia, ottengo un errore che l'opzione "-extfile non si trova"

    One Solution collect form web for “Come aggiungere string di utilizzo chiave estesa quando genera un certificato auto-firmato utilizzando openssl”

    Mentre openssl x509 utilizza -extfile , il command che si utilizza, openssl req , deve -config specificare il file di configuration.

    Quindi, puoi usare un command come questo:

     openssl req -x509 -config cert_config -extensions 'my server exts' -nodes \ -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt 

    I soliti prompt per i bit di nome distinti sono definiti nel file di configuration predefinito (probabilmente /System/Library/OpenSSL/openssl.cnf su OS X), ma questo file non viene elaborato quando si utilizza -config , quindi il file di configuration deve anche includere alcuni bit DN. Così, il cert_config sopra cert_config potrebbe sembrare qualcosa di simile:

     [ req ] prompt = no distinguished_name = my dn [ my dn ] # The bare minimum is probably a commonName commonName = secure.example.com countryName = XX localityName = Fun Land organizationName = MyCo LLC LTD INC (dba OurCo) organizationalUnitName = SSL Dept. stateOrProvinceName = YY emailAddress = ssl-admin@example.com name = John Doe surname = Doe givenName = John initials = JXD dnQualifier = some [ my server exts ] extendedKeyUsage = 1.3.6.1.5.5.7.3.1 # 1.3.6.1.5.5.7.3.1 can also be spelled serverAuth: # extendedKeyUsage = serverAuth # see x509v3_config for other extensions 

    Come indicato nel commento, probabilmente è ansible escludere la maggior parte dei campi DN. Per l'utilizzo di HTTPS, penso che tutto ciò di cui hai bisogno è un CN che corrisponda al tuo hostname.


    Nella sezione Formato sezione req (1) della sezione Nome e attributo distinti, è ansible illustrare come modificare la configuration precedente per richiedere i valori (e fornire i valori predefiniti) se si desidera generare più certificati / richieste simili.

    Se hai bisogno di altre estensioni del certificato, controlla x509v3_config (5) per quali altri bit è ansible specificare nelle sezioni di estensione.

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