การกําหนดค่า TLS สําหรับ API BaaS

Edge for Private Cloud เวอร์ชัน 4.17.05

TLS (Transport Layer Security) ซึ่งมีรุ่นก่อนหน้าเป็น SSL) เป็นเทคโนโลยีความปลอดภัยมาตรฐาน สำหรับการดูแลการรับส่งข้อความที่ปลอดภัยและมีการเข้ารหัสในสภาพแวดล้อม API ของคุณ คุณสามารถกำหนดค่า TLS บนพอร์ทัล API BaaS และโหนดสแต็ก API BaaS

รูปภาพต่อไปนี้แสดงแผนภาพการติดตั้งใช้งานโดยทั่วไปสำหรับ API BaaS ที่มีพอร์ทัล BaaS รายการเดียว โหนดและโหนดสแต็ก API BaaS 3 โหนด

นักพัฒนาซอฟต์แวร์ใช้เบราว์เซอร์เพื่อส่งคำขอไปยังพอร์ทัล โดยค่าเริ่มต้น คำขอจะใช้ HTTP บนพอร์ต 9000 ของโหนดพอร์ทัล

การติดตั้งใช้งานนี้รวมถึงตัวจัดสรรภาระงานระหว่างโหนดพอร์ทัลและโหนดสแต็ก ด้วยวิธีนี้ พอร์ทัลจะสร้างคำขอ HTTP ไปยังตัวจัดสรรภาระงาน จากนั้นตัวจัดสรรภาระงานจะทำ ส่งต่อคำขอไปยังโหนดชุดใดโหนดหนึ่ง วิธีนี้เป็นการติดตั้งใช้งานที่แนะนำ สำหรับระบบที่ใช้งานจริง

ตัวเลือกการกำหนดค่า TLS

เมื่อกำหนดค่า TLS สำหรับ API BaaS คุณมีหลายตัวเลือกดังนี้

  • กำหนดค่า TLS บนพอร์ทัลและบนตัวจัดสรรภาระงานสำหรับโหนดสแต็ก

    ในการกำหนดค่านี้ นักพัฒนาซอฟต์แวร์จะใช้โปรโตคอล HTTPS เพื่อเข้าถึงพอร์ทัลและพอร์ทัล ที่ทำงานอยู่ในเบราว์เซอร์จะใช้ HTTPS เพื่อส่งคำขอไปยังโหนดของสแต็กผ่านการโหลด บาลานเซอร์ ตัวจัดสรรภาระงานใช้ HTTP เพื่อเข้าถึงโหนดสแต็ก
  • กำหนดค่า TLS บนพอร์ทัล ตัวจัดสรรภาระงาน และโหนดสแต็ก

    กำหนดค่าตัวจัดสรรภาระงานให้ใช้ TLS เพื่อเข้าถึงโหนดสแต็กเพื่อเพิ่มความปลอดภัย
  • กำหนดค่า TLS บนพอร์ทัลและในโหนดสแต็กเดี่ยว

    ในสภาพแวดล้อมขนาดเล็ก เช่น ในสภาพแวดล้อมการทดสอบหรือการพัฒนา คุณอาจมีเพียง โหนดสแต็กเดี่ยว ซึ่งหมายความว่าไม่จำเป็นต้องมีตัวจัดสรรภาระงาน ในการกำหนดค่าแบบนี้ กำหนดค่า TLS ทั้งในพอร์ทัลและโหนดสแต็ก
  • กำหนดค่า TLS บนตัวจัดสรรภาระงานสำหรับพอร์ทัล

    ตัวเลือกหนึ่งที่ไม่ได้แสดงด้านบนคือการใช้ตัวจัดสรรภาระงานที่ด้านหน้าโหนดพอร์ทัล ในนั้น คุณสามารถกำหนดค่า TLS บนตัวจัดสรรภาระงาน และสามารถเลือก ระหว่างตัวจัดสรรภาระงานและพอร์ทัล

ตรวจสอบว่าพอร์ต TLS เปิดอยู่

กระบวนการด้านล่างจะกำหนดค่า TLS บนพอร์ตพอร์ทัลเริ่มต้นของ 9000 และโหนดสแต็กของ 8080 แต่คุณสามารถเปลี่ยนพอร์ตนี้ได้หากต้องการ

ไม่ว่าคุณจะใช้พอร์ตใด คุณต้องตรวจสอบว่าพอร์ตนั้นเปิดอยู่ในโหนด สำหรับ เช่น คุณใช้คำสั่งต่อไปนี้เพื่อเปิดพอร์ต 8443 ได้

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

การกำหนดค่า TLS ในสแต็ก API BaaS

โดยค่าเริ่มต้น TLS จะปิดใช้อยู่สำหรับสแต็ก API BaaS จากนั้นคุณจะเข้าถึง BaaS API ผ่าน HTTP ได้โดย โดยใช้ที่อยู่ IP หรือชื่อ DNS ของโหนดสแต็กและพอร์ต 8080 เช่น

http://stack_IP:8080

หรือคุณจะกำหนดค่าการเข้าถึง TLS ของ BaaS API เพื่อให้เข้าถึงได้ใน แบบฟอร์ม:

https://stack_IP:8080

ในตัวอย่างนี้ คุณได้กำหนดค่าการเข้าถึง TLS เพื่อใช้พอร์ต 8080 แต่ไม่จำเป็นต้องใช้พอร์ต 8080 - คุณสามารถกำหนดค่ากลุ่มเพื่อใช้พอร์ตอื่นได้ ข้อกำหนดเพียงอย่างเดียวคือไฟร์วอลล์ของคุณ อนุญาตให้มีการรับส่งข้อมูลผ่านพอร์ตที่ระบุ

สแต็กรองรับคำขอได้เพียงประเภทเดียว (HTTP หรือ HTTPS) ผ่านพอร์ตเดียว ดังนั้น หากกำหนดค่าการเข้าถึง HTTPS บนพอร์ต 8080 คุณจะใช้ HTTP เพื่อเข้าถึงพอร์ต 8080 ไม่ได้ หากคุณ กำหนดค่าสแต็กให้ใช้พอร์ต 8443 กับ HTTPS จากนั้นกลุ่มจะไม่ฟังสแต็กบนพอร์ตอีกต่อไป 8080

ใช้ขั้นตอนต่อไปนี้ในการกำหนดค่าการเข้าถึง TLS ของสแต็ก

  1. สร้างไฟล์ JKS คีย์สโตร์ที่มีใบรับรอง TLS และคีย์ส่วนตัว สำหรับข้อมูลเพิ่มเติม โปรดดูการกำหนดค่า TLS/SSL สำหรับ Edge On สถานที่
    หมายเหตุ: ตรวจสอบว่ารหัสผ่านในคีย์สโตร์และคีย์เหมือนกัน
  2. คัดลอกไฟล์ JKS คีย์สโตร์ไปยังไดเรกทอรีในโหนดสแต็ก เช่น /opt/apigee/customer/application "Apigee" ต้องเข้าถึงไดเรกทอรีได้ ผู้ใช้
  3. เปลี่ยนการเป็นเจ้าของไฟล์ JKS เป็น "apigee" ผู้ใช้:
    > chown Apigee:Apigee /opt/apigee/customer/application/keystore.jks

    โดยที่ keystore.jks คือชื่อ ของไฟล์คีย์สโตร์
  4. แก้ไข /opt/apigee/customer/application/usergrid.properties เพื่อตั้งค่าคุณสมบัติต่อไปนี้ รวมถึงเส้นทางไปยังไฟล์ JKS และรหัสผ่านใน คีย์สโตร์และคีย์ หากไม่มีไฟล์อยู่ ให้สร้างไฟล์ดังกล่าว:
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    tomcat-server_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # โดยค่าเริ่มต้น การเข้าถึง TLS จะใช้พอร์ต 8080
    # ใช้คุณสมบัตินี้เพื่อระบุพอร์ตอื่น
    # tomcat-server_port=8080


    คำเตือน: ค่า password ต้องเป็นข้อความที่ชัดเจน ดังนั้น คุณจึงควรป้องกันไม่ให้ usergrid.properties ไม่ได้รับอนุญาต สิทธิ์การเข้าถึง

    ใช้ tomcat-server_keyalias เพื่อระบุชื่อแทนคีย์สโตร์ คุณตั้งค่าชื่อแทนคีย์ตอนสร้างคีย์ ตัวอย่างเช่น คุณจะตั้งค่าได้โดยใช้ตัวเลือก -alias กับคำสั่ง keytool

    ใช้ tomcat-server_ssl.protocols เพื่อตั้งค่าโปรโตคอล TLS ที่สแต็กนี้รองรับ สำหรับรายการโปรโตคอลที่ Java 8 รองรับ โปรดดูที่ http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename
  5. กำหนดค่าโหนดของสแต็ก:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid กำหนดค่า
  6. รีสตาร์ทสแต็ก BaaS ด้วยคำสั่ง
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid โปรดรีสตาร์ท
  7. ยืนยันว่า TLS ทำงานโดยเรียกใช้คำสั่ง cURL ต่อไปนี้บนโหนดกลุ่มโดยใช้ HTTPS:
    > curl -k https://localhost:8080/status -v

    ถ้ากำหนดค่า TLS อย่างถูกต้อง คุณควรจะเห็นการตอบกลับที่มีข้อมูลสถานะ

    หากคุณกำหนดค่าการเข้าถึง TLS ผ่านพอร์ตอื่นที่ไม่ใช่ 8080 ให้แก้ไขคำสั่งด้านบนเพื่อใช้คำสั่ง พอร์ตที่ถูกต้อง
  8. ทำซ้ำในโหนดของสแต็กทั้งหมด
  9. หากคุณมีตัวจัดสรรภาระงานที่ด้านหน้าโหนดสแต็ก ให้กำหนดค่า ตัวจัดสรรภาระงานที่จะส่งคำขอไปยังโหนดสแต็กผ่าน HTTPS ดูเอกสารใน ตัวจัดสรรภาระงานเพื่อดูข้อมูลเพิ่มเติม

    หากพอร์ทัลส่งคำขอไปยังสแต็กโดยตรง ให้กำหนดค่าพอร์ทัลเป็น เข้าถึงสแต็กผ่าน HTTPS ตามที่อธิบายไว้ในหัวข้อต่อไปนี้
  10. ใช้ขั้นตอนด้านล่างใน "กำหนดค่าโหนดสแต็ก API BaaS สำหรับ TLS ในสแต็กหรือพอร์ทัล" เพื่อให้มั่นใจว่าโหนดสแต็กมี TLS URL ที่ถูกต้องเมื่อสร้างผู้ใช้ คำตอบ

กำลังกำหนดค่า พอร์ทัลสำหรับเข้าถึงสแต็กผ่าน TLS

พอร์ทัล BaaS ที่ทำงานในเบราว์เซอร์จะทำงานด้วยการเรียก API ไปยังสแต็ก BaaS หากคุณ กำหนดค่าสแต็ก BaaS เพื่อใช้ TLS จากนั้นคุณต้องกำหนดค่าพอร์ทัลด้วยเพื่อทำการเรียกเหล่านั้น ผ่าน HTTPS

โดยปกติ การติดตั้ง API BaaS จะได้รับการกำหนดค่าอย่างใดอย่างหนึ่งต่อไปนี้

  • ใช้ตัวจัดสรรภาระงานระหว่างพอร์ทัลและโหนดสแต็ก

    กำหนดค่าตัวจัดสรรภาระงานเพื่อส่งคำขอไปยังโหนดสแต็กผ่าน HTTPS โปรดดู เอกสารประกอบเกี่ยวกับตัวจัดสรรภาระงานเพื่อดูข้อมูลเพิ่มเติม

    ในการกำหนดค่านี้ พอร์ทัลจะเข้าถึงตัวจัดสรรภาระงานผ่าน HTTP หรือ HTTPS ได้ ทั้งนี้ขึ้นอยู่กับ วิธีกำหนดค่าตัวจัดสรรภาระงาน หากตัวจัดสรรภาระงานใช้ TLS ให้ใช้ขั้นตอนด้านล่างเพื่อ กำหนดค่าพอร์ทัลเพื่อส่งคำขอไปยังตัวจัดสรรภาระงานของ HTTPS
  • ให้พอร์ทัลส่งคำขอไปยังสแต็กโดยตรง

    กำหนดค่าพอร์ทัลเพื่อเข้าถึงสแต็กผ่าน HTTPS ตามที่อธิบายไว้ด้านล่าง

ใช้ขั้นตอนต่อไปนี้ในการกำหนดค่าพอร์ทัล API BaaS เพื่อทำการเรียก API ผ่าน HTTPS

  1. กำหนดค่าการเข้าถึง TLS บนสแต็ก BaaS ตามที่อธิบายไว้ข้างต้น หรือในตัวจัดสรรภาระงานสำหรับ สแต็กโหนดตามที่อธิบายไว้ในเอกสารประกอบสำหรับตัวจัดสรรภาระงาน
  2. แก้ไข /opt/apigee/customer/application/portal.properties เพื่อตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้ หากไม่มีไฟล์อยู่ ให้สร้างไฟล์ดังกล่าว:
    baas.portal.config.overrideUrl=https://stackIP:port

    ระบุที่อยู่ IP หรือชื่อ DNS และพอร์ตของโหนดสแต็ก API เป็นค่าของพร็อพเพอร์ตี้นี้ สำหรับการติดตั้งโหนดเดียว หรือตัวจัดสรรภาระงาน หากคุณมีตัวจัดสรรภาระงานอยู่ที่ด้านหน้า โหนดสแต็ก API BaaS
  3. กำหนดค่าโหนดพอร์ทัล:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal กำหนดค่า
  4. รีสตาร์ทพอร์ทัลโดยใช้คำสั่ง:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal รีสตาร์ท
  5. หากคุณใช้ใบรับรองแบบ Self-Signed เมื่อกำหนดค่าการเข้าถึง TLS ให้กับกลุ่ม ด้านบน เบราว์เซอร์อาจไม่อนุญาตให้ส่งคำขอไปยังสแต็กจากพอร์ทัล หากคุณเห็น ข้อผิดพลาดในเบราว์เซอร์ว่าการเข้าถึง HTTPS ในกลุ่มไม่ได้รับอนุญาต ให้ส่งคำขอต่อไปนี้ URL ในเบราว์เซอร์ของคุณ และเพิ่มข้อยกเว้นด้านความปลอดภัยเพื่ออนุญาตการเข้าถึง:
    https://stackIP:port/status

    ระบุที่อยู่ IP หรือชื่อ DNS และพอร์ตของโหนดหรือตัวจัดสรรภาระงาน API ของสแต็ก

การกำหนดค่า TLS ในพอร์ทัล API BaaS

โดยค่าเริ่มต้น ผู้ใช้จะเข้าถึงพอร์ทัลได้โดยการส่งคำขอ HTTP ที่ไม่ได้เข้ารหัสที่พอร์ต 9000 ใน เซิร์ฟเวอร์พอร์ทัล คุณสามารถกำหนดค่าพอร์ทัลให้ใช้ HTTPS ในการเข้ารหัสข้อมูลที่ส่งไปและกลับจาก พอร์ทัล

โดยค่าเริ่มต้น คุณจะเข้าถึงพอร์ทัลผ่าน HTTP โดยใช้ที่อยู่ IP หรือชื่อ DNS ของพอร์ทัล โหนดและพอร์ต 9000 เช่น

http://portal_IP:9000

อีกวิธีหนึ่งคือ คุณสามารถกำหนดค่าการเข้าถึง TLS สำหรับพอร์ทัลเพื่อให้คุณสามารถเข้าถึงได้ใน แบบฟอร์ม:

https://portal_IP:9443

ในตัวอย่างนี้ คุณได้กำหนดค่าการเข้าถึง TLS เพื่อใช้พอร์ต 9443 แต่ไม่จำเป็นต้องใช้พอร์ต 9443 - คุณสามารถกำหนดค่าพอร์ทัลให้ใช้พอร์ตอื่น

พอร์ทัลรองรับคำขอเพียงประเภทเดียว (HTTP หรือ HTTPS) ผ่านพอร์ตเดียว ดังนั้น หากกำหนดค่าการเข้าถึง HTTPS บนพอร์ต 9000 คุณจะใช้ HTTP เพื่อเข้าถึงพอร์ต 9000 ไม่ได้ หากคุณ กำหนดค่าพอร์ทัลให้ใช้พอร์ต 9443 กับ HTTPS จากนั้นพอร์ทัลจะไม่รับคำสั่งบนพอร์ตอีกต่อไป 9000

วิธีกำหนดค่า TLS สำหรับพอร์ทัล

  1. สร้างไฟล์คีย์และไฟล์ใบรับรองในรูปแบบ PEM
    หมายเหตุ: ตรวจสอบว่าไม่มีรหัสผ่าน/รหัสผ่านบนคีย์หรือใบรับรอง
  2. คัดลอกไฟล์ PEM ไปยังไดเรกทอรีบนโหนดพอร์ทัล เช่น /opt/apigee/customer/application "Apigee" ต้องเข้าถึงไดเรกทอรีได้ ผู้ใช้
  3. เปลี่ยนการเป็นเจ้าของไฟล์ PEM เป็น "apigee" ผู้ใช้:
    > chown Apigee:Apigee /opt/apigee/customer/application/*.PEM
  4. แก้ไข /opt/apigee/customer/application/portal.properties เพื่อตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้ หากไม่มีไฟล์นั้นอยู่ ให้สร้าง:
    baas.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # โดยค่าเริ่มต้น การเข้าถึง TLS จะใช้พอร์ต 9000
    # ใช้คุณสมบัตินี้เพื่อระบุพอร์ตอื่น
    # baas.portal.listen=9000


    ใช้ baas.portal.ssl.protocols เพื่อตั้งค่าโปรโตคอล TLS ที่พอร์ทัลรองรับ สำหรับรายการโปรโตคอลที่รองรับ โปรดดูที่ รายการชื่อโปรโตคอล SSL ที่กำหนดโดย Nginx: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols
  5. กำหนดค่าโหนดพอร์ทัล:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal กำหนดค่า
  6. รีสตาร์ทพอร์ทัล:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portalรีสตาร์ท
  7. ใช้ขั้นตอนด้านล่างใน "กำหนดค่าโหนดสแต็ก API BaaS สำหรับ TLS ในสแต็กหรือพอร์ทัล" เพื่อตรวจสอบว่าโหนดสแต็กมี TLS URL ที่ถูกต้องสำหรับพอร์ทัล

กำหนดค่าโหนด API BaaS สำหรับ TLS ใน สแต็กหรือพอร์ทัล

หากคุณมีตัวจัดสรรภาระงานที่ด้านหน้าของโหนดสแต็กหรือพอร์ทัล หรือหากเปิดใช้ TLS โดยตรงในโหนดพอร์ทัลหรือสแต็ก คุณจะต้องกำหนดค่าโหนดด้วย URL ที่ถูกต้องเพื่อ เข้าถึงสแต็กและพอร์ทัล ตัวอย่างเช่น โหนดของสแต็กต้องใช้ข้อมูลนี้ในกรณีต่อไปนี้

  • การรวม URL ไว้ในการตอบกลับในคำขอ BaaS API
  • เพิ่มลิงก์ในเทมเพลตอีเมลเมื่อรีเซ็ตรหัสผ่าน หรือส่งลิงก์อื่นๆ การแจ้งเตือน
  • กำลังเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าพอร์ทัลที่เฉพาะเจาะจง

หากคุณใช้ตัวจัดสรรภาระงานด้านหน้าโหนดสแต็กหรือกำหนดค่า TLS ในโหนดสแต็ก ให้ตั้งค่า พร็อพเพอร์ตี้ต่อไปนี้ใน /opt/apigee/customer/application/usergrid.properties

usergrid-deployment_usergrid.api.url.base=http://localhost:8080

แทนที่ http://localhost:8080 ด้วย URL ของการโหลด บาลานเซอร์ หากมีการกำหนดค่าตัวจัดสรรภาระงานให้ใช้ TLS ให้ใช้โปรโตคอล HTTPS คุณเท่านั้น คุณต้องรวมพอร์ตด้วยหากคุณใช้พอร์ตที่ไม่ใช่แบบมาตรฐาน ซึ่งหมายความอย่างอื่นที่ไม่ใช่พอร์ต 80 สำหรับ HTTP และพอร์ต 443 สำหรับ HTTPS

นอกจากนี้ คุณยังต้องตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้ใน /opt/apigee/customer/application/portal.properties อีกด้วยหาก คุณใช้ตัวจัดสรรภาระงานที่ด้านหน้าของโหนดสแต็ก

baas.portal.config.overrideUrl=http://localhost:8080

แทนที่ http://localhost:8080 ด้วย URL ของ ตัวจัดสรรภาระงานสำหรับสแต็ก

หากคุณใช้ตัวจัดสรรภาระงานด้านหน้าโหนดพอร์ทัลหรือกำหนดค่า TLS ในโหนดสแต็ก ให้ตั้งค่า พร็อพเพอร์ตี้ต่อไปนี้ใน usergrid.properties

usergrid-deployment_portal.url=http://localhost:9000

แทนที่ http://localhost:9000 ด้วย URL ของ ตัวจัดสรรภาระงาน หากมีการกำหนดค่าตัวจัดสรรภาระงานให้ใช้ TLS ให้ใช้โปรโตคอล HTTPS คุณ ต้องใส่พอร์ตเฉพาะในกรณีที่คุณใช้พอร์ตที่ไม่ใช่แบบมาตรฐานเท่านั้น พอร์ต 80 สำหรับ HTTP และพอร์ต 443 สำหรับ HTTPS

หลังจากแก้ไข usergrid.properties

  1. กำหนดค่าโหนดของสแต็ก:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid กำหนดค่า
  2. รีสตาร์ทสแต็ก BaaS ด้วยคำสั่ง
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid โปรดรีสตาร์ท
  3. หากคุณแก้ไข portal.properties ให้กำหนดค่า โหนดพอร์ทัล:
    /opt/apigee/apigee-service/bin/apigee-service baas-portal กำหนดค่า
  4. รีสตาร์ทพอร์ทัล BaaS โดยทำดังนี้
    > /opt/apigee/apigee-service/bin/apigee-service baas-portalรีสตาร์ท