Не удается настроить домен и субдомен локально с помощью SSL

У меня есть следующая конфигурация моего локального сервера Apache:

<VirtualHost mysite.local:443>
    ServerName mysite.local
    SSLEngine on
    SSLCertificateFile "/Users/graziano/Projects/mysite/ssl/mysite.local.pem"
    SSLCertificateKeyFile "/Users/graziano/Projects/mysite/ssl/mysite.local-key.pem"
    SSLProxyEngine On   
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
</VirtualHost>

<VirtualHost access.mysite.local:443>
    ServerName access.mysite.local
    DocumentRoot "/Users/graziano/Projects/mysite/mysite-backend"
    SSLEngine on
    SSLCertificateFile "/Users/graziano/Projects/mysite/ssl/access.mysite.local.pem"
    SSLCertificateKeyFile "/Users/graziano/Projects/mysite/ssl/access.mysite.local-key.pem"         
</VirtualHost>

Вот мои хосты:

127.0.0.1 localhost
127.0.0.1 mysite.local
127.0.0.1 access.mysite.local

Я сгенерировал файлы сертификатов, используя этот фантастический инструмент .

Когда я захожу на https : //mysite.local , я правильно перенаправлен на localhost:3000 (который обслуживает приложение Next.js), но если я нажимаю https: //access.mysite.local (это установка Wordpress), Google Chrome жалуется, что соединение небезопасно:

NET::ERR_CERT_COMMON_NAME_INVALID

Если я инвертирую две директивы VirtualHost , т.е. перемещаю нижнюю директиву вверх и наоборот, то https: //access.mysite.local работает, но затем https: //mysite.local не работает и дает ту же ошибку выше.

Мне нужно выполнить эту работу, чтобы проверить файлы cookie аутентификации, совместно используемые приложением Next.js и установкой Wordpress.

0
задан 30 April 2019 в 21:27
1 ответ

Если вам нужно простое перенаправление, возможно, вам лучше сделать это следующим образом и пропустить запрос mod_proxy:
Перенаправить 301 / https: // localhost: 3000 /

В противном случае эта строка не требуется:
ProxyPassReverse / http: // localhost: 3000 /

На удаленном сервере (localhost: 3000) вы, вероятно, захотите добавить следующую строку в свою конфигурацию vhost:
SetEnvIf X-Forwarded-Proto https HTTPS = on

На вашем прокси-сервере вы можете добавить следующие строки:
ProxyPreserveHost на
RequestHeader устанавливает X-Forwarded-Proto "https"

Я также предлагаю прочитать этот пост:
Как я могу проверить, является ли мой сервер Apache открытым прокси?

Относительно конфигурации вашего виртуального хоста:
Я бы заменил mysite.local и access.mysite.local на * или IP-адрес (например, 127.0.0.1) в первой строке, сделав iit:

<VirtualHost *:443>


Затем перезагрузите Apache ...

0
ответ дан 5 December 2019 в 03:11

Теги

Похожие вопросы