Я думаю, що ти можеш це зробити, але не так, як ти намагаєшся це зробити.
Сертифікат SSL - це твердження, що прив'язує відкритий ключ шифрування до структури X.500, яка включає елемент CN або загальне ім'я; підписаний сертифікат - це такий, коли прив'язка може бути сертифікована стороннім сертифікаційним органом, використовуючи відкритий ключ, уже відомий кінцевим користувачам (той стек сертифікатів Органу з сертифікації (CA), що знаходиться у вашому браузері).
Коли ви відвідуєте захищений від SSL веб-сайт із браузером, підписаний CN стає відомим браузеру. Що браузер вирішить зробити з цим, залежить від браузера. Браузери, які я знаю, порівнюють його з запитуваним ім'ям хосту, і помилка, якщо вона відрізняється (або якщо це сертифіковане прив'язка не витримує аналіз, наприклад, сертифікат підпису не відомий веб-переглядачу або прив'язка не- застарілих, але це вже інше питання). Нічого, що в принципі не заважає вам отримати публічно підписаний сертифікат, де CN є IP-адресою, а не FQDN (повнокваліфіковане доменне ім’я) [1], але це не змусить браузера порівнювати CN з IP адресу замість запитуваного імені хоста .
Я підозрюю, що найпростіший спосіб вирішити вашу проблему - це створити власний СА, що легко зробити, і про це є багато підручників з громадськості; один тут . Після того, як ваші кінцеві користувачі імпортують ваш CA у свої веб-переглядачі, усі сертифікати, які ви знайдете, будуть прийняті як авторитетні.
Тоді у вас може виникнути друга проблема в тому, що ви хочете запустити багато сайтів NameVirtualHost за однією IP-адресою. Це історично було непереборним, оскільки (на відміну від TLS) SSL переговори відбуваються раніше, ніж будь-що інше на зв'язку; тобто вбудований у ваш сертифікат CN відомий і використовується клієнтом, перш ніж клієнт зможе сказати, до якого хоста вони намагаються підключитися.
Нещодавно, здається, було введено розширення протоколу під назвою SNI (Вказівка імені сервера), що дозволяє клієнтові та серверу вказувати, що вони хотіли б виконати деякі імена хоста до того, як буде представлено сертифікат SSL, що дозволяє отримати право набір сертифікатів, що надаються сервером. Мабуть, для цього потрібен apache 2.2.10, досить недавня версія OpenSSL та (що важливо ) підтримка на стороні клієнта.
Тож якби мені довелося робити те, що ти намагаєшся, я б дивився на карбування власного сертифіката ЦС, кажу своїм кінцевим користувачам, що вони повинні використовувати браузери, які підтримують SNI, та імпортувати мій кореневий сертифікат CA, а також вирізати та підписати власні SSL-сертифікати для кожного сайту bugtrack.
[1] Гаразд, ви, можливо, не знайшли того, хто це зробить, але це детальна інформація про реалізацію. Я намагаюся тут показати, що навіть якби ви це зробили, це не вирішило б вашої проблеми.