In SSL ci sono due aree in cui è possibile utilizzare SHA-1 o SHA-256:
- nelle viscere specifiche di il protocollo stesso , per il "PRF" interno (una funzione utilizzata durante l'handshake) e per proteggere l'integrità dei successivi scambi di dati;
- come parte della firma sul certificato del server, e il suo certificato CA, e così via.
SSL 3.0, TLS 1.0 e TLS 1.1 utilizzano MD5 e SHA-1, non SHA-256. Se vuoi eliminare gradualmente SHA-1, allora hai bisogno di per passare a TLS 1.2. Da questa risposta e dai suoi commenti, puoi vedere che il supporto di TLS 1.2 dai browser non è un dato ed è lento a percolare in tutto il settore. IE su Windows XP non supporterà certamente TLS 1.2. In particolare, molti dispositivi basati su Android utilizzeranno le vecchie versioni di Android e il suo browser e non verranno aggiornati a breve. Fortunatamente, puoi configurare il tuo server per pubblicizzare il supporto per TLS 1.2 ma tornare alle versioni precedenti se il client non lo supporta; questo è il comportamento normale di un handshake SSL e dovrebbe garantire una transizione senza intoppi.
Ciò che XP + SP3 supporta su SHA-256 è il secondo punto: i certificati firmati con SHA-256 come funzione di hash sottostante. Questo funziona. Questa pagina di digicert (una CA commerciale) sostiene il supporto SHA-256, e con ciò significa supporto SHA-256 nei certificati ; quando afferma "supporto browser" parla della convalida del certificato, non di TLS 1.2. Secondo questa pagina, SHA-256 nei certificati sembra funzionare "ovunque". Non dicono nulla su Android, ma è probabile che Android abbia supporto SHA-256 perché ha supportato SHA-256 internamente dal primo giorno (è basato su Java, che ha conosciuto SHA-256 per anni).
Per riassumere: puoi utilizzare SHA-256 per i certificati; funzionerà (quasi) ovunque. Non puoi ancora richiedere TLS 1.2 (troppi browser client non sono in grado di gestirlo) ma puoi supportarlo e decidere di proibire le versioni precedenti (quelle che usano internamente SHA-1) in un secondo momento.