Это, безусловно, возможно. Для обратной совместимости это необходимо, некоторые клиенты могут не разговаривать с TLS1.2, некоторые из них могут быть способны только TLS1.0 и т. Д. В пакете протокола TLS выполняется согласование версий в приветственных сообщениях сервера и клиента, поэтому после настройки клиента для использования, скажем, только TLS 1.2, он должен иметь возможность согласовать эту версию с сервером. TLS Реализация, такие как GnuTLS и OpenSSL, которые широко используются в качестве SSL позвоночника популярного серверного программного обеспечения, таких как Nginx, поддерживает такую конфигурацию тривиальную:
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
server {
listen 443 ssl;
server_name www.example.com;
keepalive_timeout 70;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
SSLv3 (который вы больше не должны использовать в любом случае) и все версии TLS (1.0, 1.1, 1.2) используют совместимый формат «привет», который ** автоматически согласовывает ** (и использует) самую высокую версию, общую для обеих конечных точек (на каждом сеансе). Был даже трюк, который позволил провести плавный переход между SSLv2 и SSLv3-up-back еще в ранние новички, но теперь это в основном упало на обочине. (OpenSSL 0.9.8 делал это примерно год назад, а 1.0.x все еще может, если вы настраиваете сборку и конфигурацию.) –