CherryPy - การปรับใช้แอปพลิเคชัน
บทนี้จะเน้นมากขึ้นเกี่ยวกับ SSL ของแอปพลิเคชัน CherryPy ที่เปิดใช้งานผ่านเซิร์ฟเวอร์ CherryPy HTTP ในตัว
การกำหนดค่า
การตั้งค่าการกำหนดค่าที่จำเป็นในเว็บแอปพลิเคชันมีหลายระดับ -
Web server - การตั้งค่าที่เชื่อมโยงกับเซิร์ฟเวอร์ HTTP
Engine - การตั้งค่าที่เกี่ยวข้องกับการโฮสต์เครื่องยนต์
Application - แอปพลิเคชันที่ผู้ใช้ใช้งาน
การปรับใช้
การปรับใช้แอปพลิเคชัน CherryPy ถือเป็นวิธีการที่ค่อนข้างง่ายซึ่งมีแพ็คเกจที่ต้องการทั้งหมดจากเส้นทางระบบ Python ในสภาพแวดล้อมที่โฮสต์บนเว็บที่ใช้ร่วมกันเว็บเซิร์ฟเวอร์จะอยู่ในส่วนหน้าซึ่งอนุญาตให้ผู้ให้บริการโฮสต์ดำเนินการกรอง เซิร์ฟเวอร์ส่วนหน้าสามารถเป็น Apache หรือlighttpd.
ส่วนนี้จะนำเสนอโซลูชันบางอย่างเพื่อเรียกใช้แอปพลิเคชัน CherryPy ที่อยู่เบื้องหลังเซิร์ฟเวอร์เว็บ Apache และ lighttpd
cherrypy
def setup_app():
class Root:
@cherrypy.expose
def index(self):
# Return the hostname used by CherryPy and the remote
# caller IP address
return "Hello there %s from IP: %s " %
(cherrypy.request.base, cherrypy.request.remote.ip)
cherrypy.config.update({'server.socket_port': 9091,
'environment': 'production',
'log.screen': False,
'show_tracebacks': False})
cherrypy.tree.mount(Root())
if __name__ == '__main__':
setup_app()
cherrypy.server.quickstart()
cherrypy.engine.start()
SSL
SSL (Secure Sockets Layer)สามารถรองรับในแอปพลิเคชันที่ใช้ CherryPy ในการเปิดใช้งานการสนับสนุน SSL ต้องปฏิบัติตามข้อกำหนดต่อไปนี้ -
- ติดตั้งแพ็คเกจ PyOpenSSL ในสภาพแวดล้อมของผู้ใช้
- มีใบรับรอง SSL และคีย์ส่วนตัวบนเซิร์ฟเวอร์
การสร้างใบรับรองและคีย์ส่วนตัว
มาจัดการกับข้อกำหนดของใบรับรองและคีย์ส่วนตัว -
- ขั้นแรกผู้ใช้ต้องมีคีย์ส่วนตัว -
openssl genrsa -out server.key 2048
- คีย์นี้ไม่ได้รับการป้องกันด้วยรหัสผ่านดังนั้นจึงมีการป้องกันที่อ่อนแอ
- คำสั่งต่อไปนี้จะออก -
openssl genrsa -des3 -out server.key 2048
โปรแกรมจะต้องใช้ข้อความรหัสผ่าน หาก OpenSSL เวอร์ชันของคุณอนุญาตให้คุณระบุสตริงว่างได้ให้ทำเช่นนั้น มิฉะนั้นให้ป้อนข้อความรหัสผ่านเริ่มต้นแล้วลบออกจากคีย์ที่สร้างขึ้นดังนี้ -
openssl rsa -in server.key -out server.key
- การสร้างใบรับรองมีดังนี้ -
openssl req -new -key server.key -out server.csr
กระบวนการนี้จะขอให้คุณป้อนรายละเอียดบางอย่าง ในการทำเช่นนั้นต้องออกคำสั่งต่อไปนี้ -
openssl x509 -req -days 60 -in server.csr -signkey
server.key -out server.crt
ใบรับรองที่เพิ่งลงนามจะมีอายุ 60 วัน
รหัสต่อไปนี้แสดงการใช้งาน -
import cherrypy
import os, os.path
localDir = os.path.abspath(os.path.dirname(__file__))
CA = os.path.join(localDir, 'server.crt')
KEY = os.path.join(localDir, 'server.key')
def setup_server():
class Root:
@cherrypy.expose
def index(self):
return "Hello there!"
cherrypy.tree.mount(Root())
if __name__ == '__main__':
setup_server()
cherrypy.config.update({'server.socket_port': 8443,
'environment': 'production',
'log.screen': True,
'server.ssl_certificate': CA,
'server.ssl_private_key': KEY})
cherrypy.server.quickstart()
cherrypy.engine.start()
ขั้นตอนต่อไปคือการเริ่มต้นเซิร์ฟเวอร์ หากคุณทำสำเร็จคุณจะเห็นข้อความต่อไปนี้บนหน้าจอของคุณ -
HTTP Serving HTTPS on https://localhost:8443/