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

Edge for Private Cloud v. 4.17.01

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

รูปภาพต่อไปนี้แสดงผังการทําให้ใช้งานได้ทั่วไปสําหรับ API BaaS ที่มีโหนด BaaS Portal 1 โหนดและโหนด API BaaS Stack 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 ของโหนด Stack และพอร์ต 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 ในองค์กร
    หมายเหตุ: ตรวจสอบว่ารหัสผ่านในคีย์สโตร์และรหัสผ่านสำหรับคีย์นั้นเหมือนกัน
  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-server_scheme=https
    tomcat-server_server_scheme=https







    /opt/apigee/customer/application/keystore.jks
    # ใช้พร็อพเพอร์ตี้นี้เพื่อระบุพอร์ตอื่น
    # 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 configure
  6. รีสตาร์ทสแต็ก BaaS
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. ยืนยันว่า TLS ทำงานอยู่โดยเรียกใช้คำสั่ง cURL ต่อไปนี้บนโหนดกลุ่มโดยใช้ HTTPS:
    > curl -k https://localhost:8080/status -v

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

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

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

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

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

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

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

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

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

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

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

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

    ระบุที่อยู่ IP หรือชื่อ DNS และพอร์ตของโหนด API Stack เป็นค่าของพร็อพเพอร์ตี้นี้สําหรับการติดตั้งโหนดเดียว หรือของโหลดบาลานซ์หากคุณมีโหลดบาลานซ์อยู่หน้าโหนด API BaaS Stack
  3. กำหนดค่าโหนดพอร์ทัล:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portalกำหนดค่า
  4. รีสตาร์ทพอร์ทัลโดยใช้คำสั่ง
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal start
  5. หากคุณใช้ใบรับรองที่ลงนามด้วยตนเองเมื่อกำหนดค่าการเข้าถึง 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
    bav.protocols.portal.sเข้าถึง TLS0 โดยค่าเริ่มต้น TLS1

    # ใช้พร็อพเพอร์ตี้นี้เพื่อระบุพอร์ตอื่น
    # 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 configure
  6. รีสตาร์ทพอร์ทัล
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  7. ทำตามขั้นตอนด้านล่างใน "กำหนดค่าโหนดสแต็ก API BaaS สำหรับ TLS ในสแต็กหรือพอร์ทัล" เพื่อให้มั่นใจว่าโหนดสแต็กมี URL ของ TLS ที่ถูกต้องสำหรับพอร์ทัล

กำหนดค่าโหนด 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-usergridRestart
  3. หากคุณแก้ไข portal.properties ให้กําหนดค่าโหนดพอร์ทัล
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. รีสตาร์ทพอร์ทัล BaaS ดังนี้
    > /opt/apigee/apigee-service/bin/apigee-service baas-portalRestart