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/