2017-06-10 29 views
1

ログイン要求が認証のためにリモートCASサーバ(HTTPSを使用)にリダイレクトされると、django CASクライアントに奇妙なSSLエラーが発生しました。しかし、私はCASサーバーがログインしようとするとチケットを生成しているリモートを参照してください。要求や応答中に失敗しているかどうかはわかりません。django_cas_ngがsslエラーを投げる

Traceback (most recent call last): 
File "/home/test/p36d19/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py", line 438, in wrap_socket 
    cnx.do_handshake() 
File "/home/test/p36d19/lib/python3.6/site-packages/OpenSSL/SSL.py", line 1638, in do_handshake 
    self._raise_ssl_error(self._ssl, result) 
File "/home/test/p36d19/lib/python3.6/site-packages/OpenSSL/SSL.py", line 1378, in _raise_ssl_error 
    _raise_current_error() 
File "/home/test/p36d19/lib/python3.6/site-packages/OpenSSL/_util.py", line 54, in exception_from_error_queue 
    raise exception_type(errors) 
OpenSSL.SSL.Error: [('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')] 

や設定ファイルは、私は私の開発マシン上で自己証明書を使用してrunsslserverを使ってDjangoアプリケーションを実行している(そして、あまりにも、サーバーの証明書を使用してみました)てる

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django_cas_ng', 
) 
AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend', 
    'django_cas_ng.backends.CASBackend', 
) 
CAS_SERVER_URL = "https://login.cas-example.com:8443/cas/login" 
CAS_REDIRECT_URL = '/login_test' 

です。

運にも、以下の環境変数(SSLライブラリとリクエストモジュールにバグがある)を

REQUESTS_CA_BUNDLE='\tmp\app.crt' 

答えて

0

設定した後、あなたのクライアントは、サーバー証明書を検証することができないようです。

'ssl3_get_server_certificate', 'certificate verify failed'

これはおそらく、障害のある証明書またはクライアントがサーバー証明書に署名しているCA証明書(複数可)へのアクセス権を持っていないということです。サーバー証明書が有効であれば

はチェック(たとえば、正しいホスト名、時代遅れではない、失効していない、正しい証明書タイプではなく、小さすぎるRSAキーの長さとなしMD5シグネチャ)

あなたは、OpenSSLを使用してサーバーハンドシェイクをテストすることができます:

openssl s_client -connect yourserver.com:443 -CAfile server-ca.crt

サーバ証明書に署名した、完全な証明書チェーンがあなたのapp.crt 'REQUESTS_CA_BUNDLE='\tmp\app.crt'であることを確認します(アプリはCA証明書のための道で奇妙な名前です)

関連する問題