ฉันกำลังค่อยๆ เปลี่ยนจากบทบาทนักพัฒนาเฉพาะและไปสู่บทบาท DevOps แบบไฮบริดที่บริษัทของฉันมากขึ้น ซึ่งหมายความว่าฉันยังใหม่กับสิ่งนี้ โปรดไปกับฉัน... :-p
เซิร์ฟเวอร์ของลูกค้าของฉันใช้งาน Ubuntu 16.04 พร้อม PHP 5.6.4 และมีฟังก์ชันในพอร์ทัลการดูแลระบบของไซต์ที่เรียกใช้ ขด
คำสั่ง (เป็นหลัก) กลับไปที่ตัวเองสำหรับการซิงค์ไฟล์บางประเภท และล้มเหลวมาระยะหนึ่งแล้ว (สองสามสัปดาห์/เดือน) ปัญหา (I คิด) คือการตรวจสอบใบรับรองล้มเหลว ดังนั้น ฟังก์ชันกำลังจะตายในเถาวัลย์
เมื่อฉัน ssh เข้าสู่เซิร์ฟเวอร์ ฉันสามารถขดตัวไปที่ใดก็ได้อย่างง่ายดายโดยไม่มีปัญหา (Google, example.org ฯลฯ...) แต่พยายามเพียงแค่ curl พื้นฐานไปยัง url หลักของเว็บไซต์ บอร์ค.
$ curl -v https://www.[ชื่อเว็บไซต์ของฉัน].com
* ลอง [my-site-IP]...
* เชื่อมต่อกับ [my-site-name] ([my-site-IP]) พอร์ต 443 (#0)
* พบใบรับรอง 258 รายการใน /etc/ssl/certs/ca-certificates.crt
* พบ 908 ใบรับรองใน /etc/ssl/certs/
* ALPN ให้บริการ http/1.1
* การเชื่อมต่อ SSL โดยใช้ TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
* การตรวจสอบใบรับรองเซิร์ฟเวอร์ล้มเหลว CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: ไม่มี
* ปิดการเชื่อมต่อ 0
curl: (60) การตรวจสอบใบรับรองเซิร์ฟเวอร์ล้มเหลว CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: ไม่มี
รายละเอียดเพิ่มเติมที่นี่: http://curl.haxx.se/docs/sslcerts.html
curl ทำการตรวจสอบใบรับรอง SSL ตามค่าเริ่มต้น โดยใช้ "บันเดิล"
ของคีย์สาธารณะของผู้ออกใบรับรอง (CA) (ใบรับรอง CA) ถ้าค่าเริ่มต้น
ไฟล์บันเดิลไม่เพียงพอ คุณสามารถระบุไฟล์อื่นได้
โดยใช้ตัวเลือก --cacert
หากเซิร์ฟเวอร์ HTTPS นี้ใช้ใบรับรองที่ลงนามโดย CA ที่เป็นตัวแทน
บันเดิล การตรวจสอบใบรับรองอาจล้มเหลวเนื่องจากก
ปัญหาเกี่ยวกับใบรับรอง (ใบรับรองอาจหมดอายุหรือชื่ออาจ
ไม่ตรงกับชื่อโดเมนใน URL)
หากคุณต้องการปิดการตรวจสอบใบรับรองของ curl ให้ใช้
ตัวเลือก -k (หรือ --insecure)
ฉันรู้ว่าฉันสามารถเรียกใช้ขดกับ -k
ถึงจะไม่ปลอดภัยแต่ฉันก็ลังเลที่จะทำเช่นนั้น ฉันเดาว่าคำถามแรกคือฉันไม่ควรกังวลเกี่ยวกับการรันสิ่งนี้ด้วยแฟล็กที่ไม่ปลอดภัยเนื่องจากทางเทคนิคไม่ได้ออกจากเซิร์ฟเวอร์เลย ฉันได้ทดสอบคำสั่ง curl เดียวกันนี้บนหนึ่งในกล่องใหม่ของเราที่ใช้ Ubuntu 18.x และบน DigitalOcean ที่ใช้ v20 โดยไม่มีปัญหาเลย ทั้งการม้วนภายนอกและภายในทำงานได้ดีมาก
ฉันยังสามารถอยู่บนเซิร์ฟเวอร์อื่นและขดตัวกลับไปหาเซิร์ฟเวอร์ที่ประสบปัญหา ซึ่งนั่นก็ใช้ได้ดีเช่นกัน
ฉันลองทุกอย่างที่นึกออกแล้ว (ซึ่งยอมรับว่าไม่มาก) และดูเหมือนจะไม่มีอะไรทำงาน
- เรียกใช้การอัปเดตสำหรับแพ็คเกจ curl และ certbot
- บังคับให้
update-ca-ใบรับรอง
- เพิ่ม /etc/ssl/certs/cacert.pem ไปทั้ง
curl.cainfo
และ opensl.cafile
vars ใน php.ini
ฉันรู้ว่าสิ่งนี้อาจไม่สำคัญ แต่เพื่อความสมบูรณ์ ฉันยังได้เรียกใช้ไซต์ผ่านบริการยืนยันออนไลน์ต่างๆ:
ทั้งหมดกลับมาพร้อมกับผลลัพธ์ที่เป็นบวก ข้อเสียเพียงอย่างเดียว (ฉันเดา) คือ SSLLabs ให้คะแนนเราด้วย 'B' เพราะเห็นได้ชัดว่า TLS 1.0 ยังเปิดใช้งานอยู่
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก. ฉันรู้สึกว่าการอ่านเอกสารที่กล่าวถึงในคำเตือนความล้มเหลวนั้นไม่ได้มีประโยชน์อะไรเลย
ข้อเสนอแนะ / เคล็ดลับ / เทคนิค ??
1,000 ขอบคุณล่วงหน้า!