Назад | Перейти на главную страницу

Fedora 4, Apache 2.2.0, tomcat 5.5.7, openssl 0.9.7f, SSL-сертификаты, доменные имена и IP-адреса

Недавно я стал новым администратором старой системы, к которой все подходят с менталитетом «не трогайте, иначе это может сломаться». Теперь мне говорят «потрогать и не сломать!»

Задача: Что мне делать: удалить с сервера доменное имя www.domain1.com и заменить его на www.domain2.com.

Справочная информация: www.domain1.com использует сертификат SSL для размещения SOAP и защищенного сайта поиска данных.
Сервер давно устарел. Это сервер Fedora 4 с Apache 2.2.0, tomcat 5.5.7 и openssl 0.9.7f.

Я пытаюсь: Настроить www.domain2.com на сервере с сертификатом SSL, чтобы наши деловые отношения могли получить доступ к SOAP с www.domain2.com/SOAP. Тогда мы переместим и другие наши веб-сайты.

Путь первый: я хотел настроить два домена на одном IP-адресе (1.1.1.1). Чтобы было проще. Однако это не выглядит таким простым или безопасным (см. Ссылки внизу). Я обнаружил, что у меня недостаточно новых версий Apache или openssl для этого.

Второй путь: я решил посмотреть, что мне нужно сделать, чтобы обновить их, это привело к обнаружению, что yum и apt-get больше не имеют зеркал для FC4. Я нашел в Интернете версии, которые можно было установить вручную. Я не хочу идти этим путем, потому что сомневаюсь, что смогу отменить изменения. Я не люблю надеяться на серебряную пулю, которая тоже может убить меня, если я промахнусь.

У меня есть:

Поскольку путь, по которому я шел, не представляется возможным, я подумал, что могу настроить www.domain2.com на 1.1.1.2. С новой установкой Apache, которая затем могла также связываться с tomcat, чтобы предоставить доступ к SOAP.

Вопросы:

Текущий httpd-ssl.conf (комментарии удалены):

   Listen 443

   AddType application/x-x509-ca-cert .crt
   AddType application/x-pkcs7-crl    .crl

   SSLPassPhraseDialog  builtin


   SSLSessionCache        shmcb:/usr/local/apache-2.2.0/logs/ssl_scache(512000)
   SSLSessionCacheTimeout  300

   SSLMutex  file:/usr/local/apache-2.2.0/logs/ssl_mutex

   ##
   ## SSL Virtual Host Context
   ##

   <VirtualHost *:443>
       ServerName domain1.com
       ServerAdmin webmaster@www.domain1.com
       DocumentRoot /www/www.domain.com
       ErrorLog logs/sslerror_log
       CustomLog logs/ssl_request_log \
             "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
       TransferLog logs/ssltransfer_log
       JkMount  /domain1app1/* ajp13
       JkMount /domain1app2/* ajp13
       JkMount /SOAPdomain1app3/* ajp13
       JkMount /InformationRetrevaldoamin1app4/* ajp13

   SSLEngine on

   SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

   SSLCertificateFile /usr/local/apache-2.2.0/conf/domain1.crt

   SSLCertificateKeyFile /usr/local/apache-2.2.0/conf/domain1.key

   SSLCertificateChainFile /usr/local/apache-2.2.0/conf/intermediate.crt

   <FilesMatch "\.(cgi|shtml|phtml|php)$">
       SSLOptions +StdEnvVars
   </FilesMatch>

   BrowserMatch ".*MSIE.*" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
   </VirtualHost>  

Есть ли у кого-нибудь предложения относительно дальнейших действий? Я ищу самое маленькое изменение, которое "можно отменить", если я его испорчу. Мой ящик для инструментов довольно маленький, когда дело касается таких вещей. Любая помощь будет принята с благодарностью! Если у вас есть способ сделать это, о котором я не думал, дайте мне знать. :) О, и мой босс хотел бы, чтобы я получил сертификат ssl в субботу в течение 4-часового окна обслуживания. Если это невозможно, я могу отложить до следующего.

Заранее спасибо!

Отредактировано для удобства чтения.

Ссылки:

Несколько доменов SSL на одном IP-адресе и одном порту?

Сайт SSL не использует правильный IP-адрес в Apache и Ubuntu

не могу установить сертификат ssl на apache

Вам не следует устанавливать новый Apache. В любом случае Apache, вероятно, был установлен из пакетов RPM, поэтому второй Apache можно было установить только вручную. На мой взгляд, суеты такого рода лучше избегать. Однако у вас есть другие варианты.

Опция 1: Вы можете настроить Apache для обработки обоих сайтов. Для этого вам необходимо:

  • Используйте явный IP-адрес с директивой VirtualHost
  • и укажите директиву NameVirtualHost для каждого из них

Это действительно копипаст из текущей конфигурации с небольшими изменениями. Здесь должна выглядеть конфигурация. Таким образом, www.domain1.com и www.domain2.com обслуживают один и тот же контент, поскольку директивы JkMount остались прежними.

Вы должны скопировать текущий файл httpd-ssl.conf перед редактированием, поэтому в случае, если я что-то напортачил в конфигурации, вы можете скопировать оригинал и перезапустить сервер.

Вариант 2: Если вам нужно изменить только доменное имя, вам действительно не нужно ничего трогать. Регистрация нового домена не имеет ничего общего с Apache. После завершения регистрации DNS-серверы преобразуют www.domain2.com в 1.1.1.1 (то, что раньше было www.domain1.com). Как только это будет сделано и домен domain1.com будет удален, вам нужно будет заменить только директиву ServerName и сертификаты.

Если вам необходимо, чтобы два домена сосуществовали независимо от того, как долго, перейдите к 1.

Вариант 3: Если вы просто добавите

ServerAlias www.domain2.com

в существующую конфигурацию внутри определения VirtualHost, Apache по-прежнему будет обслуживать оба домена (на одном IP-адресе). Однако в этом случае у вас не может быть разных сертификатов для двух доменов.

-

Вот модифицированная конфигурация для Варианта 1:

Listen 443

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl

SSLPassPhraseDialog  builtin
SSLSessionCache        shmcb:/usr/local/apache-2.2.0/logs/ssl_scache(512000)
SSLSessionCacheTimeout  300

SSLMutex  file:/usr/local/apache-2.2.0/logs/ssl_mutex

NameVirtualHost 1.1.1.1:443
NameVirtualHost 1.1.1.2:443

##
## SSL Virtual Host Context
##

<VirtualHost 1.1.1.1:443>
    ServerName domain1.com
    ServerAdmin webmaster@www.domain1.com
    DocumentRoot /www/www.domain.com
    ErrorLog logs/sslerror_domain1_log
    CustomLog logs/ssl_request_domain1_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    TransferLog logs/ssltransfer_domain2_log
    JkMount  /domain1app1/* ajp13
    JkMount /domain1app2/* ajp13
    JkMount /SOAPdomain1app3/* ajp13
    JkMount /InformationRetrevaldoamin1app4/* ajp13

    SSLEngine on

    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

    SSLCertificateFile /usr/local/apache-2.2.0/conf/domain1.crt
    SSLCertificateKeyFile /usr/local/apache-2.2.0/conf/domain1.key
    SSLCertificateChainFile /usr/local/apache-2.2.0/conf/intermediate_for_domain1.crt

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>

    BrowserMatch ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0
</VirtualHost>

<VirtualHost 1.1.1.2:443>
    ServerName domain2.com
    ServerAdmin webmaster@www.domain2.com
    DocumentRoot /www/www.domain.com
    ErrorLog logs/sslerror_domain2_log
    CustomLog logs/ssl_request_domain2_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    TransferLog logs/ssltransfer_domain2_log

    JkMount  /domain1app1/* ajp13
    JkMount /domain1app2/* ajp13
    JkMount /SOAPdomain1app3/* ajp13
    JkMount /InformationRetrevaldoamin1app4/* ajp13

    SSLEngine on 
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

    SSLCertificateFile /usr/local/apache-2.2.0/conf/domain2.crt
    SSLCertificateKeyFile /usr/local/apache-2.2.0/conf/domain2.key
    SSLCertificateChainFile /usr/local/apache-2.2.0/conf/intermediate_for_domain2.crt

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>

    BrowserMatch ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0
</VirtualHost>