Regras de reconfiguração do Apache para SSL no subdomínio

1

Eu tenho um site implantado que usa kohana e reescrita de URLs para tornar os URLs mais tranquilos. Isso funciona bem.

Eu também tenho o Moodle instalado em um subdiretório no mesmo servidor e um subdomínio definido para este diretório. Então o Moodle é instalado em um diretório chamado students e o subdomínio é students.example.com. Isso também funciona bem.

Agora estou tentando instalar um certificado SSL que só preciso do subdomínio. Eu tenho um certificado curinga Comodo, então é suposto ser capaz de trabalhar com os subdomínios. Quando eu uso o link , ele funciona bem, então posso ver que o certificado SSL está em vigor. No entanto, quando tento o link , ele redireciona para o site principal. O link funciona bem.

O arquivo .htaccess que funciona para as regras de reescrita kohana é:

# Use PHP5.4 Single php.ini as default
AddHandler application/x-httpd-php54s .php
# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
   Order Deny,Allow
   Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
Options -Indexes

De acordo com os documentos, precisarei que as seguintes regras sejam adicionadas ao subdomínio:

#.htaccess WildCard SSL 
RewriteCond %{HTTP_HOST} ^students.example.com$ 
RewriteCond %{REQUEST_URI} !^/students/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /students/$1 
RewriteCond %{HTTP_HOST} ^students.example.com$ 
RewriteRule ^(/)?$ students/index.php [L] 

Eu tentei adicionar isso como a primeira regra e como a segunda regra, mas não funcionou. Eu agora entendo que terei que escrever um novo conjunto de regras para fazer o que eu quero.

Qualquer conselho sobre como fazer isso seria muito apreciado. Este site está hospedado com o Bluehost, se isso faz alguma diferença.

    
por Vincent Ramdhanie 27.10.2014 / 19:47

3 respostas

0

Eu suspeito que você tenha outro problema. Uma solicitação HTTP é parecida com:

GET /foo.php HTTP/1.1
Host: monkedung.example.com
Keep-Alive: timeout=15
Connection: Keep-Alive

Quando você criptografa com SSL, tudo depois da linha GET é criptografado, então o Apache não tem como saber qual host você está pedindo. Sem conhecer o host, não há como saber qual certificado usar para descriptografar a solicitação. Ele também não tem idéia de qual diretório redirecionar, qual arquivo .htaccess usar ou qualquer outra coisa determinada pelo host. Por esse motivo, o AFAIK só pode usar um único host SSL por endereço IP.

Eu tentaria definir

students.example.com

como o domínio padrão do apache e example.com, se esse for o único para o qual você deseja usar ssl. Também gostaria de ativar a depuração para suas regras de reconfiguração, para que você possa ver se elas realmente estão sendo disparadas. Se o problema é o problema ssl mencionado acima, eu suspeito que você não está indo tão longe.

Espero que isso ajude.

    
por 01.11.2014 / 14:21
0

Parece que você está tentando hospedar example.com e students.example.com no mesmo endereço IP. Isso é bom se você estiver usando HTTP regular, mas se você estiver usando HTTPS (porta 443), então você precisa servir isso em um endereço IP diferente.

<VirtualHost *:80>
    DocumentRoot /var/www/example.com
    ServerName example.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/students.example.com
    ServerName students.example.com
</VirtualHost>

<VirtualHost 192.168.1.10:443>
    DocumentRoot /var/www/example.com
    ServerName example.com
    SSLEngine on
    SSLCertificateFile /path/to/example.com.cert
    SSLCertificateKeyFile /path/to/example.com.key
</VirtualHost>


<VirtualHost 192.168.1.11:443>
    DocumentRoot /var/www/students.example.com
    ServerName students.example.com
    SSLEngine on
    SSLCertificateFile /path/to/example.com.cert
    SSLCertificateKeyFile /path/to/example.com.key
</VirtualHost>
    
por 02.11.2014 / 00:35
0

Você já revisou seu config.php no moodle depois da troca de SSL?

Observe que seu $CFG->wwwroot agora foi alterado. Deve ser http s : //students.example.com

    
por 06.11.2014 / 08:35