คู่มือ SSL Connection to PostgreSQL สำหรับ Database
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
คำสั่ง ชื่อเมนู Parameter และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง
การสร้างการเชื่อมต่อ SSL ไปยัง Server PostgreSQL DB
เมื่อมุ่งมั่นที่จะเก็บข้อมูลใน Database PostgreSQL ของคุณให้ปลอดภัยสิ่งแรกที่คุณต้องทำคือเข้ารหัสการเชื่อมต่อทั้งหมดเพื่อปกป้องข้อมูลประจำตัวในการตรวจสอบสิทธิ์ (ชื่อผู้ใช้ / รหัสผ่าน) และข้อมูลที่จัดเก็บจากการสกัดกั้นคู่มือนี้มีจุดมุ่งหมายเพื่อช่วยคุณในการสร้างการเชื่อมต่อ SSL ที่ปลอดภัยกับ Container PostgreSQL ของคุณซึ่ง Host อยู่ที่ Platform
เราจะสำรวจสิ่งที่เหมาะสมด้านล่างนี้การปรับ ServerDatabaseจำเป็นสำหรับการเปิดใช้งาน SSL และการสร้างใบรับรองสำหรับมันจากนั้นเราจะสร้างและเพิ่มใบรับรองให้ลูกค้าเครื่องจักรและสุดท้ายจะสร้างความปลอดภัยการเชื่อมต่อไปยัง Server ของเราผ่านเครื่องมือ pgAdmin เอาล่ะไปกันต่อ!
การกำหนดค่า Server PostgreSQL
แน่นอนว่าสำหรับบทช่วยสอนนี้เราจะใช้ Environment ที่มี Database PostgreSQL อยู่ข้างในซึ่งคุณทำได้อย่างง่ายดายสร้างเช่นถ้าคุณยังไม่ได้ทำสิ่งนี้
1. เริ่มต้นด้วยการเชื่อมต่อกับ ServerDatabase ของคุณผ่านทางประตูเอสเอสเอช.
2. ตอนนี้เพื่อให้ทำงานกับ SSL ได้คุณต้องเพิ่มไฟล์สามไฟล์ต่อไปนี้ลงใน/var/lib/pgsql/dataDirectory Server:
- Server.คีย์- รหัสส่วนตัว
- server.crt- ใบรับรอง Server
- root.crt- ใบรับรองรูทที่เชื่อถือได้
ภายในบทช่วยสอนนี้เราจะพิจารณาสั้นๆว่าคุณสามารถสร้างสิ่งเหล่านี้ได้ด้วยตัวเองได้อย่างไร
เคล็ดลับ:
- เราจะไม่อธิบาย Parameter คำสั่งโดยละเอียดที่นี่แต่หากคุณต้องการทราบข้อมูลเพิ่มเติมเพียงอ้างถึงSSL แบบกำหนดเองที่ลงนามด้วยตนเองหน้าในเอกสารของเราหรือตรวจสอบอย่างเป็นทางการOpenSSLเพื่อดูรายการการดำเนินการทั้งหมดที่มีอยู่
- คุณยังสามารถใช้SSL แบบกำหนดเองใบรับรองคล้ายกับที่อธิบายไว้ด้านล่าง (ปฏิบัติตามสร้างใบรับรอง SSL แบบกำหนดเองส่วนของคำแนะนำที่เชื่อมโยงเพื่อรับสิ่งนี้) ในกรณีหลังนี้คุณสามารถข้ามคำสั่งการสร้างและข้ามไปที่ไฟล์ได้โดยตรงขั้นตอนที่ 6ของคำสั่งนี้
ดังนั้นนำทางไปยังโฟลเดอร์ที่กล่าวถึงและดำเนินการตามขั้นตอนด้านล่าง
- ก่อนอื่นมาสร้างไฟล์แรกกันก่อน - รหัสส่วนตัว:
- ดำเนินการคำสั่งถัดไป:
ทุบตี
cd /var/lib/pgsql/data
openssl genrsa -des3 -out server.key 1024
ในระหว่างServer.คีย์รุ่นคุณจะถูกถามถึงผ่านวลี- ระบุใดๆและยืนยันเพื่อสร้างให้เสร็จสิ้น
- ตอนนี้เพื่อที่จะทำงานกับคีย์นี้ต่อไปจำเป็นต้องลบวลีรหัสผ่านที่คุณเพิ่มไว้ก่อนหน้านี้ดำเนินการคำสั่งต่อไปนี้สำหรับสิ่งนี้:
ทุบตี
openssl rsa -in server.key -out server.key
ป้อนวลีรหัสผ่านอีกครั้งเพื่อยืนยัน
- ตั้งค่าการอนุญาตและสิทธิ์การเป็นเจ้าของที่เหมาะสมสำหรับไฟล์คีย์ส่วนตัวของคุณด้วยคำสั่งถัดไป:
ทุบตี
chmod 400 server.key
chown postgres.postgres server.key
4. ตอนนี้คุณต้องสร้างใบรับรอง Serverขึ้นอยู่กับของคุณServer.คีย์ไฟล์เช่น:
ทุบตี
openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj '/C=US/ST=California/L=PaloAlto/O=Jelastic/CN=mysite.com/[email protected]'
บันทึก:จำเป็นต้องตั้งค่าข้อมูลส่วนบุคคลของคุณสำหรับวิชาParameter หากใบรับรองมีวัตถุประสงค์เพื่อใช้ในการผลิต:
| หน่วย | ความหมาย | ตัวอย่าง |
|---|---|---|
| /ค= | ประเทศ | กิกะไบต์ |
| /ST= | สถานะ | ลอนดอน |
| /ล= | ที่ตั้ง | ลอนดอน |
| /O= | องค์กร | ความปลอดภัยระดับโลก |
| /OU= (ไม่จำเป็น) | หน่วยองค์กร | แผนกไอที |
| /CN= | ชื่อสามัญ | ตัวอย่าง.com |
| /ที่อยู่อีเมล= | อีเมล | [email protected] |
คุณยังสามารถข้ามได้-เรื่องParameter ภายในคำสั่งและส่งผ่านข้อโต้แย้งเหล่านี้ทั้งหมดในโหมดโต้ตอบภายในคำถามที่เปิดโดยอัตโนมัติ
- เนื่องจากเราจะเซ็นใบรับรองด้วยตัวเองจึงสร้างใบรับรอง Serverสามารถใช้เป็นที่เชื่อถือได้ใบรับรองหลักเช่นกันดังนั้นเพียงทำสำเนาด้วยชื่อที่เหมาะสม:
ทุบตี
cp server.crt root.crt
ขณะนี้เมื่อคุณมีไฟล์ใบรับรองทั้งสามไฟล์แล้วคุณก็สามารถดำเนินการกำหนดค่า Database PostgreSQL ได้ซึ่งจำเป็นสำหรับการเปิดใช้งานและการใช้งาน SSL
- เปิดpg_hba.confไฟล์ที่อยู่ในโฟลเดอร์เดียวกันสำหรับการแก้ไขด้วยโปรแกรมแก้ไขเทอร์มินัลที่ต้องการ (เป็นกลุ่มเช่น) หรือโดยตรงผ่าน Dashboard
แทนที่เนื้อหาเริ่มต้นด้วยบรรทัดต่อไปนี้:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv4 remote connections for authenticated users
hostssl all webadmin 0.0.0.0/0 md5 clientcert=verify-full
หมายเหตุ:
- หากคุณต้องการทำงานกับ Database ในฐานะผู้ใช้อื่นที่ไม่ใช่ค่าเริ่มต้นเวแบดมินให้เปลี่ยนค่าที่เหมาะสมภายในบรรทัดสุดท้ายของการกำหนดค่าเป็นชื่อที่ต้องการในกรณีนี้คุณจะต้องใช้ชื่อผู้ใช้เดียวกันสำหรับคำสั่งเพิ่มเติมทั้งหมด (เราจะระบุในส่วนที่จำเป็น)
- นอกจากนี้สำหรับ PostgreSQL เวอร์ชันเก่า (10และต่ำกว่า) คุณต้องเปลี่ยนใบรับรองลูกค้าคุณค่าเป็นหนึ่ง”ใบรับรองลูกค้า md5=1” ในบรรทัดสุดท้ายของการกำหนดค่า:
hostssl all webadmin 0.0.0.0/0 md5 clientcert=1
บันทึกไฟล์ที่อัพเดต
- เพื่อเสร็จสิ้นการกำหนดค่าคุณต้องทำการเปลี่ยนแปลงเพิ่มเติมกับpostgresql.confไฟล์.
นำทางไปยังมันความปลอดภัยและการรับรองความถูกต้องส่วน (ประมาณที่80เส้น) และเปิดใช้งานเอสเอสแอลการใช้งานเองโดยยกเลิกการใส่เครื่องหมายการตั้งค่าชื่อเดียวกันและเปลี่ยนค่าเป็น “บน” นอกจากนี้ให้เพิ่มสิ่งใหม่ssl_ca_fileParameter ด้านล่าง:
ssl = on
ssl_ca_file = 'root.crt'
อย่าลืมบันทึกการเปลี่ยนแปลงเหล่านี้
- สุดท้ายให้ Restart Container PostgreSQL เพื่อใช้การตั้งค่าใหม่:
ทุบตี
sudo service postgresql restart
ใบรับรองลูกค้า
ตอนนี้เรามาสร้างไฟล์ใบรับรอง SSL อีกหนึ่งชุดสำหรับ Instance Client เพื่อรองรับการเชื่อมต่อที่ปลอดภัยทั้งสองด้าน
- กลับไปที่หน้าต่างเทอร์มินัลด้วยการเชื่อมต่อ SSH ไปยัง Server PostgreSQL ที่คุณเคยใช้งานการตั้งค่า Server(หรือเชื่อมต่อใหม่) - คุณจะต้องมีใบรับรอง Server เพื่อดำเนินการต่อไป
เมื่อเข้าไปข้างในแล้วให้สร้างรหัสส่วนตัวสำหรับลูกค้า (และไม่มีผ่านวลีเช่นเดียวกับที่ทำในส่วนก่อนหน้า) เช่นภายในทีเอ็มพีDirectory:
ทุบตี
openssl genrsa -des3 -out /tmp/postgresql.key 1024
openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key
2. ถัดไปสร้างใบรับรอง SSL สำหรับผู้ใช้ Database PostgreSQL ของคุณ (เวแบดมินโดยค่าเริ่มต้น) และลงนามกับผู้ที่เชื่อถือได้ของเราroot.crtไฟล์บน Server
ทุบตี
openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr -subj '/C=US/ST=California/L=PaloAlto/O=Jelastic/CN=webadmin'
openssl x509 -req -in /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial
หมายเหตุ:
- ในขณะที่ข้อมูลทั่วไปสำหรับวิชาParameter สามารถเปลี่ยนเป็นข้อมูลส่วนบุคคลของคุณได้ที่นี่ชื่อสามัญ (/CN=)จะต้องเท่ากับชื่อผู้ใช้ Database ที่คุณตั้งไว้ระหว่างการสร้างใบรับรองครั้งแรกในไฟล์กำหนดค่า Server (เวแบดมินในกรณีของเรา)
- root.crtและServer.คีย์ไฟล์ควรอยู่ในโฟลเดอร์เดียวกันกับที่เรียกใช้คำสั่งที่ 2 มิฉะนั้นควรระบุเส้นทางแบบเต็มไปยังพวกเขา
3. หลังจากไฟล์ -postgresql.key,postgresql.crt,root.crt- พร้อมแล้วคุณต้องย้ายพวกมันไปที่.postgresqlโฟลเดอร์ที่เครื่อง Client ของคุณ (คุณสามารถใช้โปรแกรมเสริม FTPหรือเพียงคัดลอกและวางเนื้อหาไฟล์)
เคล็ดลับ:หากยังไม่มี Directory ดังกล่าวให้สร้างด้วยmkdir ~/.postgresqlหรือคำสั่งที่คล้ายกันตามการกระจายระบบปฏิบัติการของคุณ
นอกจากนี้หากจำเป็นคุณสามารถตั้งค่าสิทธิ์ในการอ่านคีย์สำหรับเจ้าของได้โดยใช้เท่านั้นchmod 0400 ~/.postgresql/postgresql.keyคำสั่งให้มีความปลอดภัยมากขึ้น
เคล็ดลับ:อย่าลืมเอากุญแจออกจากทีเอ็มพีDirectory บน Server DB ของคุณในภายหลัง
สร้างการเชื่อมต่อผ่าน PgAdmin
ในที่สุดหลังจากกำหนดค่า Server และ Client เสร็จแล้วคุณก็พร้อมที่จะสร้างการเชื่อมต่อในกรณีของเราเราจะใช้pg ผู้ดูแลระบบ 3เครื่องมือเป็นตัวอย่างดังนั้นให้ติดตั้ง Application นี้ (หรือ Application อื่นที่ต้องการ) ไว้ล่วงหน้า
- ในการเชื่อมต่อกับ Server DB ผ่าน SSL คุณต้องมีอย่างใดอย่างหนึ่งPublic IPหรือจุดสิ้นสุดถูกแนบมากับ ContainerDatabase PostgreSQL ของคุณ
เราจะพิจารณากรณีหลัง - Environment การเข้าถึงการตั้งค่าให้เปลี่ยนไปที่จุดสิ้นสุดส่วนและเพิ่มจุดสิ้นสุดใหม่พร้อมปุ่มชื่อเดียวกันที่บานหน้าต่างด้านบน
2. ตอนนี้เมื่อคุณมีจุดเข้าใช้งานแล้วให้เรียกใช้งานpg ผู้ดูแลระบบ 3ลูกค้าและเลือกการลงทะเบียน Server ใหม่ตัวเลือก.
ในคุณสมบัติของหน้าต่างที่เปิดอยู่ให้ระบุข้อมูลต่อไปนี้:
- ชื่อ- ชื่อการเชื่อมต่อที่ต้องการ (เช่นssl-to-pgsql)
- เจ้าภาพ- จุดเข้าใช้งานที่คุณเพิ่มในขั้นตอนแรก (Public IP หรือจุดสิ้นสุดURL การเข้าถึงไม่มีหมายเลข Port)
- ท่าเรือ- ใช้ Port เริ่มต้น5432สำหรับ IP ภายนอกหรือปลายทางท่าเรือสาธารณะ(แสดงไว้ในส่วนชื่อเดียวกันของคอลัมน์ที่เหมาะสม)
- ชื่อผู้ใช้- ผู้ใช้ Database ที่คุณได้ตั้งค่าใบรับรอง SSL และการกำหนดค่าสำหรับ (เช่นเวแบดมินโดยค่าเริ่มต้น)
- รหัสผ่าน- รหัสผ่านของผู้ใช้ที่เกี่ยวข้อง (ส่งทางอีเมลไปที่เวแบดมินหรืออันที่คุณตั้งไว้เป็นอย่างอื่น)
ฟิลด์ที่เหลือสามารถปล่อยไว้ไม่เปลี่ยนแปลงหรือปรับเปลี่ยนได้ตามความต้องการของคุณ
- ถัดไปสลับไปที่เอสเอสแอลและสำหรับบรรทัดชื่อเดียวกันให้เลือกจำเป็นต้องตัวเลือกจากรายการแบบเลื่อนลง
นั่นคือทั้งหมด! ใบรับรองที่จำเป็นจะถูกโหลดโดยอัตโนมัติระหว่างการสร้างการเชื่อมต่อครั้งแรกดังนั้นเพียงคลิกตกลงเพื่อเริ่มจัดการ Database ของคุณผ่านการเชื่อมต่อที่ปลอดภัย
ตอนนี้คุณสามารถเชื่อมต่อ Application ของคุณกับ Database (ใช้เชื่อมต่อกับ Databaseเป็นตัวอย่าง) และเปิดใช้งานการกำหนดค่า SSL สำหรับโปรเจ็กต์ของคุณเพื่อเข้ารหัสข้อมูลของคุณในขณะที่ดึงข้อมูล/ถ่ายโอน

