17

let's encrypt で動作するように Openshift アプリを設定するにはどうすればよいですか?

注意: Openshift は、サーバーへの単純な python Web サーバー アプローチでは機能しません。正しいポートを使用し、正しい IP アドレスにバインドする必要があります。また、app/gear は必ずしも html ルートを持つ必要はありません。

(以下に回答を投稿する質問です。)

4

5 に答える 5

13

まず、ここで投票して、OpenShift が「Let's Encrypt」を優先するようにします。

私の手順は Django アプリで有効ですが、少し変更するだけで、どの OpenShift ギアでも機能させることができます。
localhost/notebook/pc で証明書を生成します。

  1. git clone https://github.com/letsencrypt/letsencryptローカル コンピューターに。
  2. cd letsencrypt
  3. ./letsencrypt-auto -a manual -d example.com -d www.example.com
    次に、ドメインの所有権を確認するよう求められます。
  4. アプリで、example.com/.well-known/acme-challenge/{some hash}必要なハッシュが返されることを確認してください。urls.pydjango では、次の行を次の場所に追加できます。

    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 アプリを再起動してください。

  5. /etc/letsencrypt/archive/example.com作成した証明書を OpenShift Web コンソールにアップロードするだけです。Fullchain.pemSSL 証明書として、privkey.pemCertificate Private Keyとして使用します。

これで、ssllabs.com で A 評価を取得できるはずです。
また、Django アプリで HTTPS を使用するようにするには、次のように設定します。

  1. settings.py

    if not DEBUG:
        SESSION_COOKIE_SECURE = True
        CSRF_COOKIE_SECURE = True`
    
  2. ファイルwsgi/.htaccessを作成し、そこに次の行を配置し ます。

    RewriteEngine on
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    
  3. ファイル内で WSGI の HTTPS を有効にしますwsgi/application

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

    これですべてです:)証明書を更新するときにこれらの手順を繰り返す必要があるため、90日ごとに(60日の方が良いため、最後の可能な日に問題が発生することはありません)。これはかなり面倒な手順なので、OpenShift が Letsencrypt をすぐに実装することを期待 (そして投票) しましょう!

于 2016-01-30T21:53:01.587 に答える
4

Lucus03 の回答は良いです。一般的なコメントを追加したいと思います。

前提 カスタム ドメインを許可する少なくとも 1 つのブロンズ Openshift アカウントを持っている。これは正常に機能しており、サイトにアクセスできます (https なし)。 http://www.testdomain.com

手動のプロセスに従う必要があります。私のように証明書を初めて使用する人は、一般的な概念が明確でない場合があります。

Let's Encrypt は、証明書を発行する前に、あなたがドメインを管理していることを確認する必要があります。これは、サイトをホストするサーバーに一時ファイルを置くことを意味します。Let's Encrypt はこれらをチェックして証明書を発行します。

手動プロセスでは、最初に一時ファイルがローカル PC にダウンロードされます。次に、ファイルをサーバー上の正しい場所に手動で配置します。これらのテキスト ファイルは、サイト経由で表示できる必要があります。そうでない場合、プロセスは失敗します。

Openshift を使用するさまざまなアプリケーションがあるため、さまざまなソフトウェア スタックが使用されていることがわかります。例: http://velin-georgiev-blog.appspot.com/blog/details/5707532110659584は Flask を指します Lucas03 Django によるlet's encrypt (letsencrypt) で Openshift をセットアップする方法

ブラウザを使用して www.testdomain.com の一時ファイルを表示できる場合は、おそらくソフトウェア スタックを無視して、知っていることを続けることができます。

于 2016-03-28T08:38:22.540 に答える
3

アプリケーションがhttpsで、証明書のドメイン名がwww.example.comであるとします。

最初に (まだ行っていない場合) https://developers.openshift.com/en/managing-client-tools.htmlの rhc ツールをインストールします。

次に(まだ行っていない場合) DNS プロバイダーで CNAME レコードをセットアップします - developers.openshift.com/en/managing-domains-ssl.html で www.example.com (http) が動作し、openshift アプリケーションに転送される前にテストします。前に。

3番目 にアプリケーションにログインします

rhc ssh -a https

アプリケーションから、Simple Let's Encrypt Client をインストールし、必要な python パッケージの一部を最新のものにします。

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

ここでアプリケーションを停止します (ギア) 正しいポートと正しい IP を持つ python2 Web サーバーをセットアップします。[$OPENSHIFT_PYTHON_IP & OPENSHIFT_PYTHON_PORT]

(これは python 3.4 では 1 行であることに注意してください。 python -m http.server $OPENSHIFT_PYTHON_PORT --bind $OPENSHIFT_PYTHON_IP ですが、執筆時点での openshift には python 3.2 または python 2 しかありません。したがって、単純な python 17 行のスクリプトが必要です)

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 example@example.com -f account_key.json   -f fullchain.pem -f key.pem   -d www.example.com --default_root /tmp/http 

エラーがないと仮定して、python2 Web サーバーを停止し、アプリケーション/ギアを再起動して、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

第 5 に、letsencrypt.org で愛を示す

于 2016-01-30T18:41:11.873 に答える
2

上記の答えは正しいですが、やや複雑です。以下の答えが最も簡単であることがわかりました。試してみてください。Let's Encrypt on OpenShiftを参照すると、

暗号化を行ったと仮定して、「ssl」などの新しいフォルダーを作成します。「ssl」フォルダにconfig、work、logsディレクトリを作成します。次に、letsencrypt コマンドを実行します。

$ mkdir ssl
$ cd ssl
$ mkdir config work logs
$ letsencrypt --text --email name@email.com --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/

ファイルを openshift デプロイメントにアップロードするように指示します。アップロードが完了したら、先に進むことができ、証明書を自由に使用できます。素敵で簡単。

また、エンドポイントが「https」ではなく「http」プロトコルでデプロイされていることを確認してください。それ以外の場合、letsencrypt は、既に証明書を持っているというエラーをスローします。:-)

于 2016-06-16T04:58:08.780 に答える