Как мне разрешить HTTPS для Apache на локальном хосте? - PullRequest
186 голосов
/ 19 ноября 2010

Меня попросили настроить HTTPS с самозаверяющим сертификатом на Apache на localhost, но как мне на самом деле это сделать?Понятия не имею.

Ответы [ 16 ]

127 голосов
/ 25 августа 2011

Я только что попытался - мне нужно было протестировать некоторый код разработки на моем localhost Apache в Windows . Это было WAAAY сложнее, чем должно быть. Но вот шаги, которые удалось сработать после долгой стрижки волос ...

Я обнаружил, что моя установка Apache поставляется с openssl.exe, что полезно. Если у вас нет копии, вам нужно ее скачать. Моя копия была в папке Apache2\bin, как я на нее ссылаюсь ниже.

Шаги:

  1. Убедитесь, что у вас есть права на запись в вашу папку Apache conf
  2. Открыть командную строку в папке Apache2\conf
  3. Тип
    ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
  4. Вы можете оставить все вопросы пустыми, кроме:

    • PEM Passphrase: временный пароль, такой как «пароль»
    • Общее имя: имя хоста вашего сервера

  5. Когда это завершится, введите
    ..\bin\openssl rsa -in blarg.pem -out blarg.key

  6. Создайте самозаверяющий сертификат, набрав:
    ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365

  7. Откройте файл Apache conf\httpd.conf и убедитесь, что модуль SSL включен - в начале этой строки не должно быть хеша:
    LoadModule ssl_module modules/mod_ssl.so

  8. Некоторые установки Apache помещают конфигурацию SSL в отдельный файл. Если это так, убедитесь, что файл SSL Conf включен. В моем случае мне пришлось раскомментировать эту строку:
    Include conf/extra/httpd-ssl.conf

  9. В конфигурации SSL httpd-ssl.conf Мне пришлось обновить следующие строки:

    • Обновление
      SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
      до
      SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
      (Скобки в пути путают модуль, поэтому нам нужно их избежать)
    • DocumentRoot - установите это в папку для ваших веб-файлов
    • ServerName - имя хоста сервера
    • SSLCertificateFile "conf/blarg.cert"
    • SSLCertificateKeyFile "conf/blarg.key"

  10. Перезапустите Apache.

  11. Попробуйте загрузить https://localhost/ в браузере.

Надеюсь, вы сделали это так далеко. Не стесняйтесь обновлять этот пост любой другой полезной информацией.

(Скриншоты любезно предоставлены Нилом Обремским и его полезной статьей - хотя в настоящее время довольно устаревшие.)

56 голосов
/ 23 апреля 2014

Я использую ngrok (https://ngrok.com/) для этого. Ngrok - это инструмент командной строки, создающий туннель для localhost. Он создает как http, так и https соединение. После загрузки необходимо выполнить следующую команду:

ngrok http 80

(В версии 2 синтаксис: ngrok http 80. В версии 2 любой порт может быть туннелирован.)

Через несколько секунд он выдаст два URL:

http://a_hexadecimal_number.ngrok.com
https://a_hexadecimal_number.ngrok.com

Теперь оба URL-адреса указывают на локальный хост.

23 голосов
/ 17 ноября 2014

вот самый простой способ сделать это

сначала скопируйте эти server.crt & server.key файлы (найти во вложении) в каталог apache / conf / ssl

, затем откройте файл httpd.conf и добавьте следующую строку

Listen 80
Listen 443

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:443>
    DocumentRoot "d:/wamp/www"  #your wamp www root dir
    ServerName localhost
    SSLEngine on
    SSLCertificateFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.crt"
    SSLCertificateKeyFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.key"
</VirtualHost>
9 голосов
/ 24 марта 2018

Чтобы обеспечить безопасность информации, отправляемой на ваш веб-сервер и с него, рекомендуется включить шифрование связи между клиентами и сервером. Это часто называют SSL .

Итак, давайте настроим HTTPS с самозаверяющим сертификатом на Apache2. Я собираюсь перечислить шаги, которые вы должны выполнить:

  • Установите веб-сервер apache2 на свой компьютер. Для машины linux откройте терминал и наберите

sudo apt-get установить apache2

  • После успешной установки проверьте состояние службы apache2, выполнив команду

статус службы sudo apache2

Должен вывести

apache2 service status

  • Перейдите в браузер и введите

http://localhost:80

Убедитесь, что вы получаете страницу по умолчанию для apache2 следующим образом.

default output of apache2

  • Для шифрования веб-соединения нам нужен сертификат от CA (центра сертификации) или мы можем использовать самозаверяющие сертификаты. Давайте создадим самозаверяющий сертификат с помощью следующей команды.

openssl req -x509 -nkeykey rsa: 2048 -keyout mykey.key -out mycert.pem -days 365 -nodes

Пожалуйста, заполните информацию, как показано ниже.

create self signed certificate using openssl

mykey.key и mycert.pem должны быть созданы в вашем текущем рабочем каталоге.

  • Было бы хорошо, если бы мы переместили сертификаты и ключи в общее место, и веб-серверу apache2 было бы легко их найти. Итак, выполним следующие команды

sudo cp mycert.pem / etc / ssl / certs

sudo cp mykey.key / etc / ssl / private

  • Давайте включим режим SSL на вашем сервере

sudo a2enmod ssl

Это должно вывести вот так

enable ssl

  • Давайте настроим apache2 для использования самозаверяющего сертификата и ключа, которые мы сгенерировали выше.

sudo vi /etc/apache2/sites-available/default-ssl.conf

Найдите эти две строки и замените их вашими сертификатом и ключом.

Первый

default-conf

Final

after config changes

  • Включить сайт

cd / etc / apache2 / sites-available /

sudo a2ensite default-ssl.conf

  • Перезапустить службу apache2

sudo service apache2 restart

  • Проверьте веб-сервер apache2 по HTTPS. Снова откройте браузер и введите

https://localhost:443

Должно появиться что-то вроде этого с предупреждением о том, что страница, которую вы собираетесь просматривать, небезопасна, поскольку мы настроили сервер с самозаверяющим сертификатом.

enter image description here

  • Поздравляем, вы настроили apache2 с конечной точкой HTTPS, теперь нажмите advanced -> добавить исключение -> подтвердить исключение безопасности , вы увидите снова страница по умолчанию.

page after adding exception

9 голосов
/ 02 сентября 2015

Windows + Apache 2.4, например:

  1. раскомментируйте ssl_module в вашем файле httpd.conf.

    LoadModule ssl_module modules/mod_ssl.so
    
  2. порт прослушивания 443точно так же, как порт 80 в вашем файле httpd.conf.

    Listen 80
    Listen 443
    
  3. раскомментировать Включить виртуальные хосты в ваш файл httpd.conf.

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    
  4. добавьте VirtualHost в conf/extra/httpd-vhosts.conf

    <VirtualHost _default_:443>
        DocumentRoot "D:/www"  #your site directory path
        ServerName localhost
        #ServerAlias localhost.com localhost2.com
        SSLEngine on
        SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
        SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key"
        <Directory "D:/www">
            Options -Indexes +FollowSymLinks +ExecCGI
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    

только номер порта 443 и SSL...... строки отличаются от обычной конфигурации http.

saveВы настраиваете файл и перезапускаете службу apache.затем вы можете посетить https://localhost/

. Веб-браузер предупредит вас, что в первый раз это небезопасно, просто нажмите «Продолжить».

8 голосов
/ 19 ноября 2010

На самом деле это довольно просто, если у вас есть удобная установка openssl. (На какой ты платформе?)

Предполагая, что вы используете Linux / Solaris / Mac OS / X, Мини-HOWTO Van Apache SSL / TLS имеет превосходное прохождение, которое я не буду здесь воспроизводить.

Тем не менее, резюме таково, что вам необходимо создать самозаверяющий сертификат. Поскольку вы используете apache для localhost, предположительно для разработки (то есть не общедоступный веб-сервер), вы будете знать, что можете доверять самозаверяющему сертификату и игнорировать предупреждения, которые ваш браузер будет выдавать вам.

4 голосов
/ 11 декабря 2014

Это должна быть работа Ubuntu, Mint похожа на Apache2

Это хорошее руководство, так что следуйте этому

https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04

и оставьте свой ssl.conf какэтот или аналогичный

<VirtualHost _default_:443>
        ServerAdmin your@email.com
        ServerName localhost
        ServerAlias www.localhost.com

        DocumentRoot /var/www


    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

вы можете получить его.

Надеюсь, эта помощь для linuxer

2 голосов
/ 24 января 2017

Это очень просто,

просто запустите следующие команды

sudo a2enmod ssl

sudo service apache2 restart

sudo a2ensite default-ssl.conf

Все, готово.

Если вы хотите принудительно использовать SSL (использовать httpsвсегда), отредактируйте файл:

sudo nano /etc/apache2/sites-available/000-default.conf

и добавьте эту одну строку

<VirtualHost *:80>
        . . .

        Redirect "/" "https://your_domain_or_IP/"

        . . .
</VirtualHost>

, затем перезапустите снова

sudo service apache2 restart
1 голос
/ 28 июня 2019

2019 Обновление

Я публикую этот ответ, так как я сам боролся с этим, и Chrome обновил свою безопасность, требуя Тема для альтернативыИмя , которого нет во многих сообщениях, поскольку оно не требовалось, когда они были опубликованы в качестве ответа.Я предполагаю, что WAMP уже установлен.

ШАГ 1

Скачать OpenSSL Осветить и установить


ШАГ 2 (Необязательно)

Хотя эта часть является необязательной, но впоследствии она облегчает выполнение команд.Если вы пропустите этот шаг, вам нужно будет указать полный путь к openssl.exe, где вы будете выполнять команду.Если вы предпочитаете установить его, обновите путь openssl.exe в Переменные среды.

Переменные среды -> Системные переменные -> Путь -> Правка -> Создать -> c: \ Program Files \ OpenSSL-Win64 \ bin


ШАГ 3

Создать папку с именем «ключ» в каталоге c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/.

Создание файла конфигурации для вашего CA MyCompanyCA.cnf с содержимым (вы можете изменить его по своему усмотрению):

[ req ]
distinguished_name  = req_distinguished_name
x509_extensions     = root_ca

[ req_distinguished_name ]
countryName             = Country Name (2 letter code)
countryName_min         = 2
countryName_max         = 2
stateOrProvinceName     = State or Province Name (full name)
localityName            = Locality Name (eg, city)
0.organizationName      = Organization Name (eg, company)
organizationalUnitName  = Organizational Unit Name (eg, section)
commonName              = Common Name (eg, fully qualified host name)
commonName_max          = 64
emailAddress            = Email Address
emailAddress_max        = 64

[ root_ca ]
basicConstraints            = critical, CA:true

Создатьфайл конфигурации расширений MyCompanyLocalhost.ext для сертификата веб-сервера:

subjectAltName = @alt_names
extendedKeyUsage = serverAuth

[alt_names]
DNS.1   = localhost
DNS.2   = mycy.mycompany.com


ШАГ 4

Выполните эти команды в указанном порядке для генерации ключа и сертификатов:

openssl req -x509 -newkey rsa:2048 -out MyCompanyCA.cer -outform PEM -keyout MyCompanyCA.pvk -days 10000 -verbose -config MyCompanyCA.cnf -nodes -sha256 -subj "/CN=MyCompany CA"
openssl req -newkey rsa:2048 -keyout MyCompanyLocalhost.pvk -out MyCompanyLocalhost.req -subj /CN=localhost -sha256 -nodes
openssl x509 -req -CA MyCompanyCA.cer -CAkey MyCompanyCA.pvk -in MyCompanyLocalhost.req -out MyCompanyLocalhost.cer -days 10000 -extfile MyCompanyLocalhost.ext -sha256 -set_serial 0x1111

В результате вы получите MyCompanyCA.cer , MyCompanyLocalhost.cer и MyCompanyLocalhost.pvk файлов.


ШАГ 5

Установка MyCompanyCA.cer под

Панель управления -> Управление сертификатами пользователя -> Доверенные корневые центры сертификации -> Сертификаты

Для установки MyCompanyLocalhost.cer просто дважды щелкните по нему.


ШАГ 6

Открыть c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.conf и снять комментарий (убрать #) следующие 3 строки:

LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so


ШАГ 7

Открыть c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.conf и изменить все параметры на показанные ниже:

Directory "c:/wamp64/www"
DocumentRoot "c:/wamp64/www"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "c:/wamp64/bin/apache/apache2.4.27/logs/error.log"
TransferLog "c:/wamp64/bin/apache/apache2.4.27/logs/access.log"
SSLCertificateFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.cer"
SSLCertificateKeyFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.pvk"
SSLSessionCache "shmcb:c:/wamp64/bin/apache/apache2.4.27/logs/ssl_scache(512000)"
CustomLog "c:/wamp64/bin/apache/apache2.4.27/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

Примечание: Это сложная часть.Если при редактировании этого файла вы допустите небольшую ошибку, SSL не будет работать.Сделайте его копию перед редактированием.


STEP 8

Перезапустите Wamp и Chrome.Localhost теперь в безопасности: https://localhost

1 голос
/ 11 июля 2018

ТЛ; др

ssh -R youruniquesubdomain:80:localhost:3000 serveo.net

А ваша локальная среда доступна с https://youruniquesubdomain.serveo.net

Сервео лучший

  • Нет регистрации.
  • Без установки.
  • Имеет HTTPS.
  • Доступно по всему миру.
  • Вы можете указать собственное исправление, поддомен.
  • Вы можете самостоятельно разместить его, чтобы использовать свой собственный домен и быть в будущем, даже если служба не работает.

Я не мог поверить, когда нашел эту услугу. Он предлагает все, и это самый простой в использовании. Если бы был такой простой и безболезненный инструмент для каждой проблемы ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...