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

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

RUK-COM PAAS / DATABASES

คู่มือ SSL Connection to PostgreSQL สำหรับ ฐานข้อมูล

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

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

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

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

"local" ใช้สำหรับการเชื่อมต่อซ็อกเก็ตโดเมน Unix เท่านั้น

ท้องถิ่นล้วนไว้วางใจ

การเชื่อมต่อภายใน IPv4:

โฮสต์ความไว้วางใจ 127.0.0.1/32 ทั้งหมดทั้งหมด

การเชื่อมต่อระยะไกล IPv4 สำหรับผู้ใช้ที่ได้รับการรับรองความถูกต้อง

hostssl webadmin ทั้งหมด 0.0.0.0/0 md5 clientcert=verify-full


![Image 10: setup SSL via pg_hba file](assets/knowledge-base/paas-reference/ssl-for-pgsql-09-setup-ssl-via-pghba-file-hu02572c9d050a8c3016d5d32eb157c0-b5fdd6ff1906.png)

**Notes:**

*   If you want to work with a database as a user other than the default _**webadmin**_, change the appropriate value within the last line of the config to the required name. In this case, you’ll need to use the same username for all the further commands (we’ll denote where this is required).
*   Also, for the older PostgreSQL versions (_10_ and lower), you need to change the _clientcert_ value to one “**md5 clientcert=1**” in the last line of the config:

`hostssl all         webadmin    0.0.0.0/0             md5 clientcert=1`

Save the updated file.

7. To finish configurations, you need to apply some more changes to the _**postgresql.conf**_ file.

Navigate to its _Security and Authentication_ section (approximately at the _80th_ line) and activate **SSL** usage itself, through uncommenting the same-named setting and changing its value to “_on_”. Also, add the new **ssl_ca_file** parameter below:

ssl = บน ssl_ca_file = 'root.crt'


![Image 11: enable SSL on PostgreSQL server](assets/knowledge-base/paas-reference/ssl-for-pgsql-10-enable-ssl-on-postgresql-server-hu2fe9df89a76602c103daaf6-433f1f0f88be.png)
Don’t forget to save these changes.

8. Lastly, restart your PostgreSQL container in order to apply new settings:

bash

`sudo service postgresql restart`

![Image 12: restart PostgreSQL server](assets/knowledge-base/paas-reference/ssl-for-pgsql-11-restart-postgresql-server-hue949414ee24439c01846ad00c8dff-6047775473db.png)
## Client Certificates

Now, let’s create one more set of SSL certificate files for client instance, in order to support secure connection on both sides.

1. Return to the terminal window with SSH connection to your PostgreSQL server you’ve operated through during [server setup](paas-guide-ssl-for-pgsql.html#postgresql-server-configuration) (or reconnect to it) - you’ll need your server certificates for further actions.

Once inside, generate a private key for client (also without a _pass phrase_, just as it was done in the previous section), for example within the **tmp** directory:

bash

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


![Image 14: generate SSL key and remove pass phrase](assets/knowledge-base/paas-reference/ssl-for-pgsql-12-generate-ssl-key-and-remove-pass-phrase-hu7349e2a6f1a047f-763cc92c3441.png)
2. Next, create SSL certificate for your PostgreSQL database user (_webadmin_ by default) and sign it with our trusted _**root.crt**_ file on server.

bash

openssl req - ใหม่ -key /tmp/postgresql.key -out /tmp/postgresql.csr -subj '/C=US/ST=California/L=PaloAlto/O=Ruk-Com PaaS/CN=webadmin' openssl x509 -req -in /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial ```

หมายเหตุ:

  • ในขณะที่ข้อมูลทั่วไปสำหรับวิชาพารามิเตอร์สามารถเปลี่ยนเป็นข้อมูลส่วนบุคคลของคุณได้ที่นี่ชื่อสามัญ (/CN=)จะต้องเท่ากับชื่อผู้ใช้ฐานข้อมูลที่คุณตั้งไว้ระหว่างการสร้างใบรับรองครั้งแรกในไฟล์กำหนดค่าเซิร์ฟเวอร์ (เวแบดมินในกรณีของเรา)
  • root.crtและเซิร์ฟเวอร์.คีย์ไฟล์ควรอยู่ในโฟลเดอร์เดียวกันกับที่เรียกใช้คำสั่งที่ 2 มิฉะนั้นควรระบุเส้นทางแบบเต็มไปยังพวกเขา

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

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

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

เคล็ดลับ:อย่าลืมเอากุญแจออกจากทีเอ็มพีไดเร็กทอรีบนเซิร์ฟเวอร์ DB ของคุณในภายหลัง

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

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

  1. ในการเชื่อมต่อกับเซิร์ฟเวอร์ DB ผ่าน SSL คุณต้องมีอย่างใดอย่างหนึ่งไอพีสาธารณะหรือจุดสิ้นสุดถูกแนบมากับคอนเทนเนอร์ฐานข้อมูล PostgreSQL ของคุณ

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

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

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

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

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

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

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

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