Eu tenho um blog Wordpress auto-hospedado. Sempre que possível, tento proteger as interfaces administrativas para aplicativos da Web usando a autenticação de certificado de cliente SSL e X.509. Eu tenho tudo isso funcionando corretamente para coisas como o phpMyAdmin, então os bits técnicos com o servidor web estão todos no lugar.
Minha configuração de hospedagem é:
- nginx 0.7.x
- PHP 5.2.10 com o patch fpm
- MySQL 5.x
Estou executando tudo isso em um VPS, então tenho apenas um IP externo. Eu tenho vários outros sites SSL em execução na caixa: um na porta padrão e todos os outros em portas alternativas (para que cada um possa ter um certificado diferente correspondido ao seu nome de host).
Minha intenção era ter dois blocos de configuração de servidor:
- uma porta blog.domain.com de veiculação 80 que retornou 404 se você tentou acessar qualquer coisa em / wp-admin
- outro em execução na porta 8443 com SSL sem restrições de URL, mas que exigia a apresentação de um certificado de cliente X.509 válido.
O problema que estou enfrentando é que o Wordpress não gosta de ser acessado em duas portas diferentes. Sempre que tento acessar o link , ele me redireciona para link , que é um vhost totalmente diferente (o site principal no servidor, em execução na porta padrão). Em seguida, recebo um erro de nome de certificado no navegador e, mesmo que eu cancele o aviso, não estou mais falando com o site wordpress.
A URL principal do blog é armazenada na tabela wp_options:
mysql> select option_value from wp_options where option_name = 'siteurl';
+------------------------------+
| option_value |
+------------------------------+
| http://blog.domain.com |
+------------------------------+
1 row in set (0.00 sec)
mysql >
Por isso, não é possível fazer uma segunda cópia dos arquivos do blog com o URL principal definido como link e acessar o interface administrativa dessa maneira.
Alguma idéia?
UPDATE
Depois de jogar por algum tempo com as respostas sugeridas, cheguei à conclusão de que não é possível fazer exatamente o que eu quero. A ativação dos recursos no wordpress resulta em usuários que fazem solicitações SSL para / wp- (admin | login | register), o que eles não podem fazer se eu precisar de certificados do cliente X.509 no lado do SSL.
A melhor solução que criei foi a configuração de um front-end SSL com autenticação de certificado que apenas enviava solicitações por proxy para o nginx não-SSL. Mesmo assim, não consigo cortar totalmente o acesso não-SSL ao / wp-admin, porque muito do CSS e do Javascript usados no registro de usuários e no gerenciamento de perfis vêm desse diretório.
Eu posso permitir acesso ao CSS, imagens e Javascript em / wp-admin via HTTP e apenas requer acesso SSL para os scripts PHP, mas os usuários não podem modificar seu perfil (esquemas de cores, nomes de exibição, etc.) O próximo passo seria identificar o subconjunto de scripts PHP necessários para usuários normais e deixar que estes passem pelo HTTP enquanto rejeitam o resto, mas então eu sou um escravo da equipe de desenvolvimento do wordpress, caso eles reorganizem as coisas.
Eu acho que este se resume a treinar-me para gerenciar apenas o blog sobre SSL, mesmo que o servidor me permita fazê-lo através de HTTP simples.