1) Создание SSL-сертификата для локального хоста
Чтобы использовать HTTPS с localhost
, нам фактически необходимы два сертификата: корневой сертификат и сертификат домена специально созданный для домена localhost
.
Эти изящные сценарии Я нашел, что позаботился о создании обоих.Они очень просты в использовании - просто внимательно следуйте инструкциям, и все будет хорошо.Единственное, что не очень понятно в документации, это то, что там, где написано Then mark the certificate as trusted
, это означает, что вы должны нажать на сертификат в Access Keychain Access и изменить параметр Trust
на Always
.
( Здесь вы можете найти более подробное объяснение того, что на самом деле делают эти сценарии)
Если у вас все работает, у вас должно быть два файла server.crt
иserver.key
.Я создал папку ssl
в /Applications/MAMP
и переместил в нее файлы;но вы можете разместить их там, где считаете нужным.
Давайте теперь забудем о файлах и перейдем к настройке Apache.
2) Настройте Apache MAMP для приема SSL
По умолчанию Apache не настроен на прием SSL-соединений, поэтому мы должны это изменить.Откройте /Applications/MAMP/conf/apache/httpd.conf
и убедитесь, что следующие строки НЕ закомментированы.Если они есть, удалите #
в начале строки:
LoadModule ssl_module modules/mod_ssl.so
Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf
Также найдите эту строку:
Servername localhost:443
и убедитесь, что порт установлен на 443443 - это порт по умолчанию для защищенных соединений HTTPS (обычные незащищенные HTTP-соединения по умолчанию прослушивают порт 80).
Далее откройте /Applications/MAMP/conf/apache/extra/httpd-ssl.conf
и убедитесь, что у вас есть эта строка:
Listen 443
Опять же, это важно, потому что мы должны настроить все на одном и том же порту.Для этого вам также следует щелкнуть значок MAMP в док-станции вашего MAC, нажать Preferences
, перейти на вкладку Ports
и выбрать Set Web & MySql ports to 80 & 3306
.
Остановите и перезапустите MAMP, чтобы применить сделанные нами изменения.
3) Настройте виртуальный хост по умолчанию для SSL
Пока он все еще в /Applications/MAMP/conf/apache/httpd.conf
, найдите следующие строки:
<VirtualHost _default_:443>
# General setup for the virtual host
DocumentRoot "/Applications/MAMP/Library/htdocs"
ServerName www.example.com:443
Эти строки задают поведение Apache по умолчанию для всехHTTPS-соединения.ServerName
- это просто фиктивное имя, которое вы должны заменить на localhost
;Вы также должны убедиться, что значение по умолчанию DocumentRoot
соответствует корневой папке вашего проекта.
Поэтому измените вышеуказанные строки следующим образом:
<VirtualHost _default_:443>
# General setup for the virtual host
DocumentRoot "/path/to/your/htdocs"
ServerName localhost
Если вы прокрутите немного дальше, пока мы все еще в директиве VirtualHost
по умолчанию, вы найдете эти две строки:
SSLCertificateFile "/Applications/MAMP/conf/apache/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key"
Измените их так, чтобы вы помещали файлы, которые мы сгенерировали на шаге 1. Как я уже говорил, я поместил мои в "/ Applications / MAMP / ssl", поэтому я изменилВыше строки:
SSLCertificateFile "/Applications/MAMP/ssl/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/ssl/server.key"
Остановите и перезапустите MAMP, чтобы применить изменения.Теперь, если вы перейдете на https://localhost
, вы сможете увидеть список проектов в вашей корневой папке.Вот и все для localhost
!
4) Создайте сертификат SSL для пользовательских локальных доменов
Что делать, если вы хотите создать собственный домен myproject.dev
и использовать SSL для этого тоже, так что выможет получить к нему доступ в https://myproject.dev
?
Как и в случае с localhost
, нам нужно создать сертификат SSL специально для домена myproject.dev
, а затем настроить виртуальный хост для myproject.dev
.Давайте начнем с создания сертификата.
Опять же, я нашел этот маленький инструмент под названием create-ssl-certificate
, который сгенерирует для вас сертификат SSL для определенного локального домена.Это тоже очень просто в использовании, единственная не совсем понятная часть - это пакет NPM, который вы можете установить глобально с помощью npm -g install create-ssl-certificate
.
Если с create-ssl-certificate
все прошло хорошо, теперь у вас должно быть два файла, как это было с localhost
на шаге 1. По умолчанию create-ssl-certificate
вызывает сгенерированные файлы ssl.crt
и ssl.key
.Я переименовал их в server.crt
и server.key
, чтобы соответствовать файлам localhost
.Затем я создал папку ssl
в корневой папке myproject
и переместил туда файлы.
Давайте на минутку забудем о файлах и перейдем к некоторой конфигурации Apache.
4) Настройте Apache MAMP для приема виртуальных хостов
Если вы уже создали виртуальные хосты, возможно, вы уже сделали это, поэтому вы можете пропустить этот шаг.
Единственное, что нам нужно сделать, чтобы «активировать» возможность создания виртуальных хостов, - это перейти на /Applications/MAMP/conf/apache/httpd.conf
и раскомментировать эту строку:
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
5) Настройте виртуальный хост локального домена для SSL
Теперь мы можем настроить виртуальный хост, чтобы иметь доступ к myproject
в https://myproject.dev
. Прежде всего, отредактируйте файл hosts
и добавьте следующую строку:
127.0.0.1 myproject.dev
Затем перейдите к /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
и добавьте следующее:
<VirtualHost myproject.dev:443>
ServerName myproject.dev
DocumentRoot "/Users/myusername/Sites/myproject"
SSLEngine on
SSLCertificateFile "/Users/myusername/Sites/myproject/ssl/server.crt"
SSLCertificateKeyFile "/Users/myusername/Sites/myproject/ssl/server.key"
</VirtualHost>
С этой конфигурацией вы сможете получить доступ к https://myproject.dev
, потому что сервер проинструктирован искать сертификаты SSL, которые мы создали на шаге 4.