Nginx — самоподписный SSL или HTTPS на локальной машине (дев-окружение)

Иногда приходится тестировать задачи в которых обмен трафиком происходит по 443 порту (HTTPS).

Пример: есть сайт x.ru который отправляет XHR запрос к сайту yapro.ru по протоколу HTTPS.

Задача: локально перенаправить данный запрос на локально настроенный сайт yapro.ru.

Решение: добавить хост yapro.ru в локальный /etc/hosts и протестировать правильную обработку XHR-запроса.

Поехали - создадим директорию где будем хранить сертификат:

mkdir /etc/nginx/certs
cd /etc/nginx/certs

Сгенерируем приватный ключ (ssl_certificate_key):

openssl genrsa -out "devcert.key" 2048

Сгенерируем публичный ключ, используя приватный ключ для шифрования:

* при выполнении следующей команды, вас будут просить вводить данные о своем сервисе. Можно эти данные не вводить, единственное, советую ввести данные при запросе "Common Name", некоторые советуют вводить: *.dev или хост-имя сервиса

openssl req -new -key "devcert.key" -out "devcert.csr"

Теперь подпишем и сгенерируем сертификат:

openssl x509 -req -days 365 -in "devcert.csr" -signkey "devcert.key" -out "devcert.crt"

Скажем nginx-у слушать 80 и 443 порты:

listen 80:
listen 443 ssl;

Пропишем наш сертификат и публичный ключ:

ssl_certificate     /etc/nginx/certs/devcert.crt;
ssl_certificate_key /etc/nginx/certs/devcert.key;

Все, что осталось сделать - перезапустить nginx:

service nginx restart

Осталось проверить наш сертификат:

curl -I -L https://yapro.ru/robots.txt --no-check-certificate

Как видите, благодаря опции "--no-check-certificate" мы сказали curl-у - не обращать внимание на то, что сертификат самоподписный. Удачки.

Источник: 1

Так же, может быть Вам будет интересно почитать про сертификаты от Letsencrypt: 1 - 2 - 3 - 4 - 5 - 6 - 7


26.12.2016 09:21