Как настроить SSL для локального хоста и виртуальных хостов с MAMP?

Мне нравится анализировать HTML с регулярными выражениями. Я не пытаюсь разбирать идиот HTML, который намеренно нарушен. Этот код является моим основным парсером (версия Perl):

$_ = join "",; tr/\n\r \t/ /s; s//>\n/g; s/\n ?\n/\n/g;
s/^ ?\n//s; s/ $//s; print

Он называется htmlsplit, разбивает HTML на строки, с одним тегом или фрагментом текста в каждой строке. Затем линии могут быть обработаны другими текстовыми инструментами и сценариями, такими как grep , sed , Perl и т. Д. Я даже не шучу :) Наслаждайтесь.

Достаточно просто переписать мой скрипт Perl-all-first Perl в приятную поточную вещь, если вы хотите обрабатывать огромные веб-страницы. Но это действительно не обязательно.

Бьюсь об заклад, я заберусь для этого.

HTML Split


Против моего ожидая, что это получило некоторые upvotes, поэтому я предлагаю несколько правильных выражений:

/(<.*?>|[^<]+)\s*/g    # get tags and text
/(\w+)="(.*?)"/g       # get attibutes

Они хороши для XML / XHTML.

С небольшими вариациями он может справиться с беспорядочным HTML ... или сначала конвертировать HTML -> XHTML.


Лучший способ записи регулярных выражений - в Lex / Yacc стиль, а не непрозрачные однострочные или прокомментированные многострочные чудовища. Я не делал этого здесь; эти им едва ли нужны.

0
задан grazianodev 17 January 2019 в 15:40
поделиться

1 ответ

1) Создайте сертификат SSL для localhost

Чтобы использовать HTTPS с localhost, нам фактически нужны два сертификата: корневой сертификат и сертификат домена специально созданный для домена localhost.

Эти изящные сценарии , которые я нашел, заботятся о создании обоих. Они очень просты в использовании - просто внимательно следуйте инструкциям, и все будет хорошо. Единственное, что не так ясно в документации, это то, что там, где написано Then mark the certificate as trusted, это означает, что вы должны щелкнуть по сертификату в 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

и убедитесь, что порт установлен на 443 443 - это порт по умолчанию для защищенных соединений 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 и [1142 ]. Я переименовал их в 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.

0
ответ дан grazianodev 17 January 2019 в 15:40
поделиться
Другие вопросы по тегам:

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