ฉันมีการตั้งค่าเซิร์ฟเวอร์ centOS7 ที่เปิดใช้งาน HTTPS ด้วย GitLab/nginx โดยมีบันทึก A ที่ลงทะเบียนบน DNS ที่ชำระเงินและใบรับรองที่ตรวจสอบโดย Let's Encrypt (ฉันจะใช้ gitlab.example.com ที่นี่) ชื่อโดเมนได้รับการทดสอบว่าสามารถเข้าถึงได้ผ่าน ssh และ HTTP ธรรมดาเป็นอย่างน้อย
ด้วย HTTPS ฉันสามารถเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ IP โดยตรงเช่น https://x.x.x.x . แม้ว่าข้อผิดพลาดของใบรับรองที่ไม่ปลอดภัยจะปรากฏขึ้น (เนื่องจากชื่อโดเมนไม่ตรงกัน) หากฉันเลือกที่จะดำเนินการต่อแม้จะมีคำเตือน หน้า gitlab จะแสดงอย่างถูกต้อง
อย่างไรก็ตามหากฉันพยายามเข้าถึงโดยใช้ https://gitlab.example.com ข้อผิดพลาด ERR_SSL_PROTOCOL_ERROR
จะปรากฏขึ้น
ฉันได้ลองใช้ openssl s_client เพื่อแก้ปัญหาและได้ผลลัพธ์ดังต่อไปนี้
openssl s_client -เชื่อมต่อ gitlab.example.com:443 -ชื่อเซิร์ฟเวอร์ gitlab.example.com
เชื่อมต่อแล้ว(00000003)
4658671212:ข้อผิดพลาด:1400410B:รูทีน SSL:CONNECT_CR_SRVR_HELLO:หมายเลขเวอร์ชันไม่ถูกต้อง:/AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-47.120.1/libressl-2.8/ssl/ssl_pkt.c: 386:
---
ไม่มีใบรับรองเพื่อน
---
ไม่มีการส่งชื่อ CA ของใบรับรองไคลเอ็นต์
---
SSL handshake อ่าน 5 ไบต์และเขียน 0 ไบต์
---
ใหม่ (ไม่มี) รหัสคือ (ไม่มี)
ไม่สนับสนุนการเจรจาใหม่ที่ปลอดภัย
การบีบอัด: ไม่มี
การขยายตัว: ไม่มี
ไม่มีการเจรจา ALPN
เซสชัน SSL:
โปรโตคอล : TLSv1.2
รหัส : 0000
รหัสเซสชัน:
เซสชัน-ID-ctx:
กุญแจหลัก:
เวลาเริ่มต้น: 1641487269
หมดเวลา : 7200 (วินาที)
ตรวจสอบรหัสส่งคืน: 0 (ตกลง)
---
น่าสนใจ ถ้าฉันไม่รวม -ชื่อเซิร์ฟเวอร์
ตัวเลือก จะไม่มีข้อผิดพลาดและจะได้รับใบรับรองอย่างถูกต้อง การใช้ IP โดยตรงกับพอร์ต 443 จะได้รับใบรับรองอย่างถูกต้องเช่นกัน
ฉันพยายาม google ข้อผิดพลาดเป็นเวลาหลายชั่วโมง แต่ไม่ประสบความสำเร็จ
ฉันลองใช้ curl เพื่อเข้าถึงและได้รับข้อผิดพลาดเดียวกัน (ดูเหมือนว่าข้อมูลนี้มีประโยชน์น้อยกว่าผลลัพธ์ของ openssl s_client ยกเว้นข้อมูลที่ชื่อโดเมนถูกแมปกับที่อยู่ IP อย่างถูกต้อง)
curl --insecure -Lv https://gitlab.example.com
* พยายาม x.x.x.x...
* ตั้งค่า TCP_NODELAY
* เชื่อมต่อกับ gitlab.example.com (x.x.x.x) พอร์ต 443 (#0)
* ALPN ให้บริการ h2
* ALPN ให้บริการ http/1.1
* ตั้งค่าตำแหน่งการตรวจสอบใบรับรองสำเร็จแล้ว:
* ไฟล์ CA: /etc/ssl/cert.pem
CApath: ไม่มี
* TLSv1.2 (ออก), การจับมือ TLS, สวัสดีลูกค้า (1):
* ข้อผิดพลาด:1400410B:รูทีน SSL:CONNECT_CR_SRVR_HELLO:หมายเลขเวอร์ชันไม่ถูกต้อง
* ปิดการเชื่อมต่อ 0
ขด: (35) ข้อผิดพลาด:1400410B:รูทีน SSL:CONNECT_CR_SRVR_HELLO:หมายเลขเวอร์ชันไม่ถูกต้อง
ไม่มีอะไรปรากฏในบันทึกของ Gitlab และฉันคิดว่าคำขอนั้นไม่ได้มาไกลเกินกว่าขั้นตอนการจับมือกันของ SSL
ฉันติดอยู่ที่จุดนี้ ความช่วยเหลือหรือคำแนะนำใด ๆ เกี่ยวกับวิธีดำเนินการกับปัญหานี้จะได้รับการชื่นชม