Подтвердить что ты не робот

Как настроить Openshift с возможностью шифрования (letencrypt)

Как настроить приложение Openshift для работы с let encrypt?

NB. Openshift не работает с простым подходом веб-сервера python к серверу, вам нужно использовать правильный порт и привязать к правильному IP-адресу. Кроме того, приложение/передача не требует наличия html-корня.

(Вопрос, на который я отправлю ответ ниже.)

4b9b3361

Ответ 1

Во-первых, проголосовать здесь, чтобы OpenShift делал "Lets Encrypt" своим приоритетом.

Мои действия будут действительны для приложений Django, но с небольшими изменениями вы можете заставить их работать на любом устройстве OpenShift.
Создайте сертификат на вашем локальном хосте/ноутбуке/ПК:

  • git clone https://github.com/letsencrypt/letsencrypt на ваш локальный компьютер.
  • cd letsencrypt
  • ./letsencrypt-auto -a manual -d example.com -d www.example.com
    Теперь вам будет предложено подтвердить ваше владение доменом.
  • В вашем приложении убедитесь, что example.com/.well-known/acme-challenge/{some hash} возвращает требуемый хэш. В django вы можете добавить эту строку в urls.py:

    url(r'^.well-known/acme-challenge/.*', views.https_confirmation, name="https_confirmation"),
    

    а это значение view.py:

    def https_confirmation(request):
        if request.META['HTTP_HOST'] == 'www.example.com':
            return HttpResponse("fqTGI3nUiYnelm...", content_type="text/plain")
        else: #naked domain example.com
            return HttpResponse("HASH pre example.com", content_type="text/plain")
    

    Если ваши страницы подтверждения acme не отображаются, перезапустите приложение OpenShift.

  • Просто загрузите созданные сертификаты /etc/letsencrypt/archive/example.com в веб-консоль OpenShift. Fullchain.pem как Сертификат SSL и privkey.pem как Закрытый ключ сертификата.

Вот и все, теперь вы должны получить рейтинг на ssllabs.com.
Кроме того, чтобы приложение Django использовало HTTPS, установите следующие параметры:

  • В settings.py:

    if not DEBUG:
        SESSION_COOKIE_SECURE = True
        CSRF_COOKIE_SECURE = True`
    
  • Создайте файл wsgi/.htaccess и поместите туда следующие строки:

    RewriteEngine on
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    
  • Включить HTTPS для WSGI - в файле wsgi/application:

    # make django aware that SSL is turned on
    os.environ['HTTPS'] = "on"
    

    Это должно быть все:) Вам нужно повторить эти шаги при обновлении сертификатов, поэтому каждые 90 дней (60 дней лучше, так что у вас не будет проблем в последний возможный день). Это довольно раздражающие шаги, поэтому давайте надеяться (и голосовать) OpenShift скоро реализует Letsencrypt!

Ответ 2

Ответ Lucus03 хорош, я просто хотел бы добавить общий комментарий.

Предположения У вас есть хотя бы бронзовая учетная запись Openshift, которая позволяет настраивать домен. Это нормально работает, и вы можете получить доступ к своему сайту (без https). http://www.testdomain.com

Мы должны следовать ручному процессу. Те, кто знаком с сертификатами, как и я, могут быть неясны в общих понятиях.

Пусть Encrypt должен подтвердить, что вы контролируете домен, прежде чем выдавать сертификат. Это означает, что временные файлы размещаются на сервере, на котором размещен ваш сайт. Пусть Encrypt затем проверяет их и выдает сертификат.

В ручном процессе временные файлы сначала загружаются на ваш локальный компьютер. Затем вы вручную помещаете файлы в нужное место на сервере. Эти текстовые файлы должны быть доступны для просмотра через ваш сайт или процесс завершится неудачно.

Из-за множества приложений, использующих Openshift, вы увидите, что стеки программного обеспечения используемый. например http://velin-georgiev-blog.appspot.com/blog/details/5707532110659584 относится к Flask Как настроить Openshift с помощью шифрования (letencrypt) от Lucas03 Django

Если вы можете отображать временные файлы на www.testdomain.com, используя ваш браузер, вы, вероятно, можете игнорировать стек программного обеспечения и придерживаться того, что знаете.

Ответ 3

Предполагая, что приложение называется https, а имена доменов для сертификата называются www.example.com

Сначала (если это еще не сделано) установите инструменты rhc, https://developers.openshift.com/en/managing-client-tools.html

Второй (если это еще не сделано) Настройте запись CNAME с помощью вашего провайдера DNS - на developers.openshift.com/en/managing-domains-ssl.html Тестирование www.example.com(http) работает и направляется к вашему открывающему приложению перед предыдущим.

Третий Войдите в свое приложение

rhc ssh -a https

Из приложения установите Simple Let Encrypt Client и принесите некоторые пакеты python, необходимые для обновления

pip install git+https://github.com/kuba/simp_le
pip install --upgrade six
pip install --upgrade setuptools

Теперь остановите приложение (передача). Установите веб-сервер python2, который с правильным портом и правильным IP-адресом. [$ OPENSHIFT_PYTHON_IP и OPENSHIFT_PYTHON_PORT]

(Обратите внимание, что это одна строка в python 3.4, python -m http.server $OPENSHIFT_PYTHON_PORT --bind $OPENSHIFT_PYTHON_IP но openshift на момент написания имеет только python 3.2 или python 2. Таким образом, требуется простая строка python 17 script)

gear stop
mkdir -p /tmp/http/.well-known/acme-challenge
cd /tmp/http
wget https://gist.githubusercontent.com/bmsleight/bc34254eed0ee458738e/raw/61110fe6e3980f0c6a401acae93f221f56b1eced/simple_acme_server.py
python2 simple_acme_server.py &

Перейдите в каталог данных как хорошее место для хранения сертификатов и пусть simp_le работает с его магией

cd ~/app-root/data/
simp_le --email [email protected] -f account_key.json   -f fullchain.pem -f key.pem   -d www.example.com --default_root /tmp/http 

Предполагая отсутствие ошибок, остановите веб-сервер python2, перезапустите приложение/передачу и выйдите из сервера openshift.

killall python2
gear start
exit

Forth Загрузка сертификатов и ключей должна выполняться вне приложения, поэтому с вашей локальной машины - возьмите копию, а затем загрузите ее (да, scp - неправильный путь - RTFM)

rhc scp -a https download ./ ./app-root/data/fullchain.pem
rhc scp -a https download ./ ./app-root/data/key.pem
rhc alias update-cert https www.example.com --certificate fullchain.pem --private-key key.pem

Пятый Показать любовь на letencrypt.org

Ответ 4

Ответы правильны, но несколько сложны. Я нашел ответ ниже, попробуйте. Ссылаясь на Позволяет шифровать в OpenShift,

Предполагая, что вы разрешили шифрование, создайте новую папку, скажем, "ssl". Создайте директорию config, work и logs в папке "ssl". Затем запустите команду letencrypt.

$ mkdir ssl
$ cd ssl
$ mkdir config work logs
$ letsencrypt --text --email [email protected] --domains www.mydomain.com,mydomain.com,foo.mydomain.com --agree-tos --renew-by-default --manual certonly --config-dir ./config/ --work-dir ./work/ --logs-dir ./logs/

Он инструктирует загрузить файл в ваше развертывание с открытием. После того, как вы загрузили, вы можете продолжить, и сертификаты будут в вашем распоряжении. Легко и приятно.

Кроме того, убедитесь, что ваши конечные точки развернуты по протоколу "http", а не "https". Else letencrypt выдаст ошибку, если у нее уже есть сертификат.: -)

Ответ 5

Если развертывание на OpenShift V3 +, просмотрите https://github.com/ibotty/openshift-letsencrypt для автоматического управления сертификатами letencrypt на открытых маршрутах.