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

โดยค่าเริ่มต้น ระบบจะปิดใช้ TLS สําหรับ Management API และคุณจะเข้าถึง Management API ของ Edge ผ่าน HTTP โดยใช้ที่อยู่ IP ของโหนดเซิร์ฟเวอร์การจัดการและพอร์ต 8080 เช่น

http://ms_IP:8080

อีกทางเลือกหนึ่งคือกำหนดค่าการเข้าถึง TLS ของ API การจัดการเพื่อให้เข้าถึงได้ในแบบฟอร์ม:

https://ms_IP:8443

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

โปรดกําหนดค่าการตั้งค่าในไฟล์ /opt/apigee/customer/application/management-server.properties เพื่อเข้ารหัสการรับส่งข้อมูลไปยังและจาก API การจัดการ

นอกจากการกำหนดค่า TLS แล้ว คุณยังควบคุมการตรวจสอบรหัสผ่าน (ความยาวและความซับซ้อนของรหัสผ่าน) ได้ด้วยโดยการแก้ไขไฟล์ management-server.properties

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

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

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

กำหนดค่า TLS

แก้ไขไฟล์ /opt/apigee/customer/application/management-server.properties เพื่อควบคุมการใช้ TLS ในการรับส่งข้อมูลไปยังและจาก Management API หากไม่มีไฟล์นี้ ให้สร้างไฟล์

วิธีกำหนดค่าการเข้าถึง TLS ของ Management API

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

    โดยที่ keystore.jks คือชื่อไฟล์คีย์สโตร์

  4. แก้ไข /opt/apigee/customer/application/management-server.properties เพื่อตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้ หากไม่มีไฟล์นั้นอยู่ ให้สร้าง:
    conf_webserver_ssl.enabled=true
    # Leave conf_webserver_http.turn.off set to false
    # because many Edge internal calls use HTTP.
    conf_webserver_http.turn.off=false
    conf_webserver_ssl.port=8443
    conf_webserver_keystore.path=/opt/apigee/customer/application/keystore.jks
    # Enter the obfuscated keystore password below.
    conf_webserver_keystore.password=OBF:obfuscatedPassword

    โดยที่ keyStore.jks คือไฟล์คีย์สโตร์ และ obfuscatedPassword คือรหัสผ่านคีย์สโตร์ที่สร้างความสับสน ดูข้อมูลเกี่ยวกับการสร้างรหัสผ่านที่มีการสร้างความสับสนได้ที่การกำหนดค่า TLS/SSL สำหรับ Edge ในองค์กร

  5. รีสตาร์ท Edge Management Server โดยใช้คำสั่ง
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart

ตอนนี้ Management API รองรับการเข้าถึงผ่าน TLS แล้ว

กำหนดค่า UI ของ Edge ให้ใช้ TLS เพื่อเข้าถึง Edge API

ในขั้นตอนข้างต้น Apigee แนะนำให้ปล่อย conf_webserver_http.turn.off=false ไว้เพื่อให้ UI ของ Edge เรียกใช้ Edge API ผ่าน HTTP ได้ต่อไป

ใช้ขั้นตอนต่อไปนี้เพื่อกำหนดค่า UI ของ Edge ให้ทำการเรียกใช้ผ่าน HTTPS เท่านั้น

  1. กำหนดค่าการเข้าถึง TLS ไปยัง API การจัดการตามที่อธิบายไว้ข้างต้น
  2. หลังจากยืนยันว่า TLS ทํางานสําหรับ Management API แล้ว ให้แก้ไข /opt/apigee/customer/application/management-server.properties เพื่อตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้
    conf_webserver_http.turn.off=true
  3. รีสตาร์ทเซิร์ฟเวอร์การจัดการ Edge โดยเรียกใช้คำสั่งต่อไปนี้
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart 
  4. แก้ไข /opt/apigee/customer/application/ui.properties เพื่อตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้สำหรับ Edge UI
    conf_apigee_apigee.mgmt.baseurl="https://FQ_domain_name:port/v1"

    โดยที่ FQ_domain_name คือชื่อโดเมนแบบเต็มตามที่อยู่ใบรับรองของเซิร์ฟเวอร์การจัดการ และ port คือพอร์ตที่ระบุไว้ข้างต้นโดย conf_webserver_ssl.port

    หากไม่มี ui.properties ให้สร้างไฟล์นี้

  5. เฉพาะในกรณีที่คุณใช้ใบรับรองที่ลงนามด้วยตนเอง (ไม่แนะนำในสภาพแวดล้อมเวอร์ชันที่ใช้งานจริง) เมื่อกำหนดค่าการเข้าถึง TLS ของ API การจัดการข้างต้น ให้เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ใน ui.properties
    conf/application.conf+play.ws.ssl.loose.acceptAnyCertificate=true

    มิฉะนั้น Edge UI จะปฏิเสธใบรับรองที่ลงชื่อด้วยตนเอง

  6. รีสตาร์ท UI ของ Edge โดยเรียกใช้คำสั่งต่อไปนี้
    /opt/apigee/apigee-service/bin/apigee-service edge-ui restart

การใช้คีย์สโตร์ PKCS12 สําหรับระบบปฏิบัติการที่เปิดใช้ FIPS

หากใช้ Edge for Private Cloud ในระบบปฏิบัติการที่เปิดใช้ FIPS คุณต้องใช้คีย์สโตร์ PKCS12 เพื่อให้เป็นไปตามมาตรฐาน FIPS นอกเหนือจากการกำหนดค่ามาตรฐานอื่นๆ ที่กล่าวถึงในบทความนี้ ให้เพิ่มการกำหนดค่าต่อไปนี้ลงในไฟล์ management-server.properties

conf/webserver.properties+keystore.type=PKCS12

อย่าลืมใช้การเปลี่ยนแปลงนี้หากสภาพแวดล้อมของคุณเปิดใช้ FIPS เพื่อให้เข้ากันได้กับมาตรฐานการเข้ารหัสที่กำหนด

พร็อพเพอร์ตี้ TLS สำหรับเซิร์ฟเวอร์การจัดการ

ตารางต่อไปนี้แสดงรายการพร็อพเพอร์ตี้ TLS/SSL ทั้งหมดที่คุณตั้งค่าได้ใน management-server.properties

พร็อพเพอร์ตี้ คำอธิบาย

conf_webserver_http.port=8080

ค่าเริ่มต้นคือ 8080

conf_webserver_ssl.enabled=false

เพื่อเปิด/ปิดใช้ TLS/SSL เมื่อเปิดใช้ TLS/SSL (จริง) คุณต้องตั้งค่าพร็อพเพอร์ตี้ ssl.port และ keystore.path ด้วย

conf_webserver_http.turn.off=true

หากต้องการเปิด/ปิดใช้ http พร้อมกับ https หากต้องการใช้เฉพาะ HTTPS ให้ปล่อยค่าเริ่มต้นเป็น true

conf_webserver_ssl.port=8443

พอร์ต TLS/SSL

ต้องระบุเมื่อเปิดใช้ TLS/SSL (conf_webserver_ssl.enabled=true)

conf_webserver_keystore.path=path

เส้นทางไปยังไฟล์คีย์สโตร์

ต้องระบุเมื่อเปิดใช้ TLS/SSL (conf_webserver_ssl.enabled=true)

conf_webserver_keystore.password=password

ใช้รหัสผ่านที่มีการสร้างความสับสนในรูปแบบ OBF:xxxxxxxxxx

conf_webserver_cert.alias=alias

ชื่อแทนใบรับรองคีย์สโตร์ (ไม่บังคับ)

conf_webserver_keymanager.password=password

หากเครื่องมือจัดการคีย์มีรหัสผ่าน ให้ป้อนรหัสผ่านเวอร์ชันที่มีการสร้างความสับสนในรูปแบบต่อไปนี้

OBF:xxxxxxxxxx

conf_webserver_trust.all=[false | true]

conf_webserver_trust.store.path=path

conf_webserver_trust.store.password=password

กำหนดการตั้งค่าสำหรับที่เก็บข้อมูลเชื่อถือ ระบุว่าคุณต้องการยอมรับใบรับรอง TLS/SSL ทั้งหมดหรือไม่ (เช่น เพื่อยอมรับประเภทที่ไม่ใช่มาตรฐาน) โดยมีค่าเริ่มต้นเป็น false ระบุเส้นทางไปยังร้านค้าที่เชื่อถือได้ แล้วป้อนรหัสผ่านของ Trust Store ที่ปรับให้ยากต่อการอ่าน (Obfuscate) ในรูปแบบนี้

OBF:xxxxxxxxxx

conf_http_HTTPTransport.ssl.cipher.suites.blacklist=CIPHER_SUITE_1, CIPHER_SUITE_2

conf_http_HTTPTransport.ssl.cipher.suites.whitelist=

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

การเข้ารหัสที่คุณนำออกผ่านรายการที่บล็อกจะมีความสําคัญเหนือกว่าการเข้ารหัสที่รวมไว้ผ่านรายการที่อนุญาต

หมายเหตุ: โดยค่าเริ่มต้น ถ้าไม่มีการระบุรายการที่ไม่อนุญาตหรือรายการที่อนุญาตพิเศษ ระบบจะยกเว้นการเข้ารหัสที่ตรงกับนิพจน์ทั่วไปของ Java ต่อไปนี้โดยค่าเริ่มต้น

^.*_(MD5|SHA|SHA1)$
^TLS_RSA_.*$
^SSL_.*$
^.*_NULL_.*$
^.*_anon_.*$

แต่หากคุณระบุรายการที่ไม่อนุญาต ระบบจะลบล้างตัวกรองนี้และคุณต้องขึ้นบัญชีดำการเข้ารหัสทั้งหมดทีละรายการ

ดูข้อมูลเกี่ยวกับชุดการเข้ารหัสและสถาปัตยกรรมการเข้ารหัสได้ที่ เอกสารประกอบของ Oracle Provider สำหรับ Java Cryptography Architecture สำหรับ JDK 8

conf_webserver_ssl.session.cache.size=

conf_webserver_ssl.session.timeout=

จำนวนเต็มที่กำหนดสิ่งต่อไปนี้

  • ขนาดแคชเซสชัน TLS/SSL (เป็นไบต์) สำหรับจัดเก็บข้อมูลเซสชันสำหรับไคลเอ็นต์หลายราย
  • ระยะเวลาที่เซสชัน TLS/SSL ทำงานได้ก่อนที่จะหมดเวลา (เป็นมิลลิวินาที)