ฉันทำตามคำแนะนำที่ timescaleDB สำหรับ API ด้วย การตรวจสอบใบรับรอง --> 2. สร้างคีย์และใบรับรองสำหรับโหนด:
สำหรับการเชื่อมต่อ SSL คุณต้องมีตัวแปรสภาพแวดล้อมสี่ตัว:
- ใบรับรองหลัก SSL
- ใบรับรอง SSL (สำหรับโหนด)
- คีย์ SSL (สำหรับโหนด)
- รหัสผ่าน SSL (สำหรับโหนด)
ตามข้อ 1.) คุณได้รับจากไทม์สเกลเมื่อเริ่มต้นฐานข้อมูลเป็นข้อความหรือเป็นการดาวน์โหลด
ตามข้อ 2.) ดูเหมือนว่าคุณจะสร้างใบรับรองด้วยตนเองได้โดยใช้:
opensl req -out server.csr -new -newkey rsa:2048 -nodes \
-keyout server.key
ฉันกรอก "ประเทศ" และข้ามรายการที่เหลือด้วย "." เท่านั้น (แนะนำให้ข้ามไป) ฉันยังกรอก "รหัสผ่านท้าทาย" ไม่แน่ใจว่าการกรอกข้อมูลนี้มีความเกี่ยวข้องมากน้อยเพียงใดและรหัสผ่านคือ 4.) ในรายการด้านบนหรือไม่
ตามข้อ 3.) ก่อนอื่นคุณต้องเปลี่ยน opensl.cnf ซึ่งไม่ได้ระบุไว้ในคู่มือมาตราส่วนเวลา ที่ทำได้โดยการค้นหาด้วย opensl.cnf อยู่ที่ไหน
หรือในกรณีของฉัน ตำแหน่งแสดงในเอาต์พุตของเทอร์มินัลเมื่อพารามิเตอร์ยังไม่ถูกต้อง ซึ่งแสดงให้เห็น /usr/lib/ssl/openssl.cnf
เป็นที่ตั้ง. เปลี่ยนคอนฟิกด้วย sudo นาโน /usr/lib/ssl/openssl.cnf
เพื่อให้พบคีย์ส่วนตัว âserver.keyâ และใบรับรองหลัก âca.pemâ หลังจากนี้ ให้รันคำสั่งของคำแนะนำ:
openssl ca -extensions v3_intermediate_ca -days 3650 -notext \
-md sha256 -ใน server.csr -ออก server.crt
แต่แล้ว คุณได้รับข้อผิดพลาด:
ใช้การกำหนดค่าจาก /usr/lib/ssl/openssl.cnf
ใบรับรอง CA และรหัสส่วนตัวของ CA ไม่ตรงกัน
140718372717888:error:0B080074:x509 รูทีนใบรับรอง:X509_check_private_key:ค่าคีย์ไม่ตรงกัน:../crypto/x509/x509_cmp.c:299:
สคริปต์ยังคงสร้าง server.key และ server.csr แต่ไม่สามารถสร้าง server.crt ที่จำเป็นได้
และเท่านั้น วิธีแปลง .csr เป็น .cer (หรืออะไรก็ตามที่ใช้ได้บน Windows) ดูเหมือนว่าจะสามารถช่วยฉันรับ server.crt ด้วย:
opensl x509 -req -in server.csr -signkey server.key -out server.crt
ป้อนข้อมูลนี้ในการตั้งค่าการเชื่อมต่อ SSL ที่ Hasura:
แต่เมื่อพยายามเชื่อมต่อกับฐานข้อมูลของฉันตามเวลาโดยใช้ Hasura ฉันได้รับข้อผิดพลาด ไม่มี Env Var
:
การเพิ่มแหล่งข้อมูลล้มเหลว
Inconsistent object: Missing Env Var: -----BEGIN CERTIFICATE----- MIICoTCCAYkCFAHx6x6kVHJ023/ui0aLoWLqA8RyMA0GCSqGSIb3DQEBCwUAMA0x CzAJBgNVBAYTAkRFMB4XDTIxMDkyMTE4MDQzNVoXDTIxMTAyMTE4MDQzNVowDTEL MAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWGxsz
¦
g98irlkrtDn17jIzmZMjlJEQ75P9L78lJMT2eYCFRqVoCm+7x5IUS18UlnGUtwR4 BuIZOg4= -----END CERTIFICATE-----
ฉันเดาว่านี่เป็นเพียงปัญหาที่ตามมาเนื่องจากใบรับรอง CA และรหัสส่วนตัวของ CA ไม่ตรงกันอย่างเห็นได้ชัด ดังนั้นคำถามส่วนใหญ่เกี่ยวกับ ใบรับรอง CA และรหัสส่วนตัวของ CA ไม่ตรงกัน
, แทน.
ช่วงเวลาของคำตอบ:
ในขณะที่เราให้บริการรูท CA เนื่องจากใบรับรอง SSL สำหรับแต่ละบริการ
มีการลงนามเป็นการภายใน ดังนั้น การทำเช่นนี้จะทำให้คุณสร้างความไว้วางใจแต่เรา
ห้ามให้คีย์ส่วนตัวหรือรหัสผ่าน SSL แก่พวกเขา
เอกสารที่คุณเชื่อมโยงมีไว้สำหรับสร้างการรับรองความถูกต้องของใบรับรอง
ระหว่างโหนดในสภาพแวดล้อมหลายโหนดภายในองค์กร ไทม์สเกลคลาวด์
ไม่อนุญาตให้มีการรับรองความถูกต้องของใบรับรอง ดังนั้นจึงไม่เกี่ยวข้องกัน
ที่นี่ และคุณจะไม่สามารถรวมใบรับรองที่คุณสร้างเข้าด้วยกันได้
CA ที่คุณดาวน์โหลดจากพอร์ทัลระบบคลาวด์
วิธีแก้ปัญหา คุณยังสามารถละทิ้งการเข้ารหัส SSL เนื่องจากเป็นทางเลือกเท่านั้น:
เพียงระบุสตริงการเชื่อมต่อทั้งหมด (ตามที่คัดลอกมาจากไฟล์
ฟิลด์ Service URI ใน Timescale Cloud Portal) ก็เพียงพอแล้ว
เชื่อมต่อ.
ฉันทดสอบแล้ว มันเป็นความจริง คุณสามารถเรียกใช้งานได้โดยไม่ต้องใช้ SSL แม้ว่า SSL จะเตรียมไว้ให้ใช้ก็ตาม ฉันใช้ ราก ใบรับรองเพื่อเชื่อมต่อกับ SSL ด้วย psql หรือ pgAdmin ไปยังแบ็กเอนด์ PostgreSQL timescaleDB และพวกเขาขอเฉพาะใบรับรองรูท SSL --> 1.) ด้านบน และไม่ใช่สำหรับใบรับรองโหนด CA และคีย์ส่วนตัวของโหนด CA --> 2.) - 4.) ด้านบน
เชื่อมต่อด้วย SSL เท่านั้น ราก ใบรับรองยังทำงานร่วมกับ node-postgres / react-postgres / Express / React App ดู:
อย่างไรก็ตาม การตั้งค่า Hasura Application Programming Interface จะถามถึงตัวแปรสภาพแวดล้อมการเชื่อมต่อ SSL สี่ตัวของรายการด้านบน ฉันจะรับตัวแปรเหล่านั้นมาเชื่อมต่อกับ Timescale ได้อย่างไร