โพสต์นี้อธิบายวิธีตั้งค่า SSL บน Oracle® WebLogic® Server 12c (12.1.2)
ภาพรวม (Overview)
ความปลอดภัยของข้อมูลและข้อมูลเป็นเรื่องที่กังวลหลักในโลกวันนี้ แอปพลิเคชันหลากหลายประเภทใช้โปรโตคอล Secure Socket Layer (SSL) สำหรับการสื่อสารที่ปลอดภัยผ่านเครือข่าย ในความเป็นจริง มันเป็นหนึ่งในโปรโตคอลการสื่อสารเครือข่ายที่ใช้กันอย่างแพร่หลายที่สุด
WebLogic Server ที่ตั้งค่าใช้ SSL ให้ทั้ง Identity Authentication (การยืนยันตัวตน) และ In-transit Data Encryption (การเข้ารหัสข้อมูลระหว่างทาง) สำหรับการเชื่อมต่อระหว่างสองโปรแกรมแอปพลิเคชัน ดังนั้น แอปพลิเคชันใดๆ สองตัวที่โต้ตอบกันผ่าน SSL จะได้รับประโยชน์ด้านความปลอดภัยของการเชื่อมต่อดังนี้:
- พวกเขายืนยันตัวตนของกันและกันโดยใช้ SSL Certificates แยกต่างหาก
- พวกเขาแลกเปลี่ยนข้อมูลที่เข้ารหัส (In-transit) ระหว่างโปรแกรมแอปพลิเคชันทั้งสอง
กลไกคำขอและตอบสนองการเชื่อมต่อ SSL เพิ่ม Overhead การคำนวณในการประมวลผลข้อมูลและข้อมูลเพิ่มเติมเกี่ยวกับการยืนยันตัวตน และต้องการการประมวลผลอัลกอริทึมเข้ารหัสที่ซับซ้อน ดังนั้น คนส่วนใหญ่จึงไม่ค่อยใช้มันใน WebLogic Server Instances ที่รันใน Development Mode ภายในโครงสร้างพื้นฐานเครือข่ายที่ปลอดภัยมาก อย่างไรก็ตาม การตั้งค่า SSL เป็นสิ่งที่พึงประสงค์มากสำหรับ WebLogic Server Instances ที่รันใน Production Mode
สาธิตการตั้งค่า (Configuration Demonstration)
โพสต์นี้ครอบคลุมขั้นตอนในการตั้งค่า SSL บน WebLogic Server ที่ติดตั้งไว้แล้ว บนอินสแตนซ์ MYPROD_AdminServer และ Managed Server ในโดเมน MYPROD_DOMAIN Node Manager
เพื่อทำเช่นนี้ ให้สร้าง Identity Keystore ใหม่และ Trusted Keystore ใหม่เพื่อจัดเก็บ Certificate ที่ลงนามใหม่ ดังนั้น WebLogic Admin, ทุก Managed Server Instances และ Node Manager จะสื่อสารโดยใช้โปรโตคอล SSL ตาม Custom Keystores
ใช้ขั้นตอนต่อไปนี้เพื่อตั้งค่า SSL บน WebLogic Server Instances ที่มีอยู่:
ขั้นตอนที่ 1: สร้าง Identity Keystore
ดำเนินขั้นตอนต่อไปนี้เพื่อสร้าง Identity Keystore MYPRODIdentity.jks บนเซิร์ฟเวอร์ myprodserver.mydomain.local:
(ก) ล็อกอินเข้าสู่ WebLogic Server Linux® Server Shell เป็น User เจ้าของแอปพลิเคชัน WebLogic (เช่น Oracle) และรันโค้ดต่อไปนี้เพื่อสร้างโฟลเดอร์ใหม่ <middleware_home>/user_projects/domains/<domain_home>/keystores:
[oracle@myprodserver]$ mkdir -p /u01/Middleware/user_projects/domains/MYPROD_DOMAIN/keystores
(ข) ตั้งค่าสภาพแวดล้อม MYPROD_DOMAIN และสร้าง Keystore ใหม่:
[oracle@myprodserver]$ cd /u01/Middleware/user_projects/domains/MYPROD_DOMAIN/bin
[oracle@myprodserver]$ . ./setDomainEnv.sh
[oracle@myprodserver]$ cd keystores
[oracle@myprodserver]$ keytool -genkeypair -alias mywlsprodcert -keyalg RSA -keysize 1024 -dname "CN=*.mydomain.local,OU=<Organization>,O=<Company>,L=<City>,S=<State>,C=<US>" -keystore MYPRODIdentity.jks
Enter keystore password: <Type a new keyStorePass>
Re-enter new password: <Re-type the keyStorePass>
Enter key password for <mywlsprodcert> (RETURN if same as keystore password): <ENTER>
ขั้นตอนที่ 2: สร้าง CSR ใหม่ (Generate a new CSR)
ดำเนินขั้นตอนต่อไปนี้เพื่อสร้าง Certificate Signing Request (CSR) ใหม่โดยใช้ MYPRODIdentity.jks:
(ก) รันโค้ดต่อไปนี้เพื่อใช้ยูทิลิตี้ keytool สร้าง CSR:
[oracle@myprodserver]$ keytool -certreq -v -alias prodcert -file MYWLSPRODCert.csr -keystore MYPRODIdentity.jks
Enter keystore password: <KeyStorePass>
Certification request stored in file <MYWLSPRODCert.csr>
(ข) ส่ง Certificate Signing Request (CSR) ที่สร้างใหม่ไปยัง Certificate Authority (CA) หลังจากลงนาม CSR แล้ว CA จะให้ Digital Certificate และ Private Key ของมัน
หมายเหตุ: สำหรับการสาธิตนี้ เราใช้ WebLogic Demo CA (CertGenCA.der) เพื่อลงนาม Certificate ฟีเจอร์ Self-signing สาธิตนี้มีให้กับ WebLogic Server ใน Production คุณควรรับ Server Certificates ที่ลงนามโดย CA ที่น่าเชื่อถือและได้รับการกำหนดขององค์กรของคุณ
ขั้นตอนที่ 3: Self-sign CSR
ดำเนินขั้นตอนต่อไปนี้เพื่อ Self-sign CSR โดยใช้ WebLogic Demo CA (CertGenCA.der) และนำเข้าไปใน Identity Keystore ที่สร้างใหม่:
(ก) รันโค้ดต่อไปนี้เพื่อ Self-sign Certificate:
[oracle@myprodserver]$ java utils.CertGen -keyfile MYPRODCertPrivateKey -keyfilepass password -certfile mywlsprodcert -cn "*.my.local"
Generating a certificate with wildcard *.domain.local and key strength 1024
/u01/Middlewaree/wlserver_12.1/server/lib/CertGenCA.der file and key from /u01/Middlewaree/wlserver_12.1/server/lib/CertGenCAKey.der file
[oracle@myprodserver]$
(ข) นำ Server Certificate และ Private Keys ที่สร้างใหม่เข้า Keystore ที่สร้างไว้ก่อนหน้านี้:
[oracle@myprodserver]$ java utils.ImportPrivateKey -keystore MYPRODIdentity.jks -keyfile MYPRODCertPrivateKey.pem -keyfilepass <password> -certfile MYPRODCert.pem -storepass <keyStorePass> -alias mywlsprodcert
ขั้นตอนที่ 4: สร้าง Trust Keystore
ดำเนินขั้นตอนต่อไปนี้เพื่อสร้าง Custom Trust Keystore บนเครื่อง myprodserver.mydomain.local:
(ก) สร้าง MYPRODTrust.jks Keystore โดยคัดลอกจาก Standard Java Trust:
[oracle@myprodserver]$ cp /u01/java/jre/lib/security/cacerts /u01/Middleware/user_projects/domains/MYPROD_DOMAIN/keystores/MYPRODTrust.jks
(ข) เปลี่ยนรหัสผ่าน cacerts เริ่มต้น รหัสผ่านเริ่มต้นคือ changeit อัปเดตเป็นรหัสผ่านใหม่ที่คุณเลือก:
[oracle@myprodserver]$ keytool -storepasswd -keystore MYPRODTrust.jks
Enter keystore password: <defaultKeyStorePass>
New keystore password: <NewKeyStorePass>
Re-enter new keystore password: <Re-type NewKeyStorePass>
(ค) นำ Certificate ที่ Self-sign ใหม่เข้า Trust Keystore ที่สร้างใหม่:
[oracle@myprodserver]$ keytool -import -v -trustcacerts -alias rootCA -file /u01/Middleware/wlserver_12.1/server/lib/CertGenCA.der -keystore MYPRODTrust.jks
ขั้นตอนที่ 5: คัดลอก SSL Certificate ไปยังเซิร์ฟเวอร์อื่นทั้งหมดในโดเมน
เนื่องจากคุณสร้าง SSL Certificate บนพื้นฐาน Wildcard แทนชื่อเซิร์ฟเวอร์เฉพาะ เซิร์ฟเวอร์ทั้งหมดใน MYPROD_DOMAIN จึงสามารถใช้ Certificate เดียวกันได้
ดังนั้น ให้คัดลอกไดเรกทอรี Keystores ที่สร้างไว้ก่อนหน้านี้ /u01/Middleware/user_projects/domains/MYPROD_DOMAIN/keystores ซึ่งมี Certificate ที่จำเป็นสำหรับ WebLogic Servers ทั้งหมดที่แชร์โดย MYPROD_DOMAIN
ขั้นตอนที่ 6: ตั้งค่า WebLogic Node Manager
ดำเนินขั้นตอนต่อไปนี้เพื่อตั้งค่า WebLogic Node Manager ให้ใช้ SSL Certificate ที่สร้างใหม่:
(ก) อัปเดตตัวแปรต่อไปนี้ในไฟล์ $WL_HOME/common/nodemanager/nodemanager.properties:
KeyStores=CustomIdentityAndCustomTrust
CustomIdentityKeyStoreFileName=/u01/Middleware/user_projects/domains/MYPROD_DOMAIN/keystores/MYPRODIdentity.jks
CustomIdentityKeyStorePassPhrase=<NewKeyStorePass>
CustomIdentityAlias=mywlsprodcert
CustomIdentityPrivateKeyPassPhrase=<PrivateKeyPassword>
(ข) Shutdown และ Start Node Manager
ขั้นตอนที่ 7: ตั้งค่า WebLogic Admin Server
ดำเนินขั้นตอนต่อไปนี้เพื่อตั้งค่า WebLogic Admin Server ให้ใช้ Custom Keystore และ Certificate ใหม่สำหรับการเชื่อมต่อ SSL:
(ก) ล็อกอินเข้าสู่ WebLogic Server Console โดยใช้ Credentials ผู้ดูแลระบบ WebLogic
(ข) บนหน้า Home ภายใต้ Domain Configurations –> Environments คลิก Servers ตามภาพหน้าจอต่อไปนี้:
(ค) บนหน้า Summary of Servers คลิก AdminServer (admin):
(ง) จาก Change Center –> View changes and restarts ด้านซ้ายบน คลิก Lock & Edit เพื่ออัปเดตการตั้งค่า Keystore Rule
(จ) ใน Settings for AdminServer ภายใต้ Configuration คลิกแท็บ Keystores แล้วคลิก Change ตามภาพต่อไปนี้ เพื่อเปลี่ยนกฎ WebLogic Admin Server ให้ใช้ Custom Keystore ใหม่สำหรับการเชื่อมต่อ SSL
(ฉ) อัปเดต Keystore Rule โดยเลือก Custom Identity and Custom Trust จากรายการดรอปดาวน์ Keystores และบันทึกการอัปเดต
(ช) อัปเดต ./keystores/MYPRODIdentity.jks ในกล่องข้อความ Custom Identity Keystore อัปเดต KeyStore Password และบันทึก
(ซ) อัปเดต ./keystores/MYPRODTrust.jks ในกล่องข้อความ Custom Trust Keystore อัปเดต Trust KeyStore Password และบันทึก
(ฌ) เปิดแท็บ SSL ภายใต้แท็บพาเรนต์ Configuration และอัปเดตพารามิเตอร์ต่อไปนี้:
(i) อัปเดตค่าพารามิเตอร์ Private Key Alias เป็น mywlsprodcert
(ii) อัปเดต Private Key Passphrase ด้วยรหัสผ่าน Private Key
(iii) ภายใต้เมนู Advanced อัปเดตค่า Hostname Verification เป็น Custom Hostname Verifier จากรายการดรอปดาวน์ ตามภาพต่อไปนี้:
(iv) อัปเดตค่า Custom Hostname Verifier เป็น weblogic.security.utils.SSLWLSWildcardHostnameVerifier นี่จำเป็นเพราะเราใช้ Wildcard Certificate เดียวสำหรับทุกเซิร์ฟเวอร์ (CN=*.mydomain.local)
(v) บันทึกการอัปเดตเหล่านี้
(ญ) ไปที่แท็บ Configuration –> General และเปิดใช้งานตัวเลือก SSL Listen Port Enabled โดยติ๊ก Checkbox ตามภาพต่อไปนี้:
(ฎ) พอร์ต SSL เริ่มต้นของ WebLogic Admin Server คือ 7002 แต่คุณสามารถตั้งค่าบริการ SSL บนพอร์ตอื่นได้เช่นกัน คุณต้องใช้ค่าเริ่มต้น 7002 ที่นี่เพื่อการสาธิต ดังนั้นอัปเดต SSL Listen Port เป็น 7002 และบันทึกการอัปเดต ตามภาพต่อไปนี้:
ขั้นตอนที่ 8: ตั้งค่า WebLogic Managed Servers
เพื่อตั้งค่า WebLogic Managed Servers ทั้งหมดให้ใช้ Custom Key Store และ Certificate ใหม่สำหรับการเชื่อมต่อ SSL ให้ทำซ้ำขั้นตอน 7ก - 7ฎ คุณต้องใช้ค่า SSL Port ที่ต่างกันสำหรับแต่ละ WebLogic Managed Server ตัวอย่างเช่น ใช้ ManagedServer01: SSL port - 9001, ManagedServer02: SSL port - 9002, ManagedServer03: SSL port - 9003 และอื่นๆ
ขั้นตอนที่ 9: ใช้การอัปเดตกับไฟล์การตั้งค่า
คลิก Release Configuration จากเมนูด้านซ้ายบน เพื่อนำการอัปเดตทั้งหมดไปใช้กับไฟล์การตั้งค่า WebLogic
ขั้นตอนที่ 10: รีสตาร์ท WebLogic
รีสตาร์ท WebLogic Admin และ Managed Servers ทั้งหมดพร้อมกับ Node Manager
สรุป
โพสต์นี้ให้ขั้นตอนในการตั้งค่า WebLogic Server ให้ใช้โปรโตคอลความปลอดภัย SSL เพื่อให้เว็บไซต์ส่งข้อมูลที่ละเอียดอ่อนได้อย่างปลอดภัยในรูปแบบเข้ารหัส ด้วยการใช้ SSL Certificates และกลไกเข้ารหัสของ RSA Data Security ผู้ใช้สามารถแลกเปลี่ยนและประมวลผลข้อมูลและข้อมูลได้อย่างปลอดภัย
เนื่องจากคุณเปิดใช้งาน SSL บน Admin Server และ Managed Server ด้วยเอกสารนี้ ทั้งข้อมูลและ WebLogic Server จึงปลอดภัยจากการโจมตีทางไซเบอร์และการรั่วไหลของข้อมูล
ใช้แท็บ Feedback เพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถคลิก Sales Chat เพื่อแชททันทีและเริ่มการสนทนา