SORU
5 Kasım 2011, CUMARTESİ


Nasıl Django ile https bağlantıları-https olmayan bağlantılar 'runserver kullanarak elimden geldiğince kolayca test edebilirsiniz'?

""Kurabiye ve test etmek istediğiniz işlevi karmaşık bir SSL sunucu geliştirme. etkin kurmak gerek olmadan güvenli kullanan bir uygulama var Bu şifreli olmayan istekleri ./manage.py runserver kullanarak test olabildiğince basit yapmak için herhangi bir yolu var mı?

CEVAP
6 Kasım 2011, Pazar


Değilgibidahili geliştirme sunucusu olarak basit, ama yakın bir şey tarayıcınız ve geliştirme sunucu arasında SSLifying bir aracı olarak stunnel'ı kullanarak elde etmek çok zor değil. Stunnel'ı yapılandırılmış bir bağlantı noktasındaki bağlantıları kabul eden makinenizde basit bir sunucu kurmak için izin verir, SSL ile onları sarar ve başka bir sunucuya boyunca onları geçer. Bu stunnel'ı bir bağlantı noktası (8443) açın ve Django runserver örnek aldığı herhangi bir trafik akışına birlikte olacağız.

İlk downloaded here olabilir veya platform paket sistemi (örn: apt-get install stunnel) tarafından sağlanan stunnel'ı gerekir. Stunnel'ı sürüm 4 (örneğin: 10* *Ubuntu) kullanacağım, sürüm 3 de çalışır, ama farklı yapılandırma seçenekleri.

İlk olarak gerekli yapılandırma dosyalarını tutmak falan SSLish için Django projeniz içinde bir dizin oluşturun.

mkdir stunnel
cd stunnel

Gelecek ve SSL iletişim için kullanılan yerel sertifika bir anahtar oluşturmak için ihtiyacımız olacak. Bunun için openssl dönüyoruz.

Oluşturun anahtarı:

openssl genrsa 1024 > stunnel.key

Bu anahtarı (bu belgesine dahil edilmesi - sadece sizin için iyi hissediyor ne yanıt verecek bilgi bir sürü sorar) kullandığı sertifika oluşturun:

openssl req -new -x509 -nodes -sha1 -days 365 -key stunnel.key > stunnel.cert

Şimdi birleştirin stunnel'ı SSL iletişim için kullanacağı tek bir dosya içine bu:

cat stunnel.key stunnel.cert > stunnel.pem

Stunnel'ı dev_https aşağıdaki içeriği ile adı için bir yapılandırma dosyası oluşturun

pid=

cert = stunnel/stunnel.pem
sslVersion = SSLv3
foreground = yes
output = stunnel.log

[https]
accept=8443
connect=8001
TIMEOUTclose=1

Bu dosya bilmeniz gereken ne stunnel'ı söyler. Özellikle mi söylüyorsun bunu kullanmak için değil bir pıd dosyası, sertifika dosyasıdır, ne sürümü SSL kullanın, Bu çalıştıracağını ön planda, nerede gerekir günlük çıktı, ve o gerektiğini kabul bağlantı noktası 8443 ve mekik onlarla birlikte port 8001. Son parametre (TİMEOUTclose) 1 saniye aktivite ile geçtikten sonra otomatik olarak bağlantıyı kapatmak için söyler.

Pop Django proje dizininize geri (içinde manage.py olan kişi):

cd ..

Burada bir senaryo stunnel'ı ve iki django geliştirme sunucusu (normal bağlantı ve SSL bağlantıları için) çalışacak runserver adlı yaratacağız:

stunnel4 stunnel/dev_https &
python manage.py runserver&
HTTPS=1 python manage.py runserver 8001

Bu işe bir son verelim, satır satır:

  • Hat 1: stunnel'ı ve nokta yapılandırma dosyası için oluşturduğumuz Başlar. Bu stunnel'ı bağlantı noktası 8443, şal SSL yer aldığı herhangi bir dinle bağlantıları vardır, ve port 8001 için bunlara bir bakın
  • 2. satır: normal bir Django örneği (port 8000) runserver Başlar
  • Satır 3: başka bir Django örneği (port 8001) runserver ve eğer kullanarak HTTPS gerçekleştirildiği gibi gelen tüm bağlantıları tedavisinde yapılandırır Başlar.

Bu runscrıpt ile oluşturulmuştur çalıştırılabilir dosya:

chmod a x runserver

Şimdi çalıştırmak istediğinizde geliştirme sunucunuzu sadece proje dizininiz ./runserver yürütmek. Deneyin, sadece normal HTTP trafiği için http://localhost:8000 tarayıcınızı ve HTTPS trafiği için https://localhost:8443. Tarayıcı neredeyse kesinlikle sertifika kullanılan şikayet edecek ve sen bir istisna eklemek gerekir veya aksi açıkça tarayıcı taramaya devam etmek için talimat olduğunu unutmayın. Bu kendi sertifika oluşturulur ve tarayıcı tarafından kim olduğu hakkında doğruyu söylediğin için güvenilir değil çünkü. Bu gelişim için iyidir, ama belli ki üretim için yeterli değil.

Ne yazık ki, benim makinede bu runserver script Ctrl-C manuel süreçleri öldürmek zorundayım vurduğumda güzel çıkın dışarı gelmez herkes bunu düzeltmek için bir öneriniz var mı?

Michael Gile sayesinde post ve django-örgü wiki entry referans malzeme için.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ImBluecams

    ImBluecams

    25 Kasım 2012
  • RD

    RD

    19 NİSAN 2006
  • superemposed

    superemposed

    25 Aralık 2007