Настройка (https) SSL на локальном хосте для развития метеоров
Как создать самоподписанный SSL-сертификат для использования на локальном сервере на Mac 10.9?
Мне нужно, чтобы мой localhost работал как https://localhost
Я использую связанный API. Здесь объясняется функция, которая требует ssl на локальном хосте.
https://developer.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens
Вкратце, linkedin отправит клиенту маркер-носитель после того, как клиент разрешит моему приложению получать доступ к их данным. Встроенная библиотека javascript от linkedin автоматически отправит этот файл cookie на мой сервер/сервер. Эта информация о json файле используется для аутентификации пользователя.
Однако, linkedin не отправит приватный файл cookie, если сервер не является https.
Ответы
Ответ 1
Быстрое и простое решение, которое работает в режиме dev/prod, используя http-proxy
ontop вашего приложения.
1) Добавьте в пакет tarang:ssl
meteor add tarang:ssl
2) Добавьте свой сертификат и ключ в каталог в своем приложении /private
, например /private/key.pem
и /private/cert.pem
Затем в вашем/серверном коде
Meteor.startup(function() {
SSLProxy({
port: 6000, //or 443 (normal port/requires sudo)
ssl : {
key: Assets.getText("key.pem"),
cert: Assets.getText("cert.pem"),
//Optional CA
//Assets.getText("ca.pem")
}
});
});
Затем запустите приложение и загрузите https://localhost:6000
. Убедитесь, что вы не смешиваете порты с https и http, поскольку они обслуживаются отдельно.
С этим я предполагаю, что вы знаете, как создать свой собственный самоподписанный сертификат, есть множество ресурсов о том, как это сделать. На всякий случай здесь есть некоторые ссылки.
Альтернатива самоподписанным сертификатам: лучше использовать официальный сертификат для домена ваших приложений и использовать /etc/hosts
чтобы создать петлю на вашем локальном компьютере.. Это связано с тем, что его утомительно переключать сертификаты между dev и prod.
Ответ 2
Или вы можете просто использовать ngrok для пересылки вперед:)
1) запустите свой сервер (т.е. на localhost: 3000)
2) запустите ngrok из командной строки:./ngrok http 3000
который должен предоставить вам http и https URL-адреса для доступа с любого устройства
Ответ 3
Другим решением является использование NGINX. Следующие шаги протестированы на Mac El Capitan, если ваш локальный веб-сайт работает на порту 3000:
1. Добавьте хост на локальный компьютер:
Отредактируйте файл хоста: vi /etc/hosts
Добавьте строку для своего локального домена dev: 127.0.0.1 dev.yourdomain.com
Очистите кеш dscacheutil -flushcache
Теперь вы можете связаться с вашим местным веб-сайтом http://dev.yourdomain.com:3000
2. Создайте самоподписанный SSL, как описано здесь: http://mac-blog.org.ua/self-signed-ssl-for-nginx/
3. Установите nginx и настройте его, чтобы отобразить трафик https на ваш локальный веб-сайт:
brew install nginx
sudo nginx
Теперь вы сможете достичь http://localhost:8080 и получить сообщение Nginx.
Это значение по умолчанию, поэтому теперь вы должны установить https conf:
Отредактируйте файл conf:
vi /usr/local/etc/nginx/nginx.conf
Раскомментируйте раздел сервера HTTPS и измените следующие строки:
server_name dev.yourdomain.com;
Поместите свои сертификаты, которые вы только что создали:
ssl_certificate /path-to-your-keys/nginx.pem;
ssl_certificate_key /path-to-your-keys/nginx.key;
Измените раздел местоположения следующим образом:
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Client-Verify SUCCESS;
proxy_set_header X-Client-DN $ssl_client_s_dn;
proxy_set_header X-SSL-Subject $ssl_client_s_dn;
proxy_set_header X-SSL-Issuer $ssl_client_i_dn;
proxy_read_timeout 1800;
proxy_connect_timeout 1800;
}
Перезагрузите nginx:
sudo nginx -s stop
sudo nginx
И теперь вы должны иметь доступ к https://dev.yourdomain.com