1

Мы решили запустить безопасный веб-прокси через Apache. мы присвоили серверу доменное имя, а затем купили SSL-сертификат для этого домена, а затем применили его в Ubuntu 12.04 (точнее) с Apache/2.2.22.

Когда я запускал сервер по умолчанию на сайте (HTTP), то есть только с IP в качестве виртуального хоста, прокси работал нормально.

Тогда я решил сделать SSL для этого прокси-сервера, так как SSL для IP-адреса не разрешен, мы выбрали домен и поэтому пошли дальше.

Также я включил mod_rewrite, чтобы все HTTP-запросы проходили через сайт SSL

Вот мой HTTP виртуальный хост и конфигурация виртуального хоста SSL соответственно,

<VirtualHost 12.12.12.12:80>
    ServerAdmin webmaster@localhost
    ServerName example.net
    ServerAlias www.example.net
    ProxyRequests On
    ProxyVia On
    <Proxy *>
    Order allow,deny
    Deny from all
    Allow from 104.12
    </Proxy>
    RewriteEngine   on
    RewriteCond     %{SERVER_PORT} ^80$
    RewriteRule     ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
    DocumentRoot /var/www
    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel debug

    CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
   AllowOverride None
    Order deny,allow
    Deny from all
   Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

Конфигурация SSL

    <IfModule mod_ssl.c>
     <VirtualHost  12.12.12.12:443>
        ServerAdmin webmaster@localhost
        ServerName example.net
        ServerAlias www.example.net
        ProxyVia On
        ProxyPass / https://127.0.0.1:443/
        ProxyPreserveHost On
        SSLProxyCheckPeerCN off
        #ProxyPreserveHost on
        ProxyRequests On
        SSLEngine on
        SSLProxyEngine On
        SSLCertificateFile    /etc/ssl/ssl_proxy/example_net.crt
        SSLCertificateKeyFile /etc/ssl/ssl_proxy/example.net.key
        SSLProxyVerify require
        SSLProxyVerifyDepth 10
        SSLProxyMachineCertificateFile /etc/ssl/ssl_proxy/example.net.csr
        SSLProxyCACertificateFile /etc/ssl/ssl_proxy/example_net.ca-bundle
        SSLStrictSNIVHostCheck on
        DocumentRoot /var/www
        Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
        <Proxy *>
        Order allow,deny
        Deny from all
        Allow from 104.12
        </Proxy>
        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

        Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
                Options Indexes MultiViews FollowSymLinks
                AllowOverride None
                Order deny,allow
                Deny from all
                Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>
       <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory> 
        BrowserMatch "MSIE [2-6]" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
        # MSIE 7 and newer should be able to use keepalive
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>
</IfModule>

Я перепробовал все вышеизложенные варианты, но ни один из них не сработал. Поэтому, когда я захожу на сайт, я получаю сообщение об ошибке

Hostname example.net provided via SNI and hostname yahoo.com provided via HTTP are different.

Есть идеи, что я делаю не так?

Спасибо, Сай

2 ответа2

0

Все, что я понял, это то, что через apache это невозможно. Но современные серверы, такие как Nginx, Node.js поддерживают его по протоколу SPDY, вот ссылка

0

В Apache была ошибка, которая вызвала эту ошибку из-за сравнения имен хостов с учетом регистра. Это было исправлено недавно, и теперь доступна новая сборка с исправлением. Кроме того, вы можете изменить сертификат на все строчные буквы, чтобы он был более совместим с соглашением (верхний регистр используется редко).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .