Eu acho que você pode fazer isso, mas não da maneira que você está tentando fazer.
Um certificado SSL é uma instrução que liga uma chave de criptografia pública a uma estrutura X.500 que inclui um elemento CN ou Common Name; um certificado assinado é aquele em que a ligação é verificável certificada por uma autoridade de certificação de terceiros, usando a chave pública já conhecida dos usuários finais (a pilha de certificados da Autoridade de Certificação (CA) que habita o navegador).
Quando você visita um site protegido por SSL com um navegador, a CN assinada é divulgada ao navegador. O que o navegador escolhe fazer é com o navegador. Os navegadores que eu conheço comparam com o nome do host solicitado e erro se for diferente (ou se a ligação certificada não resistir à análise, por exemplo, o certificado de assinatura não é conhecido pelo navegador ou a ligação está fora do ar). atual, mas essa é uma questão diferente). Não há nada que, em princípio, impeça você de obter um certificado assinado publicamente em que o CN é um endereço IP, não um FQDN (nome de domínio totalmente qualificado) [1], mas isso não fará magicamente o navegador comparar o CN com o IP. endereço, em vez de com o nome do host solicitado .
Suspeito que a maneira mais simples de resolver seu problema é iniciar sua própria autoridade de certificação, o que é fácil, e há muitos tutoriais públicos sobre; um está aqui . Depois que seus usuários finais importarem sua CA nos navegadores, todos os certificados que você criar serão aceitos como autorizados.
Você pode ter um segundo problema, pois deseja executar muitos sites NameVirtualHost em um único endereço IP. Historicamente, isso é insuperável, pois (ao contrário do TLS) a negociação SSL ocorre antes de qualquer outra coisa em uma conexão; isto é, a CN incorporada ao seu certificado é conhecida e usada pelo cliente antes que ele possa dizer a qual host está tentando se conectar.
Recentemente, parece ter sido introduzida uma extensão de protocolo chamada SNI (Server Name Indication), que permite ao cliente e ao servidor indicar que eles gostariam de fazer algumas coisas sobre o nome do host antes que o certificado SSL seja apresentado, permitindo o caminho certo para um conjunto de certificados a serem dados pelo servidor. Aparentemente, isso requer o apache 2.2.10, uma versão suficientemente recente do OpenSSL e ( importante ) suporte do lado do cliente.
Portanto, se eu tivesse que fazer o que você está tentando fazer, estaria cunhando meu próprio certificado CA, informando aos usuários finais que eles precisam usar navegadores compatíveis com SNI e importar meu certificado raiz CA, e cortar e assinar meus próprios certificados SSL para cada site de trilha de erros.
[1] OK, você pode não ter encontrado alguém que faça isso, mas esse é um detalhe da implementação. O que estou tentando mostrar aqui é que, mesmo que você o fizesse, isso não resolveria o seu problema.