2012-04-30 28 views
10

Tôi đang cố gắng chạy Chai trên máy chủ của Cherrypy. Tôi muốn nhận hỗ trợ SSL.chai trên máy chủ cherrypy + ssl

Cho đến nay tôi đã cố gắng này:

from bottle import Bottle, route 
from cherrypy import wsgiserver 

app = Bottle() 

@app.route("/") 
def index(): 
    return "Hello" 


server = wsgiserver.CherryPyWSGIServer(
      ('0.0.0.0', 443), app) 

server.ssl_adapter.private_key = 'server.key' 
server.ssl_adapter.certificate = 'server.crt' 
server.start() 

Nhưng ném trên một ArgumentError mà tôi không thể thiết lập các thuộc tính trên một None đối tượng (ssl_adpater). Rõ ràng tôi cần phải đặt thuộc tính ssl_adapter cho một số đối tượng có nguồn gốc từ SSLAdapter, nhưng tôi không thể tìm thấy bất kỳ ví dụ nào.

Tôi đang sử dụng Python 2.7 và Cherrypy 3.2.2

Cảm ơn.

+0

Bạn có kế hoạch để chạy CherryPy như một máy chủ độc lập hoặc đằng sau một máy chủ web như Apache httpd hoặc Nginx? – Bruno

+0

Là máy chủ độc lập – zyash

Trả lời

9

Hãy thử sử dụng như sau:

import web 
from web.wsgiserver import CherryPyWSGIServer 
from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter 

ssl_cert = "path/to/ssl_certificate" 
ssl_key = "path/to/ssl_private_key" 

CherryPyWSGIServer.ssl_adapter = BuiltinSSLAdapter(ssl_cert, ssl_key, None) 
4

tôi đã không thử những điều sau đây, nhưng hy vọng, nó sẽ chỉ cho bạn đi đúng hướng.

WSGI thường dành cho giao tiếp giữa máy chủ web như Apache Httpd và ứng dụng web Python, nơi các yêu cầu được xử lý bởi máy chủ web và được ứng dụng Python xử lý. Vì bạn muốn một ứng dụng độc lập, sử dụng bộ điều hợp WSGI không có vẻ khá đúng, mặc dù điều này được đề cập trong this document (nhưng đối với phiên bản cũ của CherryPy).

Phiên bản mới hơn của CherryPy sử dụng cherrypy.quickstart(...) cho các máy chủ độc lập của chúng. Điều này nghe có vẻ thích hợp hơn cho ứng dụng của bạn. Tôi sẽ đề nghị sử dụng một cấu hình như mô tả on this page, một cái gì đó dọc theo những dòng:

config={ 
    'server.socket_port': 443, 
    'server.ssl_module':'pyopenssl', 
    'server.ssl_certificate':'/.../host.crt', 
    'server.ssl_private_key':'/.../host.key', 
    'server.ssl_certificate_chain':'/.../ca_certs.crt' 
} 

cherrypy.config.update(config) 
cherrypy.quickstart(...) 

này cũng sẽ phù hợp hơn với các _cserver documentation.

(Bằng cách này, cổng 443 là mặc định cho HTTPS, không 433.)

Các vấn đề liên quan