ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บน Platform

RUK-COM PAAS / DATABASES

คู่มือ SSL Connection to PostgreSQL สำหรับ Database

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

คู่มือภาษาไทย

คำสั่ง ชื่อเมนู Parameter และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง

การสร้างการเชื่อมต่อ SSL ไปยัง Server PostgreSQL DB

เมื่อมุ่งมั่นที่จะเก็บข้อมูลใน Database PostgreSQL ของคุณให้ปลอดภัยสิ่งแรกที่คุณต้องทำคือเข้ารหัสการเชื่อมต่อทั้งหมดเพื่อปกป้องข้อมูลประจำตัวในการตรวจสอบสิทธิ์ (ชื่อผู้ใช้ / รหัสผ่าน) และข้อมูลที่จัดเก็บจากการสกัดกั้นคู่มือนี้มีจุดมุ่งหมายเพื่อช่วยคุณในการสร้างการเชื่อมต่อ SSL ที่ปลอดภัยกับ Container PostgreSQL ของคุณซึ่ง Host อยู่ที่ Platform

Image 1: SSL for PostgreSQLเราจะสำรวจสิ่งที่เหมาะสมด้านล่างนี้การปรับ ServerDatabaseจำเป็นสำหรับการเปิดใช้งาน SSL และการสร้างใบรับรองสำหรับมันจากนั้นเราจะสร้างและเพิ่มใบรับรองให้ลูกค้าเครื่องจักรและสุดท้ายจะสร้างความปลอดภัยการเชื่อมต่อไปยัง Server ของเราผ่านเครื่องมือ pgAdmin เอาล่ะไปกันต่อ!

การกำหนดค่า Server PostgreSQL

แน่นอนว่าสำหรับบทช่วยสอนนี้เราจะใช้ Environment ที่มี Database PostgreSQL อยู่ข้างในซึ่งคุณทำได้อย่างง่ายดายสร้างเช่นถ้าคุณยังไม่ได้ทำสิ่งนี้

Image 3: create PostgreSQL database1. เริ่มต้นด้วยการเชื่อมต่อกับ ServerDatabase ของคุณผ่านทางประตูเอสเอสเอช.

Image 4: connect to PostgreSQL via SSH2. ตอนนี้เพื่อให้ทำงานกับ SSL ได้คุณต้องเพิ่มไฟล์สามไฟล์ต่อไปนี้ลงใน/var/lib/pgsql/dataDirectory Server:

  • Server.คีย์- รหัสส่วนตัว
  • server.crt- ใบรับรอง Server
  • root.crt- ใบรับรองรูทที่เชื่อถือได้

ภายในบทช่วยสอนนี้เราจะพิจารณาสั้นๆว่าคุณสามารถสร้างสิ่งเหล่านี้ได้ด้วยตัวเองได้อย่างไร

เคล็ดลับ:

  • เราจะไม่อธิบาย Parameter คำสั่งโดยละเอียดที่นี่แต่หากคุณต้องการทราบข้อมูลเพิ่มเติมเพียงอ้างถึงSSL แบบกำหนดเองที่ลงนามด้วยตนเองหน้าในเอกสารของเราหรือตรวจสอบอย่างเป็นทางการOpenSSLเพื่อดูรายการการดำเนินการทั้งหมดที่มีอยู่
  • คุณยังสามารถใช้SSL แบบกำหนดเองใบรับรองคล้ายกับที่อธิบายไว้ด้านล่าง (ปฏิบัติตามสร้างใบรับรอง SSL แบบกำหนดเองส่วนของคำแนะนำที่เชื่อมโยงเพื่อรับสิ่งนี้) ในกรณีหลังนี้คุณสามารถข้ามคำสั่งการสร้างและข้ามไปที่ไฟล์ได้โดยตรงขั้นตอนที่ 6ของคำสั่งนี้

ดังนั้นนำทางไปยังโฟลเดอร์ที่กล่าวถึงและดำเนินการตามขั้นตอนด้านล่าง

  1. ก่อนอื่นมาสร้างไฟล์แรกกันก่อน - รหัสส่วนตัว:
  • ดำเนินการคำสั่งถัดไป:

ทุบตี

cd /var/lib/pgsql/data
openssl genrsa -des3 -out server.key 1024

Image 5: generate SSL private keyในระหว่างServer.คีย์รุ่นคุณจะถูกถามถึงผ่านวลี- ระบุใดๆและยืนยันเพื่อสร้างให้เสร็จสิ้น

  • ตอนนี้เพื่อที่จะทำงานกับคีย์นี้ต่อไปจำเป็นต้องลบวลีรหัสผ่านที่คุณเพิ่มไว้ก่อนหน้านี้ดำเนินการคำสั่งต่อไปนี้สำหรับสิ่งนี้:

ทุบตี

openssl rsa -in server.key -out server.key

Image 6: remove pass phrase from SSL keyป้อนวลีรหัสผ่านอีกครั้งเพื่อยืนยัน

  • ตั้งค่าการอนุญาตและสิทธิ์การเป็นเจ้าของที่เหมาะสมสำหรับไฟล์คีย์ส่วนตัวของคุณด้วยคำสั่งถัดไป:

ทุบตี

chmod 400 server.key
chown postgres.postgres server.key

Image 7: change SSL key owner and permissions4. ตอนนี้คุณต้องสร้างใบรับรอง 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]'

Image 8: create server SSL certificate

บันทึก:จำเป็นต้องตั้งค่าข้อมูลส่วนบุคคลของคุณสำหรับวิชาParameter หากใบรับรองมีวัตถุประสงค์เพื่อใช้ในการผลิต:

หน่วย ความหมาย ตัวอย่าง
/ค= ประเทศ กิกะไบต์
/ST= สถานะ ลอนดอน
/ล= ที่ตั้ง ลอนดอน
/O= องค์กร ความปลอดภัยระดับโลก
/OU= (ไม่จำเป็น) หน่วยองค์กร แผนกไอที
/CN= ชื่อสามัญ ตัวอย่าง.com
/ที่อยู่อีเมล= อีเมล [email protected]

คุณยังสามารถข้ามได้-เรื่องParameter ภายในคำสั่งและส่งผ่านข้อโต้แย้งเหล่านี้ทั้งหมดในโหมดโต้ตอบภายในคำถามที่เปิดโดยอัตโนมัติ

  1. เนื่องจากเราจะเซ็นใบรับรองด้วยตัวเองจึงสร้างใบรับรอง Serverสามารถใช้เป็นที่เชื่อถือได้ใบรับรองหลักเช่นกันดังนั้นเพียงทำสำเนาด้วยชื่อที่เหมาะสม:

ทุบตี

cp server.crt root.crt

Image 9: copy server SSL certificate ขณะนี้เมื่อคุณมีไฟล์ใบรับรองทั้งสามไฟล์แล้วคุณก็สามารถดำเนินการกำหนดค่า Database PostgreSQL ได้ซึ่งจำเป็นสำหรับการเปิดใช้งานและการใช้งาน SSL

  1. เปิด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

Image 10: setup SSL via pg_hba file

หมายเหตุ:

  • หากคุณต้องการทำงานกับ Database ในฐานะผู้ใช้อื่นที่ไม่ใช่ค่าเริ่มต้นเวแบดมินให้เปลี่ยนค่าที่เหมาะสมภายในบรรทัดสุดท้ายของการกำหนดค่าเป็นชื่อที่ต้องการในกรณีนี้คุณจะต้องใช้ชื่อผู้ใช้เดียวกันสำหรับคำสั่งเพิ่มเติมทั้งหมด (เราจะระบุในส่วนที่จำเป็น)
  • นอกจากนี้สำหรับ PostgreSQL เวอร์ชันเก่า (10และต่ำกว่า) คุณต้องเปลี่ยนใบรับรองลูกค้าคุณค่าเป็นหนึ่ง”ใบรับรองลูกค้า md5=1” ในบรรทัดสุดท้ายของการกำหนดค่า:

hostssl all webadmin 0.0.0.0/0 md5 clientcert=1

บันทึกไฟล์ที่อัพเดต

  1. เพื่อเสร็จสิ้นการกำหนดค่าคุณต้องทำการเปลี่ยนแปลงเพิ่มเติมกับpostgresql.confไฟล์.

นำทางไปยังมันความปลอดภัยและการรับรองความถูกต้องส่วน (ประมาณที่80เส้น) และเปิดใช้งานเอสเอสแอลการใช้งานเองโดยยกเลิกการใส่เครื่องหมายการตั้งค่าชื่อเดียวกันและเปลี่ยนค่าเป็น “บน” นอกจากนี้ให้เพิ่มสิ่งใหม่ssl_ca_fileParameter ด้านล่าง:

ssl = on
ssl_ca_file = 'root.crt'

Image 11: enable SSL on PostgreSQL serverอย่าลืมบันทึกการเปลี่ยนแปลงเหล่านี้

  1. สุดท้ายให้ Restart Container PostgreSQL เพื่อใช้การตั้งค่าใหม่:

ทุบตี

sudo service postgresql restart

Image 12: restart PostgreSQL server

ใบรับรองลูกค้า

ตอนนี้เรามาสร้างไฟล์ใบรับรอง SSL อีกหนึ่งชุดสำหรับ Instance Client เพื่อรองรับการเชื่อมต่อที่ปลอดภัยทั้งสองด้าน

  1. กลับไปที่หน้าต่างเทอร์มินัลด้วยการเชื่อมต่อ SSH ไปยัง Server PostgreSQL ที่คุณเคยใช้งานการตั้งค่า Server(หรือเชื่อมต่อใหม่) - คุณจะต้องมีใบรับรอง Server เพื่อดำเนินการต่อไป

เมื่อเข้าไปข้างในแล้วให้สร้างรหัสส่วนตัวสำหรับลูกค้า (และไม่มีผ่านวลีเช่นเดียวกับที่ทำในส่วนก่อนหน้า) เช่นภายในทีเอ็มพีDirectory:

ทุบตี

openssl genrsa -des3 -out /tmp/postgresql.key 1024
openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key

Image 14: generate SSL key and remove pass phrase2. ถัดไปสร้างใบรับรอง 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 มิฉะนั้นควรระบุเส้นทางแบบเต็มไปยังพวกเขา

Image 15: create and sign certificate for SSL user3. หลังจากไฟล์ -postgresql.key,postgresql.crt,root.crt- พร้อมแล้วคุณต้องย้ายพวกมันไปที่.postgresqlโฟลเดอร์ที่เครื่อง Client ของคุณ (คุณสามารถใช้โปรแกรมเสริม FTPหรือเพียงคัดลอกและวางเนื้อหาไฟล์)

เคล็ดลับ:หากยังไม่มี Directory ดังกล่าวให้สร้างด้วยmkdir ~/.postgresqlหรือคำสั่งที่คล้ายกันตามการกระจายระบบปฏิบัติการของคุณ

Image 16: SSL certificates for clientนอกจากนี้หากจำเป็นคุณสามารถตั้งค่าสิทธิ์ในการอ่านคีย์สำหรับเจ้าของได้โดยใช้เท่านั้นchmod 0400 ~/.postgresql/postgresql.keyคำสั่งให้มีความปลอดภัยมากขึ้น

เคล็ดลับ:อย่าลืมเอากุญแจออกจากทีเอ็มพีDirectory บน Server DB ของคุณในภายหลัง

สร้างการเชื่อมต่อผ่าน PgAdmin

ในที่สุดหลังจากกำหนดค่า Server และ Client เสร็จแล้วคุณก็พร้อมที่จะสร้างการเชื่อมต่อในกรณีของเราเราจะใช้pg ผู้ดูแลระบบ 3เครื่องมือเป็นตัวอย่างดังนั้นให้ติดตั้ง Application นี้ (หรือ Application อื่นที่ต้องการ) ไว้ล่วงหน้า

  1. ในการเชื่อมต่อกับ Server DB ผ่าน SSL คุณต้องมีอย่างใดอย่างหนึ่งPublic IPหรือจุดสิ้นสุดถูกแนบมากับ ContainerDatabase PostgreSQL ของคุณ

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

Image 18: attach endpoint to PostgreSQL2. ตอนนี้เมื่อคุณมีจุดเข้าใช้งานแล้วให้เรียกใช้งานpg ผู้ดูแลระบบ 3ลูกค้าและเลือกการลงทะเบียน Server ใหม่ตัวเลือก.

Image 19: configure properties for connection via pgAdmin3ในคุณสมบัติของหน้าต่างที่เปิดอยู่ให้ระบุข้อมูลต่อไปนี้:

  • ชื่อ- ชื่อการเชื่อมต่อที่ต้องการ (เช่นssl-to-pgsql)
  • เจ้าภาพ- จุดเข้าใช้งานที่คุณเพิ่มในขั้นตอนแรก (Public IP หรือจุดสิ้นสุดURL การเข้าถึงไม่มีหมายเลข Port)
  • ท่าเรือ- ใช้ Port เริ่มต้น5432สำหรับ IP ภายนอกหรือปลายทางท่าเรือสาธารณะ(แสดงไว้ในส่วนชื่อเดียวกันของคอลัมน์ที่เหมาะสม)
  • ชื่อผู้ใช้- ผู้ใช้ Database ที่คุณได้ตั้งค่าใบรับรอง SSL และการกำหนดค่าสำหรับ (เช่นเวแบดมินโดยค่าเริ่มต้น)
  • รหัสผ่าน- รหัสผ่านของผู้ใช้ที่เกี่ยวข้อง (ส่งทางอีเมลไปที่เวแบดมินหรืออันที่คุณตั้งไว้เป็นอย่างอื่น)

ฟิลด์ที่เหลือสามารถปล่อยไว้ไม่เปลี่ยนแปลงหรือปรับเปลี่ยนได้ตามความต้องการของคุณ

  1. ถัดไปสลับไปที่เอสเอสแอลและสำหรับบรรทัดชื่อเดียวกันให้เลือกจำเป็นต้องตัวเลือกจากรายการแบบเลื่อนลง

Image 20: configure SSL for connection via pgAdmin3นั่นคือทั้งหมด! ใบรับรองที่จำเป็นจะถูกโหลดโดยอัตโนมัติระหว่างการสร้างการเชื่อมต่อครั้งแรกดังนั้นเพียงคลิกตกลงเพื่อเริ่มจัดการ Database ของคุณผ่านการเชื่อมต่อที่ปลอดภัย

ตอนนี้คุณสามารถเชื่อมต่อ Application ของคุณกับ Database (ใช้เชื่อมต่อกับ Databaseเป็นตัวอย่าง) และเปิดใช้งานการกำหนดค่า SSL สำหรับโปรเจ็กต์ของคุณเพื่อเข้ารหัสข้อมูลของคุณในขณะที่ดึงข้อมูล/ถ่ายโอน