Você pode definir o SSLProtocol apenas para o primeiro VirtualHost no arquivo de configuração. Todas as entradas subseqüentes do VirtualHost herdarão essa configuração da primeira entrada e silenciosamente ignorarão sua própria configuração devido a um erro do OpenSSL .
Existe um relatório de erros correspondente para mod_ssl , mas conforme descrito no relatório de erros, o problema precisa ser resolvido no OpenSSL (o certificado é herdado, mas não os protocolos).
Os conjuntos de cifras devem ser definidos independentemente para cada VirtualHost, caso contrário, você terá a lista padrão, incluindo muitas cifras inseguras. Além disso, esteja ciente de que os clientes mais antigos que não suportam a Indicação do Nome do Servidor (SNI) sempre usarão o host padrão (a menos que bloqueado usando SSLStrictSNIVHostCheck
), o que pode confundir seu teste.
Em suma, você deve ser capaz de especificar conjuntos de certificados e certificados personalizados para cada host virtual, mas até que o bug seja corrigido, não espere o comportamento correto com protocolos personalizados para cada host virtual.
Eu encontrei este problema com o Apache 2.4 e o modssl com o OpenSSL 1.0.1k, e espero que o Apache 2.2 esteja sujeito aos mesmos problemas.
Atualização (outubro de 2016): O bug do OpenSSL foi marcado como resolvido em 13 de outubro de 2016. No entanto, ele fazia parte de um fechamento em massa de problemas em aberto e embora uma 'correção parcial' fosse fornecida , o problema nunca foi totalmente resolvido.
Atualização (abril de 2018): o bug OpenSSL reenviado agora tem um patch disponível (a partir de 9 de abril de 2018). Este patch irá alterar o comportamento das instâncias do Apache configuradas com vários hosts virtuais SNI:
Reject connections not conforming to vhost SSLProtocol
This was developed and tested with 2.4.27 and in production with that version. The patch was modified for 2.4.33 and lightly tested.
This checks the version of the connection against the SSLProtocol configured for the virtual host that is matched based on the SNI. Because the connection is initially made with the SSLProtocol configured for the default host for the port, the default host must include all protocols that will be supported by any virtual host.
This patch adds an additional return status of APR_EMISMATCH to the init_vhost function so that the ssl_callback_ServerNameIndication callback registered with OpenSSL can return fatal alert SSL_AD_PROTOCOL_VERSION. This is intended to produce the same response to the ClientHello as having an SSLProtocol specified that does not include the version in question. Because the SNI callback is called during the processing of the ClientHello and before a response is produced, it seems to do exactly that.
Se, de repente, você vir mensagens do seguinte formato:
Rejecting version [version] for servername [hostname]
Em seguida, você deve verificar novamente seu SSLProtocol
para seu host padrão.