Situazione
Sto sviluppando un'applicazione C multipiattaforma che utilizza OpenSSL. Vorrei rilasciarlo per almeno i seguenti sistemi operativi:
- Windows 7 +
- MacOS High Sierra
- Debian 8 +
- Ubuntu 14.04 +
- Fedora 27 +
- Centos 7 +
- Arch Linux
Fino ad ora, ho avuto una linea di codice che prepara un oggetto SSL_CTX come qualcosa del tipo:
SSL_CTX_set_cipher_list(ctx->ctx, CIPHERS);
dove CIPHERS
è stato impostato su "HIGH:MED:!aNULL:!kRSA:!PSK:!SRP:!MD5:!RC4"
Tuttavia, mi sono reso conto che gli standard di packaging di Fedora richiedono che elimini questa riga o utilizzi il valore speciale PROFILE=SYSTEM
per CIPHERS
:
OpenSSL applications: ... ensure that there is no default cipher list specified, or that the default list is set as "PROFILE=SYSTEM". *
Questo mi ha fatto sentire a disagio su come stavo impostando la lista di cifrari in precedenza.
Domanda
È necessario o addirittura desiderabile chiamare SSL_CTX_set_cipher_list()
?
Se non è necessario / desiderabile, dovrei impostare le cifrature predefinite quando compilo OpenSSL per Windows e MacOS, o mi fido anche dei valori predefiniti?
Se è necessario / desiderabile, dove troverei altri valori specifici del sistema operativo per CIPHERS
, nel modo in cui PROFILE=SYSTEM
sembra essere specifico per Fedora?
Altro contesto
La mia applicazione al momento si collega solo al mio server, dove controllo l'elenco di cifrature contro Elenco suggerito di Mozilla per "Compatibilità moderna" e utilizzando strumenti come ssllabs.com e htbridge.com , e il mio server è impostato per utilizzare la preferenza del server per la cifratura.
Dal punto di vista tecnico, dal momento che la mia applicazione parla solo con il mio server, suppongo di poter rendere l'elenco di codici client rigido come un singolo codice. Tuttavia, sembra un'idea migliore impostarla su una lista più accettata, idealmente alla pari con il set di "Modern Compatibility" di Mozilla.
* Ci sono molti più dettagli nella linea guida di Fedora, ma questo è ciò che si riduce a me.