it-swarm.com.ru

Как получить сертификат https, работающий на местном сайте Laravel Homestead

Я получаю эту проблему:

 enter image description here

Ошибка, которую я вижу в Windows 10 Chrome версии 65.0.3325.181 (официальная сборка) (64-разрядная версия):

Ваше соединение не является частным 

Злоумышленники могут пытаться украсть вашу информация от ((mysite)) (например, пароли, сообщения или кредитные карты). Узнать больше NET :: ERR_CERT_AUTHORITY_INVALID

Эта страница не является безопасной (неработающий HTTPS). 

Сертификат - отсутствует 

Это на сайте отсутствует действительный, доверенный сертификат (Нетто :: ERR_CERT_AUTHORITY_INVALID).

Firefox Quantum 59.0.2 (64-разрядная версия) говорит:

Ваше соединение не защищено

Владелец ((mysite)) настроил свой сайт ненадлежащим образом. Чтобы защитить вашу информацию от кражи, Firefox имеет не подключен к этому сайту.

Соединение не защищено 

Не удалось проверить этот сертификат, потому что эмитент неизвестен.

Я уже пробовал: https://stackoverflow.com/a/47755133/470749

vboxmanage --version
5.2.6r120293

vagrant -v
Vagrant 2.0.2

git branch
* (HEAD detached at v7.3.0)

vagrant box list
laravel/Homestead (virtualbox, 5.2.0)

vagrant box update
==> vboxHomestead: Checking for updates to 'laravel/Homestead'
    vboxHomestead: Latest installed version: 5.2.0
    vboxHomestead: Version constraints: >= 5.2.0
    vboxHomestead: Provider: virtualbox
==> vboxHomestead: Box 'laravel/Homestead' (v5.2.0) is running the latest version.

Интересно, означает ли это, что я еще не использую выпуск 7.1.0 (который имеет в своем списке изменений «подписывать сертификаты SSL с помощью пользовательского корневого сертификата»), и мне интересно, вот почему у меня возникла эта проблема SSL HTTPS ,.

Каковы следующие шаги, которые я должен попытаться сделать, чтобы сертификат заработал? 

8
Ryan

К сожалению, у меня нет простого способа проверить это в Windows, поэтому я собираюсь использовать VirtualBox, работающий в Linux здесь. Установите vagrant, затем:

$ vagrant box add laravel/Homestead
$ git clone https://github.com/laravel/Homestead.git
$ cd Homestead
$ git checkout v7.3.0
$ bash init.sh

Я немного упростил Homestead.yaml (вы можете придерживаться значений по умолчанию):

---
ip: "192.168.10.10"
provider: virtualbox
folders:
    - map: /home/yuri/_/la1
      to: /home/vagrant/code
sites:
    - map: Homestead.test
      to: /home/vagrant/code/public

Затем:

$ mkdir -p ~/_/la1/public
$ echo '<?php echo "it works";' > ~/_/la1/public/index.php

$ vagrant up

$ vagrant ssh -c 'ls /etc/nginx/sites-enabled'
Homestead.test

$ vagrant ssh -c 'cat /etc/nginx/sites-enabled/Homestead.test'
server {
    listen 80;
    listen 443 ssl http2;
    server_name .Homestead.test;
    root "/home/vagrant/code/public";
    ...
    ssl_certificate     /etc/nginx/ssl/Homestead.test.crt;
    ssl_certificate_key /etc/nginx/ssl/Homestead.test.key;
}

Как мы видим, он имеет сертификаты в /etc/nginx/ssl:

$ vagrant ssh -c 'ls -1 /etc/nginx/ssl'
ca.Homestead.homestead.cnf
ca.Homestead.homestead.crt
ca.Homestead.homestead.key
ca.srl
Homestead.test.cnf
Homestead.test.crt
Homestead.test.csr
Homestead.test.key

Я пытался доверять сертификату сервера в масштабе всей системы, но это не сработало. Он появился на вкладке «Серверы» в диспетчере сертификатов Firefox, но это не заставило Firefox доверять ему. Возможно, я мог бы добавить исключение, но доверять сертификатам CA выглядит лучше. Доверие к сертификату CA заставляет браузер доверять любому сертификату, который они выпускают (новые сайты, работающие под управлением Homestead). Итак, мы собираемся пойти с сертификатом CA здесь:

$ vagrant ssh -c 'cat /etc/nginx/ssl/ca.Homestead.homestead.crt' > ca.Homestead.homestead.crt

$ Sudo trust anchor ca.Homestead.homestead.crt

$ trust list | head -n 5
pkcs11:id=%4c%f9%25%11%e5%8d%ad%5c%2a%f3%63%b6%9e%53%c4%70%fa%90%4d%77;type=cert
    type: certificate
    label: Homestead homestead Root CA
    trust: anchor
    category: authority

Затем я добавил 192.168.10.10 Homestead.test в /etc/hosts, перезапустил Chromium, и это сработало:

Постскриптум Я использую Chromium 65.0.3325.162 и Firefox 59.0.

Windows

Видимо, в Windows нет утилиты trust. В Windows один имеет два хранилища : хранилища локальных компьютеров и сертификатов текущего пользователя. Нет смысла использовать хранилище сертификатов Local Machine, поскольку мы работаем только для нашего текущего пользователя. Затем есть магазины. Два предопределенных из них представляют наибольший интерес: доверенные корневые центры сертификации и промежуточные центры сертификации. Обычно упоминается в командной строке как root и CA .

Вы можете получить доступ к Диспетчеру сертификатов Chrome, выполнив команду chrome: // settings /? Search = Manage% 20certificates и нажав Управление сертификатами. Наибольший интерес представляют вкладки «Доверенные корневые центры сертификации» и «Промежуточные центры сертификации».

Один из способов получения сертификатов менеджера - через командную строку :

>rem list Current User > Trusted Root Certification Authorities store
>certutil.exe -store -user root

>rem list Local Machine > Intermediate Certification Authorities store
>certutil.exe -store -enterprise CA

>rem GUI version of -store command
>certutil.exe -viewstore -user CA

>rem add certificate to Current User > Trusted Root Certification Authorities store
>certutil.exe -addstore -user root path\to\file.crt

>rem delete certificate from Current User > Trusted Root Certification Authorities store by serial number
>certutil.exe -delstore -user root 03259fa1

>rem GUI version of -delstore command
>certutil.exe -viewdelstore -user CA

Результаты следующие (для хранилищ локальных компьютеров и сертификатов текущего пользователя):

root
    Homestead.test.crt
        error
    ca.Homestead.homestead.crt
        appears in Trusted Root Certification Authorities tab
CA
    Homestead.test.crt
        doesn't work, appears in Other People tab
    ca.Homestead.homestead.crt
        doesn't work, appears in Intermediate Certification Authorities tab

Другими вариантами могут быть двойной щелчок по сертификату в проводнике, импорт сертификатов из диспетчера сертификатов Chrome, использование оснастки «Сертификаты MMC (запуск certmgr.msc) или использование CertMgr.exe .

Для тех, у кого установлена ​​grep, вот как быстро проверить, где находится сертификат:

>certutil.exe -store -user root | grep "Homestead\|^root\|^CA" ^
& certutil.exe -store -user CA | grep "Homestead\|^root\|^CA" ^
& certutil.exe -store -enterprise root | grep "Homestead\|^root\|^CA" ^
& certutil.exe -store -enterprise CA | grep "Homestead\|^root\|^CA"

Таким образом, установка сертификата CA в хранилище Current User> Trusted Root Certification Authorities кажется наилучшим вариантом. И убедитесь, что не забыли перезапустите браузер .

более подробное объяснение того, как это работает

В Vagrantfile требуется scripts/Homestead.rb , затем запускается Homestead.configure . Это метод, который настраивает vagrant для всех необходимых приготовлений.

Там мы можем увидеть :

if settings.include? 'sites'
    settings["sites"].each do |site|

        # Create SSL certificate
        config.vm.provision "Shell" do |s|
            s.name = "Creating Certificate: " + site["map"]
            s.path = scriptDir + "/create-certificate.sh"
            s.args = [site["map"]]
        end

        ...

        config.vm.provision "Shell" do |s|
            ...
            s.path = scriptDir + "/serve-#{type}.sh"
            ...
        end

        ...
    end
end

Итак, эти двафайлы создают сертификат и nginx конфиг соответственно.

дальнейшее чтение

Как заставить браузер доверять локальному SSL-сертификату?

10
x-yuri

Ваша проблема в том, что эмитент неизвестен. Как вы упомянули в ошибках; «На этом сайте отсутствует действительный доверенный сертификат» Или «На этом сайте отсутствует действительный доверенный сертификат (net :: ERR_CERT_AUTHORITY_INVALID)»

Давайте сначала поймем, почему возникает эта ошибка. В браузерах есть список доверенных центров сертификации. Вы можете увидеть этот список в разделе настройки/настройки различных браузеров. Если ваш сертификат не выдан одним из этих органов, вы получите вышеуказанную ошибку.

ИСПРАВЛЕНИЕ НА ЛОКАЛЬНОСТИ.. Я могу придумать два возможных решения; 

  1. Добавьте сертификат вручную в браузер, и он начнет открываться с https. 

OR

  1. Подпишите сертификат с уже доверенным органом. Установите сертификаты на локальный сервер. Сконфигурируйте Host в файле/etc/hosts с тем же именем вашего домена, для которого вы подписали сертификат. 

Я надеюсь, что это решит проблему. 

0
Umair Anwar

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

Таким образом, шаги (если вы находитесь на Windows), это нажать вашу клавишу Windows и введите «Свойства обозревателя» и хорошо открыть свои параметры Интернета. Затем нажмите вкладку «содержимое». Отсюда нажмите на «сертификаты», которая является средней кнопкой. enter image description here

Затем нажмите Импорт и Далее. Найдите, где вы сохранили сертификат. 

Затем нажмите «Поместить все сертификаты в следующее хранилище», нажмите «Обзор» и выберите «Доверенные корневые центры сертификации».

enter image description here

И вы должны получить всплывающее окно с просьбой подтвердить и предупредить вас и весь этот джаз.

И затем убедитесь, что вы перезапустите свой браузер. В Chrome вы можете ввести это в адресную строку: chrome://restart. Бум, я надеялся, что это помогло тебе!

0
Radmation