Як дозволити HTTPS для Apache у localhost?


193

Мене попросили налаштувати HTTPS із самопідписаним сертифікатом на Apache на localhost, але як мені це зробити? Я взагалі не маю уявлення.


1
Використовуйте Serveo ! ssh -R youruniquesubdomain:80:localhost:3000 serveo.netПощеплюйте свій субдомен та номер порту, і ви готові продовжувати роботуhttps://youruniquesubdomain.serveo.net
totymedli

Відповіді:


135

Я щойно спробував це - мені потрібно було протестувати якийсь код розробки на моєму локальному хості 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. Відкрийте conf\httpd.confфайл Apache і переконайтеся, що модуль SSL увімкнено - на початку цього рядка не повинно бути хешу:
    LoadModule ssl_module modules/mod_ssl.so

  8. Деякі установки Apache конфігурують SSL в окремий файл. Якщо так, переконайтеся, що файл конфлікту SSL включений. У моєму випадку мені довелося скаментувати цей рядок:
    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/у своєму браузері.

Сподіваємось, ви зробили це так далеко. Не соромтеся оновлювати цю публікацію будь-якою іншою корисною інформацією.

(Скріншоти люб’язно Ніла Обремського та його корисної статті - хоча зараз це вже застаріло.)


2
Дякую. Я також повинен був редагувати директиви ErrorLog, TransferLog та CustomLog на дійсні шляхи, інакше Apache не запустився.
Тамлін

1
Чомусь інструкції більше не працюють чи не є неповними
Якобіян

6
Мені довелося також прокоментувати в моєму httpd.conf наступне: LoadModule socache_shmcb_module module / mod_socache_shmcb.so
erik

1
Я зробив ще два кроки, щоб він працював, додав модуль LoadModule socache_shmcb_module module / mod_socache_shmcb.so і в httpd-ssl.conf я виправляю шлях журналу ssl у рядку 250, CustomLog ".apache24 / logs / ssl_request.log" \
Wasim A .

5
Для того, щоб генерувати. шлях \ до \ апаш \ Apache2.4.4 \ conf \ .rnd
еосфера

57

Для цього я використовую 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-адреси вказують на localhost.


1
@sudip, Чи працює відкритий код ngrok таким чином, що ми можемо розмістити це на власному сервері без змін? Якщо ні, то це майже стоп-шоу, оскільки це не нормально перенаправляти запити користувачів на зовнішній хост, наприклад, ngrok.
Pacerier

2
@Pacerier Я не збираюся використовувати його на сервері. Я використовую його в localhost (Bcz, мій провайдер мережі дає мені динамічну IP-адресу). Я вперше використав його для тестування IP-адреси Paypal, і він працював чудово. Цікаво, чому хтось буде використовувати це на сервері і з якою метою.
sudip

@sudip, Мета очевидна - дозволити коду, який працює на HTTP, також працювати з HTTPS без додаткового кодування.
Pacerier

1
Хоча це корисно, здається неймовірно незахищеним дозволити доступ до вашої розроблювальної машини до відкритого Інтернету. Використовуючи щось подібне, ви звільнилися б із роботодавця, який усвідомлює безпеку.
Енді М

@YumYumYum. Це було раніше безкоштовно в V 1. Але порти http і https все ще вільні у версії 2 (не знаю, чи є якесь обмеження на порт, є вільний план). Перевірте безкоштовний план тут: ngrok.com/product#pricing
sudip

24

ось найпростіший спосіб зробити це

спочатку скопіюйте ці файли 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>

3
Мені довелося включити модуль LoadModule ssl_module libexec / apache2 / mod_ssl.so в (/etc/apache2/httpd.conf)
Олексій

17
Цікаво, наскільки безпечним / небезпечним є завантаження файлів * .crt * .key з недовіреного джерела, а не створення власних.
Петро Пеллер

4
@PetrPeller ми встановлюємо https для місцевого розвитку, тож чому дивуватися безпечному / небезпечному
Аніл Гупта

7
Пояснення, як створити ці файли, було б чудово. Тому що завантаження файлів з невідомого джерела є поганою практикою, а також тому, що такі посилання в якийсь момент розірвуться.
Стефан Віеркант

2
Цей підручник чудово digitalocean.com/community/tutorials/…
Dhiraj

13

З метою захисту безпеки інформації, що надсилається на ваш веб-сервер і з нього, корисно включити шифрування зв'язку між клієнтами та сервером. Це часто називають SSL .

Тож давайте налаштуємо HTTPS з самопідписаним сертифікатом на Apache2. Я перерахую кроки, які вам слід виконати:

  • Встановіть веб-сервер apache2 на свій комп'ютер. Для машини Linux відкрийте термінал і введіть

sudo apt-get install apache2

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

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

Він повинен вивести

статус служби apache2

  • Перейдіть до браузера та введіть

http: // localhost: 80

Переконайтеся, що ви отримуєте сторінку за замовчуванням для apache2, як це.

вихід за замовчуванням apache2

  • Для шифрування веб-з'єднання нам потрібен сертифікат від CA (орган сертифікації) або ми можемо використовувати самопідписані сертифікати. Давайте створимо самопідписаний сертифікат за допомогою наступної команди.

openssl req -x509 -newkey rsa: 2048 -keyout mykey.key -out mycert.pem -days 365-вузли

Будь ласка, заповніть інформацію відповідно, як показано нижче.

створити самопідписаний сертифікат за допомогою openssl

mykey.key та mycert.pem повинні бути створені у вашому поточному робочому каталозі.

  • Було б добре, якщо ми перемістимо сертифікати та ключі в загальне місце, і веб-серверу apache2 буде легко їх знайти. Тож давайте виконаємо наступні команди

sudo cp mycert.pem / etc / ssl / certs

sudo cp mykey.key / etc / ssl / private

  • Увімкніть режим SSL на вашому сервері

sudo a2enmod ssl

Він повинен вийти так

включити ssl

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

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

Будь ласка, знайдіть ці два рядки та замініть їх на ваш сертифікат і ключові шляхи.

Початкові

дефолт-конф

Фінал

після змін конфігурації

  • Увімкніть сайт

cd / тощо / apache2 / доступні сайти /

sudo a2ensite за замовчуванням-ssl.conf

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

перезапуск служби sudo служби apache2

  • Перевірте веб-сервер apache2 на HTTPS. Відкрийте веб-переглядач ще раз і введіть

https: // localhost: 443

Потрібно вивести щось подібне із попередженням, що сторінка, яку ви збираєтеся переглянути, не захищена, оскільки ми налаштували сервер із самопідписаним сертифікатом.

введіть тут опис зображення

  • Вітаємо, що ви налаштували apache2 з кінцевою точкою HTTPS, тепер натисніть на розширений -> додати виняток -> підтвердіть виняток із безпеки , ви знову побачите сторінку за замовчуванням.

сторінки після додавання винятку


Я вважаю за краще не редагувати жоден конфігураційний файл, якщо зможу, тож залишив default-ssl.confяк є. Я збирався перейменувати mycertв ssl-cert-snakeoilале цей файл вже існує , так що я просто використав це! Тож я зміг спокійно пропустити два кроки на Debian.
Рольф

@Rolf Я згоден з вами, але у виробництві, це завжди так, щоб використовувати новий сертифікат і ключ. Отже, щоб показати, як їх можна створити, я додав 2 додаткові кроки для Debian. Дякую :)
Дінеш Кумар

Чи можна додати свій самопідписаний сертифікат як орган сертифікації, щоб не бачити попереджень?
Аарон Франке

9

Windows + Apache 2.4, наприклад:

  1. unment 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 config.

збережіть конфігураційний файл та перезапустіть службу apache. тоді ви можете відвідати https: // localhost /

Веб-браузер попередить вас, що вперше це небезпечно, просто виберіть «продовжити».


Це працювало для мене на XP Home, Apache 2.4. Скопіював 2 файли сертифікатів з попереднього допису (автор Аніл Гупта). Без коментарів mod_ssl і включив httpd-vhosts.conf у httpd.conf, додав директиву VirtualHost (Аніл Гупта) (з деякими шляхами відрегульовано) у httpd-vhosts.conf.
jogi99

7

Це насправді досить просто, якщо припустити, що вам зручна установка opensl. (На якій платформі ви працюєте?)

Якщо припустити, що ви перебуваєте на linux / solaris / mac os / x, Apache SSL / TLS mini-HOWTO Вана має чудовий прохід, який я тут не відтворюю.

Однак підсумкове повідомлення про те, що вам потрібно створити сертифікат, який підписав самостійно. Оскільки ви запускаєте apache для localhost, імовірно, для розробки (тобто не загальнодоступного веб-сервера), ви знатимете, що можете довіряти самопідписаному сертифікату і можете ігнорувати попередження, які ваш браузер буде кидати вам.


Привіт, я працюю на ОС Windows. А що стосується самопідписаного сертифіката, чи потрібно його завантажувати чи будь-яким іншим способом?
KennC.

3
Ні. Ви зробите самостійно підписаний сертифікат. У вас налаштування apache httpd + ssl? Для цього вам знадобиться ssl. Цей веб-сайт: rubayathasan.com/tutorial/apache-ssl-on-windows має гарну інформацію про те, як розпочати роботу ssl у Windows. Ви будете виконувати деяку роботу в командному рядку, але це все одно добре для вас. :-)
Піт Кларк

3
Посилання мертві :(
kpuccino

Так - це, здається, мертве. Це для вас Інтернет ... Однак посилання на CentOS Wiki нижче, на яке посилається @kayakinkoder, також добре: wiki.centos.org/HowTos/Https Якщо ви перебуваєте на Mac, ця запис також виглядає розумною: суть. github.com/nrollr/4daba07c67adcb30693e
Піт Кларк

4

Це має бути робота 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

Це дуже просто,

просто запустіть наступні команди

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.
до

2

Оновлення 2020 року

Я надсилаю цю відповідь, оскільки я сам боровся з цим, і Chrome оновив свою безпеку, вимагаючи альтернативного імені тематики, якого немає у багатьох публікаціях, оскільки це не потрібно, коли вони були розміщені як відповідь. Я припускаю, що WAMP вже встановлений.

КРОК 1

Завантажте OpenSSL Light та встановіть


** КРОК 2 (необов’язково) **

Хоча ця частина є необов’язковою, але це полегшує пізніше виконання команд. Якщо пропустити цей крок, вам доведеться надати повний шлях до openssl.exe, де ви будете виконувати команду. Якщо ви віддаєте перевагу його встановленню, то оновіть шлях openssl.exe у змінні середовища.

Змінні середовища -> Змінні системи -> Шлях -> Редагувати -> Нове -> c: \ Програмні файли \ 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 не працюватиме. Зробіть його копію перед редагуванням.


** КРОК 8 **

Перезапустіть Wamp та Chrome. Localhost тепер захищений: https: // localhost


Чи є у вас посібник для Linux?
Аарон Франке

На жаль, я цього не роблю.
CodeWarrior

1

Цей HowTo для CentOS легко слідкувати і зайняв лише 5 хвилин: https://wiki.centos.org/HowTos/Https

Я не буду деталізувати тут кожен крок, але основними кроками є:

1.) Встановіть модуль openssl для apache, якщо він ще не встановлений

2.) Створіть самопідписаний сертифікат

- У цьому пункті ви повинні мати можливість успішно відвідати https: // localhost

3.) Налаштуйте віртуальний хост за потреби


1

Це працювало в 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 файли.

Це воно!


Так, це працює. Я використовував крок 1 - 3 від StephanieQ для генерації сертифіката, а потім "openssl x509 -req -in server.csr -signkey server.key -out server.crt" для створення файлу * .crt з cygwin.
b3wii

У мене немає httpd.conf, в який файл я його вставлю? Ось що відбувається, коли я вклав цей текст всередину apache2.conf:Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
Аарон Франке

1

тл; д-р

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

А ваше місцеве оточення можна отримати з https://youruniquesubdomain.serveo.net

Сервео - найкращий

  • Підписки немає.
  • Не встановлюйте.
  • Має HTTPS.
  • Доступний у всьому світі.
  • Ви можете вказати спеціальне виправлення, субдомен.
  • Ви можете самостійно розміщувати його, щоб ви могли використовувати власний домен і бути доказовим у майбутньому, навіть якщо послуга знижується.

Я не міг повірити, коли знайшов цю послугу. Він пропонує все, і це найпростіше у використанні. Якби був такий легкий і безболісний інструмент для кожної проблеми ...


Це більше не працює в 2020 році, сторінка завантажується назавжди. Однак чомусь команда SSH все ще працює ...?
Аарон Франке

1

Тут запущено Apache на Windows 10. Я не міг змусити Chrome довіряти сертифікату, який було зроблено у верхній відповіді Саймона. Що я в кінцевому підсумку робив, було використовувати PowerShell для створення сертифіката, який підписав самостійно.

Крок 1 - Створіть сертифікат самопідписання

У PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My" 1

Крок 2 - Налаштування та експорт сертифіката

Введіть Certificateу рядок пошуку Windows, натисніть запропонований Manage Computer Certificatesелемент панелі керування.

У програмі управління сертифікатами, яка з'являється (certlm), ви повинні побачити localhostключ під Personal >> Certificates.

Я скопіював цей сертифікат у Trusted Root Certification Authorities. Я буду чесною в тому, що не впевнений, чи потрібно.

Вибравши нещодавно скопійований сертифікат, двічі клацніть його (сертифікат localhost). У режимі сертифікату натисніть на Detailsвкладку, а потім на Copy to File...кнопку.

Це дозволить відкрити майстер експорту, і я вирішив експортувати приватний ключ, натисніть далі. Я також вирішив Export all extended properties(знову ж таки, я не впевнений, чи це було необхідно). Я вирішив використовувати простий пароль ( pass) та шифрування за замовчуванням. Виберіть папку, до якої потрібно експортувати та назвати файл. Ви завжди можете перемістити та перейменувати файл, якщо це необхідно. Для простоти давайте скопіюйте його в папку конф під встановленням Apache (у моєму випадку C:\apache\conf:) і назвіть файл myCert(отриманий файл буде .pfxфайлом)

Крок 3 - Перетворення .pfxфайлу для використання з Apache

Звідси я в основному дотримувався підручника тут , але я додаю тут інструкції (перероблені для наших налаштувань) у випадку, якщо цей сайт не працює.

Відкрийте командний рядок в /apache/conf/папці
, виконайте наступні команди: Примітка: Це передбачає , що ви маєте openssl.exeв binпапці в кореневій папці апача (це повинно бути стандартним / по замовчуванням)

..\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і новий файл, викликаний . Це буде ваш SSLCertificateKeyFile.private.pemconf/

Тепер для створення відповідного сертифіката сервера. Виконати:

..\bin\openssl pkcs12 -in myCert.pfx -clcerts -nokeys -out EntrustCert.pem

Це запропонує вам ввести пароль, введіть те, що ви ввели для кроку 2, коли ви експортували .pfxфайл. Введіть його, і тепер EntrustCert.pemу вашій confпапці з'явиться файл, який називається . Це ваш SSLCertificateFile

Крок 4 - Налаштування 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 та відкритих 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

Крок 5 - Налаштування 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

Після внесення цих змін ви зможете перезапустити Apache та перейти до https: // localhost без попередження безпеки та невеликого замока!

Забезпечений місцевий господар

Я сподіваюся, що це комусь допоможе! 😊

Джерела:
1.) Відповідь Аурі Рахімзаде про створення сертифіката, що підписується самостійно.
2. Карта довіри - як я можу конвертувати .pfx для використання з сервером Apache?


0

Ще один простий метод - використання сервера Python в Ubuntu.

  1. Створіть server.xml за допомогою наступної команди в терміналі:

    openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes

    Примітка. Припустимо, що у вас встановлено openssl .

  2. Збережіть код нижче у файлі з іменем 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()
    
  3. Запустіть сервер з терміналу:

    python simple-https-server.py

  4. Відвідайте сторінку за адресою:

    https://localhost:4443

Додаткові примітки :

  1. Ви можете змінити порт у simple-https-server.pyфайлі в рядку

    httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)

  2. Ви можете перейти 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/


0

Для тих, хто використовує 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

Але вам потрібно виконати кілька кроків, тому перевірте це і удачі! ;)


0

Я хотів би додати щось до дуже гарної відповіді @CodeWarrior, яка ідеально працює в Chrome, але для Firefox потрібен додатковий крок.

Оскільки Firefox не видає сертифікати CA, які Windows працює за замовчуванням, вам потрібно продовжити about:config, прокручувати вниз security.enterprise_roots.enabled і змінити його на true.

Тепер ваш сертифікат повинен вважатися дійсним і на Firefox.

Звичайно, це стосується лише розробок, оскільки довіра ssl є критичною проблемою безпеки і змінити ці налаштування лише у тому випадку, якщо ви знаєте наслідки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.