Ответы:
Я только что попытался - мне нужно было протестировать код разработки на моем локальном хосте Apache в Windows . Это было WAAAY сложнее, чем должно быть. Но вот шаги, которые удалось сработать после долгой стрижки волос ...
Я обнаружил, что моя установка Apache идет с, openssl.exe
что полезно. Если у вас нет копии, вам нужно ее скачать. Моя копия была в Apache2\bin
папке, как я на нее ссылаюсь ниже.
шаги:
Apache2\conf
папке..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
Вы можете оставить все вопросы пустыми, кроме:
Когда это завершится, введите
..\bin\openssl rsa -in blarg.pem -out blarg.key
Создайте свой самозаверяющий сертификат, набрав:
..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365
Откройте conf\httpd.conf
файл Apache и убедитесь, что модуль SSL включен - в начале этой строки не должно быть хеша:
LoadModule ssl_module modules/mod_ssl.so
Некоторые установки Apache помещают конфигурацию SSL в отдельный файл. Если это так, убедитесь, что файл SSL Conf включен. В моем случае мне пришлось раскомментировать эту строку:
Include conf/extra/httpd-ssl.conf
В конфиге 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"
Перезапустите Apache.
https://localhost/
в вашем браузере.Надеюсь, вы сделали это так далеко. Не стесняйтесь обновлять этот пост любой другой полезной информацией.
(Скриншоты любезно предоставлены Нилом Обремским и его полезной статьей - хотя сейчас она уже устарела.)
Я использую 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 указывают на локальный хост.
вот самый простой способ сделать это
сначала скопируйте эти файлы 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>
Для обеспечения безопасности информации, отправляемой на ваш веб-сервер и с него, рекомендуется включить шифрование связи между клиентами и сервером. Это часто называют SSL .
Итак, давайте настроим HTTPS с самозаверяющим сертификатом на Apache2. Я собираюсь перечислить шаги, которые вы должны выполнить:
sudo apt-get установить apache2
sudo service apache2 status
Должен вывести
Убедитесь, что вы получаете страницу по умолчанию для apache2, как это.
openssl req -x509 -newkey rsa: 2048 -keyout mykey.key -out mycert.pem -days 365-узлов
Пожалуйста, заполните информацию соответственно, как показано ниже.
mykey.key и mycert.pem должны быть созданы в вашем текущем рабочем каталоге.
sudo cp mycert.pem / etc / ssl / certs
sudo cp mykey.key / etc / ssl / private
sudo a2enmod ssl
Это должно вывести вот так
sudo vi /etc/apache2/sites-available/default-ssl.conf
Найдите эти две строки и замените их вашими сертификатом и ключом.
начальный
окончательный
cd / etc / apache2 / sites-available /
sudo a2ensite default-ssl.conf
перезапуск службы sudo apache2
Он должен вывести что-то вроде этого с предупреждением о том, что страница, которую вы собираетесь просматривать, небезопасна, поскольку мы настроили сервер с самозаверяющим сертификатом.
default-ssl.conf
как есть. Я собирался переименовать mycert
в ssl-cert-snakeoil
но этот файл уже существует , так что я просто использовал это! Так что я смог безопасно пропустить два шага в Debian.
Windows + Apache 2.4, например:
раскомментируйте ssl_module в вашем httpd.conf
файле.
LoadModule ssl_module modules/mod_ssl.so
слушайте 443 порт, как 80 порт в вашем httpd.conf
файле.
Listen 80
Listen 443
Снимите комментарий Включить виртуальные хосты в ваш httpd.conf
файл.
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
добавить 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 config.
сохраните ваш конфигурационный файл и перезапустите службу Apache. тогда вы можете посетить https: // localhost /
Веб-браузер предупредит вас, что в первый раз это небезопасно, просто нажмите «Продолжить».
На самом деле это довольно просто, если у вас есть удобная установка openssl. (На какой ты платформе?)
Предполагая, что вы используете Linux / Solaris / Mac OS / X, мини-HOWTO Van Apache SSL / TLS имеет превосходное руководство, которое я не буду здесь воспроизводить.
Тем не менее, резюме заключается в том, что вы должны создать самозаверяющий сертификат. Поскольку вы используете apache для localhost, предположительно для разработки (то есть не для публичного веб-сервера), вы будете знать, что можете доверять самозаверяющему сертификату и игнорировать предупреждения, которые ваш браузер будет выдавать вам.
Это должна быть работа Ubuntu, похожая на Mint с Apache2
Это хорошее руководство, поэтому следуя этому
и оставив ваш 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
ты можешь его достать.
Надеюсь, что эта помощь для Linux
Я публикую этот ответ, так как я сам боролся с этим, и Chrome обновил свою безопасность, требуя альтернативного имени субъекта, которого нет у многих сообщений, поскольку это не требовалось, когда они были опубликованы в качестве ответа. Я предполагаю, что WAMP уже установлен.
ШАГ 1
Скачать OpenSSL Light и установите
Хотя эта часть не является обязательной, она облегчает выполнение команд в дальнейшем. Если вы пропустите этот шаг, вам нужно будет указать полный путь к openssl.exe, где вы будете выполнять команду. Если вы предпочитаете установить его, обновите путь openssl.exe в переменных среды.
Переменные среды -> Системные переменные -> Путь -> Правка -> Создать -> c: \ Program Files \ OpenSSL-Win64 \ bin
Создайте папку с именем «ключ» в 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
Выполните эти команды в указанном порядке для генерации ключа и сертификатов:
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 .
Установите MyCompanyCA.cer под
Панель управления -> Управление сертификатами пользователя -> Доверенные корневые центры сертификации -> Сертификаты
Чтобы установить MyCompanyLocalhost.cer, просто дважды щелкните по нему.
Откройте 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
Откройте 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 не будет работать. Сделайте копию этого прежде, чем Вы отредактируете это.
Перезагрузите Wamp и Chrome. Localhost теперь безопасен: https: // localhost
Это очень просто,
просто выполните следующие команды
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
systemctl reload apache2
за sudo a2ensite default-ssl.conf
.
Это HowTo для CentOS было легко понять и заняло около 5 минут: https://wiki.centos.org/HowTos/Https
Я не буду подробно описывать каждый шаг здесь, но основные шаги:
1.) Установите модуль openssl для apache, если он еще не установлен
2.) Создайте самоподписанный сертификат
- На этом этапе вы сможете успешно зайти на https: // localhost
3.) При необходимости настройте виртуальный хост
Это работало на Windows 10 с Apache24:
1 - Добавить это внизу C:/Apache24/conf/httpd.conf
Listen 443
<VirtualHost *:443>
DocumentRoot "C:/Apache24/htdocs"
ServerName localhost
SSLEngine on
SSLCertificateFile "C:/Apache24/conf/ssl/server.crt"
SSLCertificateKeyFile "C:/Apache24/conf/ssl/server.key"
</VirtualHost>
2 - Добавьте server.crt
и server.key
файлы в C:/Apache24/conf/ssl
папке. Посмотрите другие ответы на этой странице, чтобы найти эти 2 файла.
Это оно!
httpd.conf
, в какой файл я положил его? Вот что происходит, когда я помещаю этот текст внутрь apache2.conf
:Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
И ваша локальная среда может быть доступна с https://youruniquesubdomain.serveo.net
Я не мог поверить, когда я нашел эту услугу. Он предлагает все, и это самый простой в использовании. Если бы был такой простой и безболезненный инструмент для каждой проблемы ...
Запуск Apache на Windows 10 здесь. Я не мог заставить Chrome доверять сертификату, сделанному в верхнем ответе Саймона. В итоге я использовал PowerShell для создания самозаверяющего сертификата.
В PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"
1
Введите Certificate
в строке поиска Windows, щелкните Manage Computer Certificates
элемент панели управления, который предлагается.
В появившейся программе управления сертификатами (certlm) вы должны увидеть localhost
ключ под Personal >> Certificates
.
Я скопировал этот сертификат в Trusted Root Certification Authorities
. Я буду честен в этом, я не уверен, если это необходимо.
Выбрав вновь скопированный сертификат, дважды щелкните по нему (сертификат localhost). В модальном сертификате щелкните Details
вкладку, затем Copy to File...
кнопку.
Это вызовет и Экспорт мастера, я решил экспортировать закрытый ключ, нажмите кнопку Далее. Я также решил Export all extended properties
(опять же, я не уверен, было ли это необходимо). Я решил использовать простой пароль ( pass
) и шифрование по умолчанию. Выберите папку для экспорта и назовите файл. Вы всегда можете переместить и переименовать файл, если это необходимо. Для простоты давайте скопируем его в вашу папку conf под вашей установкой Apache (в моем случае:) C:\apache\conf
и назовите файл myCert
(полученный файл будет .pfx
файлом)
.pfx
файл для использования с ApacheОтсюда я в основном следовал учебник здесь , но я добавлю инструкции здесь (переделаны для наших настроек) в случае, если сайт идет вниз.
Откройте командную строку в /apache/conf/
папке.
Выполните следующие команды: Примечание. Предполагается, что вы находитесь openssl.exe
в bin
папке в корневой папке apache (это должно быть стандартное / по умолчанию)
..\bin\openssl pkcs12 -in myCert.pfx -nocerts -out privateKey.pem
Вам будет предложено ввести пароль, введите то, что вы вводите для шага 2 при экспорте .pfx
файла. В моем случае это так pass
. Я ввел тот же пароль для фразы PEM и еще раз для подтверждения. Это создаст новый файл с именем privateKey.pem
в вашей папке conf.
Затем запустите
..\bin\openssl rsa -in privateKey.pem -out private.pem
Снова вам будет предложено ввести пароль ( Enter pass phrase for privateKey.pem:
), используйте пароль, который вы установили privateKey.pem
. (В моем случае pass
)
Вы должны увидеть сообщение writing RSA key
с новым файлом private.pem
в вашей conf/
папке. Это будет ваш SSLCertificateKeyFile.
Теперь для генерации соответствующего сертификата сервера. Бегать:
..\bin\openssl pkcs12 -in myCert.pfx -clcerts -nokeys -out EntrustCert.pem
Вам будет предложено ввести пароль, введите то, что вы вводите для шага 2 при экспорте .pfx
файла. Введите его, и теперь у вас будет файл с именем EntrustCert.pem
в вашей conf
папке. Это ваш SSLCertificateFile
httpd.conf
Используйте новые файлы, созданные как ключ и сертификат вашего сервера. Обязательно измените корневой каталог вашего документа на тот, где находятся ваши файлы!
ServerName localhost:80
Protocols h2 h2c http/1.1
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<VirtualHost _default_:443>
ServerName localhost:443
DocumentRoot ${SRVROOT}/htdocs/MYSITE
SSLEngine on
SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
</VirtualHost>
Также в httpd.conf
:
LoadModule ssl_module modules/mod_ssl.so
не прокомментировано (нет #
впереди)LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule http2_module modules/mod_http2.so
Include conf/extra/httpd-ssl.conf
(ПРИМЕЧАНИЕ. Убедитесь, что файл находится там!)У меня также есть библиотеки curl и open ssl:
# load curl and open ssl libraries
LoadFile "C:\php\libeay32.dll"
LoadFile "C:\php\ssleay32.dll"
LoadFile "C:\php\libssh2.dll"
Эти модули не должны быть необходимыми, но я отмечу, что они включены:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
httpd-ssl.conf
В extra/
папке в conf/
папке вы должны увидеть файл с именем httpd-ssl.conf
.
5а. ИзменитьDocumentRoot
- Измените значение DocumentRoot
по умолчанию на каталог, в котором находятся ваши файлы.
5б. ИзменитьServerName
- Измените значение ServerName
по умолчанию (что-то вроде www.example.com:443
) наlocalhost:443
5с. ИзменитеSSLCertificateFile
Изменить SSLCertificateFile
с по умолчанию ( ${SRVROOT}/conf/server.crt
) на${SRVROOT}/conf/EntrustCert.pem
5с. ИзменитеSSLCertificateKeyFile
Изменить SSLCertificateKeyFile
с по умолчанию ( ${SRVROOT}/conf/server.key
) на${SRVROOT}/conf/private.pem
Все вместе, в <VirtualHost _default_:443>
теге.
# General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs/MYSITE"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. Keep
# in mind that if you have both an RSA and a DSA certificate you
# can configure both in parallel (to also allow the use of DSA
# ciphers, etc.)
# Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
# require an ECC certificate which can also be configured in
# parallel.
SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
#SSLCertificateFile "${SRVROOT}/conf/server-dsa.crt"
#SSLCertificateFile "${SRVROOT}/conf/server-ecc.crt"
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
# ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-dsa.key"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-ecc.key"
После внесения этих изменений вы сможете перезагрузить Apache и перейти по адресу https: // localhost без предупреждения безопасности и небольшого замка!
Я надеюсь, что это поможет кому-то! 😊
Источники:
1.) Ответ Аури Рахимзаде на создание самозаверяющего сертификата
2.) Доверьте Datacard - Как мне преобразовать .pfx для использования с сервером Apache?
Другой простой метод - использование Python Server в Ubuntu.
Сгенерируйте server.xml с помощью следующей команды в терминале:
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
Примечание. Предполагается, что у вас установлен openssl .
Сохраните приведенный ниже код в файле с именем simple-https-server.py
в любом каталоге, в котором вы хотите запустить сервер.
import BaseHTTPServer, SimpleHTTPServer
import ssl
httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='./server.pem', server_side=True)
httpd.serve_forever()
Запустите сервер из терминала:
python simple-https-server.py
Посетите страницу по адресу:
https://localhost:4443
Дополнительные примечания :
Вы можете изменить порт в simple-https-server.py
файле в строке
httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
Вы можете изменить localhost
свой IP в той же строке выше:
httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
и получить доступ к странице на любом устройстве, к которому подключена ваша сеть. Это очень удобно в таких случаях, как «вы должны тестировать HTML5 GeoLocation API в мобильном устройстве, а Chrome ограничивает API только в безопасных соединениях».
Суть: https://gist.github.com/dergachev/7028596
http://www.piware.de/2011/01/creating-an-https-server-in-python/
Для тех, кто использует macOS, это отличное руководство https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions для настройки вашей локальной среды веб-разработки. В своей третьей части https://getgrav.org/blog/macos-sierra-apache-ssl Энди Миллер объясняет, как настроить apache с самозаверяющим сертификатом:
Это ключевая команда:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
Но есть несколько шагов, которые вы должны выполнить, так что проверьте это и удачи! ;)
Я хотел бы добавить кое-что к очень хорошему ответу @CodeWarrior, который отлично работает в Chrome, но для Firefox требуется дополнительный шаг.
Поскольку Firefox не выдает сертификаты CA, которые Windows делает по умолчанию, вам нужно продолжить about:config
, прокрутите вниз доsecurity.enterprise_roots.enabled
и изменить его на true.
Теперь ваш сертификат должен рассматриваться как действительный и в Firefox.
Конечно, это только для целей разработки, так как доверие ssl является критически важной проблемой безопасности, и изменяйте эти параметры, только если вы знаете их последствия.
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
Наберите свой поддомен и номер порта, и вы готовы продолжитьhttps://youruniquesubdomain.serveo.net