Я думаю, что вы можете сделать это, но не так, как вы пытаетесь это сделать.
Сертификат SSL - это оператор, связывающий открытый ключ шифрования со структурой X.500, которая включает в себя элемент CN или Common Name; подписанный сертификат - это один из таких случаев, когда привязка проверяется проверяемым сторонним центром сертификации с использованием открытого ключа, уже известного конечным пользователям (тот стек сертификатов Центра сертификации (CA), который находится внутри вашего браузера).
При посещении веб-сайта, защищенного SSL, с помощью браузера подписанный CN становится известным браузеру. То, что браузер выбирает делать с этим, зависит от браузера. Браузеры, о которых я знаю, сравнивают его с запрошенным именем хоста, и выдают ошибку, если она отличается (или если эта сертифицированная привязка не подходит для анализа, например, сертификат подписи неизвестен браузеру или привязка устарела. на сегодняшний день, но это другой вопрос). Нет ничего, что в принципе мешает вам получить публично подписанный сертификат, где CN - это IP-адрес, а не FQDN (полное доменное имя) [1], но это не может волшебным образом заставить браузер сравнивать CN с IP адрес, а не с запрошенным именем хоста .
Я подозреваю, что самый простой способ решить вашу проблему - это запустить собственный ЦС, что легко сделать, и есть много общедоступных учебных пособий; один здесь . После того, как ваши конечные пользователи импортируют ваш CA в свои браузеры, все сертификаты, которые вы создаете, будут приняты как официальные.
Тогда у вас может возникнуть вторая проблема: вы хотите запускать множество сайтов NameVirtualHost на одном IP-адресе. Исторически это было непреодолимым, поскольку (в отличие от TLS) согласование SSL происходит раньше всего на соединении; то есть CN, встроенный в ваш сертификат, становится известным и используется клиентом, прежде чем клиент сможет сказать, к какому хосту он пытается подключиться.
Недавно появилось расширение протокола, называемое SNI (индикация имени сервера), которое позволяет клиенту и серверу указывать, что они хотели бы выполнить некоторые действия с именами хостов до представления SSL-сертификата, позволяя выбрать один из набора. сертификатов, которые будут предоставлены сервером. Очевидно, для этого требуется apache 2.2.10, достаточно свежая версия OpenSSL и (что важно ) поддержка на стороне клиента.
Поэтому, если бы мне пришлось делать то, что вы пытаетесь сделать, я бы смотрел на создание собственного сертификата CA, сообщая моим конечным пользователям, что они должны использовать браузеры, поддерживающие SNI, и импортируя мой корневой сертификат CA, а также вырезая и подписывать свои собственные сертификаты SSL для каждого сайта багтрек.
[1] Хорошо, возможно, вы не нашли никого, кто это сделает, но это деталь реализации. Здесь я пытаюсь показать, что даже если бы вы это сделали, это не решило бы вашу проблему.