Você pode definir o SSLProtocol apenas para o primeiro VirtualHost no arquivo de configuração. Todas as entradas subsequentes do VirtualHost herdarão essa configuração da primeira entrada e ignorarão silenciosamente sua própria configuração devido a um bug do OpenSSL .
Há um relatório de bug correspondente para mod_ssl , mas conforme descrito no relatório de bug, o problema precisa ser resolvido no OpenSSL (o certificado é herdado, mas não os protocolos).
Os conjuntos de cifras devem ser configurados independentemente para cada VirtualHost, caso contrário, você terminará com a lista padrão, incluindo muitas cifras inseguras. Além disso, esteja ciente de que os clientes mais antigos que não oferecem suporte à Server Name Indication (SNI) sempre usarão o host padrão (a menos que seja bloqueadoSSLStrictSNIVHostCheck
), o que pode confundir seu teste.
Em resumo, você deve poder especificar conjuntos de códigos e certificados personalizados para cada host virtual, mas até que o erro seja corrigido, não espere um comportamento correto com protocolos personalizados para cada host virtual.
Encontrei esse problema com o Apache 2.4 e 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, fazia parte de um fechamento em massa de problemas abertos e, embora uma 'correção parcial' tenha sido 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). Esse patch alterará o comportamento das instâncias do Apache configuradas com vários hosts virtuais SNI:
Rejeitar conexões não conformes ao vhost SSLProtocol
Isso foi desenvolvido e testado com 2.4.27 e em produção com essa versão. O patch foi modificado para 2.4.33 e levemente testado.
Isso verifica a versão da conexão com o SSLProtocol configurado para o host virtual correspondente com base no SNI. Como a conexão é feita inicialmente com o SSLProtocol configurado para o host padrão da porta, o host padrão deve incluir todos os protocolos que serão suportados por qualquer host virtual.
Esse patch adiciona um status de retorno adicional de APR_EMISMATCH à função init_vhost para que o retorno de chamada ssl_callback_ServerNameIndication registrado no OpenSSL possa retornar um alerta fatal SSL_AD_PROTOCOL_VERSION. Pretende-se produzir a mesma resposta ao ClientHello como ter um SSLProtocol especificado que não inclua a versão em questão. Como o retorno de chamada SNI é chamado durante o processamento do ClientHello e antes que uma resposta seja produzida, parece fazer exatamente isso.
Se você de repente vir mensagens do seguinte formato:
Rejecting version [version] for servername [hostname]
Em seguida, verifique novamente o SSLProtocol
seu host padrão.
SSLStrictSNIVHostCheck
são muito apreciadas. No entanto, também deve ser notado a partir da documentação citou que se definido como em qualquer outra máquina virtual, SNI clientes inconscientes não estão autorizados a aceder a este host virtual específico .