วิธีจัดการใบรับรอง SSL ใน Selenium
⚡ สรุปอย่างชาญฉลาด
ข้อผิดพลาดของใบรับรอง SSL ทำให้ระบบหยุดทำงาน Selenium ทดสอบช่วงเวลาที่เบราว์เซอร์ปฏิเสธใบรับรองที่ไม่น่าเชื่อถือหรือหมดอายุ ดังนั้นสคริปต์ WebDriver ทุกตัวจึงต้องมีคุณสมบัติเฉพาะสำหรับเบราว์เซอร์แต่ละตัวที่ยอมรับใบรับรองและอนุญาตให้การทำงานอัตโนมัติดำเนินต่อไปได้

ใบรับรอง SSL ใน Selenium
SSL (Secure Sockets Layer) เป็นโปรโตคอลความปลอดภัยมาตรฐานสำหรับการสร้างการเชื่อมต่อที่ปลอดภัยระหว่างเซิร์ฟเวอร์และไคลเอนต์ซึ่งเป็นเบราว์เซอร์
ใบรับรอง SSL ช่วยปกป้องข้อมูลที่ส่งผ่านระหว่างเซิร์ฟเวอร์และแอปพลิเคชันไคลเอ็นต์ด้วยการเข้ารหัสที่แข็งแกร่งและลายเซ็นดิจิทัล เจ้าของเว็บไซต์สามารถติดตั้งใบรับรอง SSL หรือใบรับรองการลงนามรหัสได้
ประโยชน์ของใบรับรอง SSL
การใช้ใบรับรอง SSL มีประโยชน์หลายประการ เช่น
- สามารถเพิ่มความไว้วางใจของผู้ใช้และลูกค้าเพื่อเพิ่มการเติบโตอย่างรวดเร็วของธุรกิจ
- ใบรับรองเหล่านี้ช่วยรักษาความปลอดภัยธุรกรรมออนไลน์และข้อมูลที่ละเอียดอ่อนของลูกค้า เช่น ข้อมูลบัตรเครดิต/บัตรเดบิต เป็นต้น
- ใบรับรองการลงนามมีแนวโน้มที่จะได้รับการดาวน์โหลดสูงสุดและได้รับคำวิจารณ์ที่ดีจากผู้ใช้
เว็บไซต์ที่มีการรักษาความปลอดภัย SSL เริ่มต้นด้วย https:// และคุณจะเห็นไอคอนแม่กุญแจหรือแถบที่อยู่สีเขียวหากทำการเชื่อมต่ออย่างปลอดภัย
เช่น หากคุณต้องการทำธุรกรรมผ่านเน็ตแบงก์กิ้ง หรือต้องการซื้อก โทรศัพท์มือถือ โทรศัพท์ผ่านไซต์อีคอมเมิร์ซเช่น Flipkart หรือ Amazon.
จะเกิดอะไรขึ้นระหว่างเว็บเบราว์เซอร์และเซิร์ฟเวอร์
- เบราว์เซอร์พยายามเชื่อมต่อกับเว็บไซต์ที่ปลอดภัยด้วย SSL เบราว์เซอร์ขอให้เว็บเซิร์ฟเวอร์ระบุตัวเอง
- เซิร์ฟเวอร์ส่งสำเนาใบรับรอง SSL ให้เบราว์เซอร์
- เบราว์เซอร์จะตรวจสอบว่าใบรับรอง SSL เป็นของแท้หรือไม่ หากเป็นเช่นนั้น ระบบจะส่งข้อความไปยังเซิร์ฟเวอร์
- เซิร์ฟเวอร์จะส่งการตอบรับที่ลงนามแบบดิจิทัลกลับไปเพื่อเริ่มเซสชันที่เข้ารหัส SSL
- ข้อมูลที่เข้ารหัสจะถูกแชร์ระหว่างเซิร์ฟเวอร์และเบราว์เซอร์
หมายเลขบัตรและข้อมูลการเข้าสู่ระบบจะถูกส่งผ่านเซสชันนั้น ดังนั้นการแลกเปลี่ยนข้อมูลจึงต้องได้รับการเข้ารหัสแบบ end-to-end และไม่สามารถถูกดักฟังได้
ตัวอย่างเช่น สัญลักษณ์แม่กุญแจและแถบที่อยู่ด้านล่างยืนยันว่าใบรับรองได้รับการยอมรับแล้ว
- ประเภท https://netbanking.hdfcbank.com/netbanking/ .
- กด Enter
- คุณจะเห็นแถบที่อยู่สีเขียวในเบราว์เซอร์ดังนี้:-
ใบรับรอง SSL สร้างการเชื่อมต่อที่ปลอดภัยอย่างไร
แผนภาพด้านล่าง tracนั่นคือการจับมือ และขั้นตอนที่มีหมายเลขกำกับต่อไปนี้จะอธิบายการแลกเปลี่ยนแต่ละครั้ง
- เบราว์เซอร์ ส่งคำขอ HTTPS ไปยังเซิร์ฟเวอร์
- ตอนนี้เซิร์ฟเวอร์จะต้องระบุตัวตนบางอย่างให้กับเบราว์เซอร์เพื่อพิสูจน์ว่าเชื่อถือได้ ซึ่งสามารถทำได้โดยการส่งสำเนาใบรับรอง SSL ไปยังเบราว์เซอร์
- เบราว์เซอร์แต่ละตัวมีรายการ Trusted CA's ของตัวเอง เบราว์เซอร์ตรวจสอบรากใบรับรองกับรายการ CA ที่เชื่อถือได้ และตรวจสอบว่าใบรับรองยังไม่หมดอายุ ไม่ถูกเพิกถอน และชื่อทั่วไปนั้นถูกต้องสำหรับเว็บไซต์ที่เชื่อมต่ออยู่
- หากเบราว์เซอร์เชื่อถือใบรับรอง เซสชันที่เข้ารหัสจะถูกสร้างขึ้นระหว่างเซิร์ฟเวอร์และเบราว์เซอร์
- เซิร์ฟเวอร์และเบราว์เซอร์สามารถส่งข้อความที่เข้ารหัสได้
ประเภทของใบรับรอง SSL
เบราว์เซอร์และเซิร์ฟเวอร์ใช้กลไกใบรับรอง SSL เพื่อให้สามารถสร้างการเชื่อมต่อที่ปลอดภัยได้ การเชื่อมต่อนี้เกี่ยวข้องกับการตรวจสอบใบรับรองสามประเภท
- ราก
- Intermediate
- ใบรับรองเซิร์ฟเวอร์
ขั้นตอนการรับใบรับรอง SSL
กระบวนการรับใบรับรอง SSL มีขั้นตอนด้านล่าง:-
- ขั้นแรก คุณต้องสร้างคำขอ CSR (สร้างคำขอลงนามใบรับรอง)
- คำขอ CSR สร้างไฟล์ข้อมูล CSR ซึ่งถูกส่งไปยังผู้ออกใบรับรอง SSL ที่เรียกว่า CA (Certificate Authority)
- CA ใช้ไฟล์ข้อมูล CSR เพื่อสร้างใบรับรอง SSL สำหรับเซิร์ฟเวอร์ของคุณ
- หลังจากได้รับใบรับรอง SSL แล้ว คุณต้องติดตั้งใบรับรองนั้นบนเซิร์ฟเวอร์ของคุณ
- จำเป็นต้องติดตั้งใบรับรองระดับกลางด้วย ซึ่งจะเชื่อมโยงใบรับรอง SSL ของคุณกับใบรับรองหลักของ CA
ภาพด้านล่างแสดงถึงใบรับรองทั้งสามใบ- ใบรับรองหลัก ระดับกลาง และเซิร์ฟเวอร์
วิธีการตรวจสอบใบรับรอง SSL
SSL ทำงานผ่านการผสมผสานระหว่างโปรแกรมและรูทีนการเข้ารหัส/ถอดรหัสที่มีอยู่บนเว็บเซิร์ฟเวอร์คอมพิวเตอร์และเว็บเซิร์ฟเวอร์เบราว์เซอร์
โดยทั่วไปใบรับรอง SSL จะมีข้อมูลด้านล่าง
- เรื่องที่เป็นตัวตนของเจ้าของเว็บไซต์
- ข้อมูลความถูกต้อง - กุญแจสาธารณะและกุญแจส่วนตัว
กุญแจส่วนตัวและกุญแจสาธารณะเป็นกุญแจเข้ารหัสลับ (ตัวเลข) สองตัวที่มีความสัมพันธ์กันอย่างเฉพาะเจาะจง สิ่งใดก็ตามที่ถูกเข้ารหัสด้วยกุญแจสาธารณะ จะสามารถถอดรหัสได้ด้วยกุญแจส่วนตัวเท่านั้น เบราว์เซอร์จะแสดงฟิลด์เหล่านั้นเมื่อตรวจสอบใบรับรอง ดังที่แสดงด้านล่าง
หากไม่สามารถสร้างการเชื่อมต่อที่ปลอดภัยระหว่างเซิร์ฟเวอร์และไคลเอนต์เนื่องจากใบรับรอง ข้อผิดพลาดใบรับรอง SSL ต่อไปนี้จะปรากฏขึ้น
ประเภทของข้อผิดพลาดใบรับรอง SSL
สมมติว่าคุณพิมพ์คำขอ https และเบราว์เซอร์ตอบกลับว่า “การเชื่อมต่อนี้ไม่น่าเชื่อถือ” หรือ “ใบรับรองความปลอดภัยของเว็บไซต์ไม่น่าเชื่อถือ” เบราว์เซอร์ไม่สามารถสร้างการเชื่อมต่อที่ปลอดภัยด้วยใบรับรองที่แสดงได้ ดังนั้นจึงหยุดการทำงานและขอให้ผู้ใช้ดำเนินการที่เหมาะสม
ประเภทของข้อผิดพลาดที่คุณน่าจะเห็นเนื่องจากใบรับรองในเบราว์เซอร์ต่างๆ อาจเป็นเช่นนี้
- ธรรมชาติFox - การเชื่อมต่อนี้ไม่น่าเชื่อถือ
- Google Chrome – ระบบรักษาความปลอดภัยของเว็บไซต์นี้ไม่น่าเชื่อถือ
- อินเตอร์เน็ตเอ็กซ์พลอเรอร์ (IE) – ใบรับรองความปลอดภัยที่แสดงโดยเว็บไซต์นี้ไม่ได้รับความเชื่อถือจากผู้ออกใบรับรองที่เชื่อถือได้ (CA)
ภาพหน้าจอด้านล่างแสดงข้อความแทรกที่เกิดจากใบรับรองที่ไม่น่าเชื่อถือ
วิธีจัดการกับข้อผิดพลาดใบรับรอง SSL โดยใช้ Selenium ไดรเวอร์เว็บ
สมมติว่าไฟล์ สคริปต์ทดสอบ เมื่อพบหน้า "การเชื่อมต่อที่ไม่น่าเชื่อถือ" ด้านบน สคริปต์จะต้องได้รับการปรับแต่งเพื่อให้จัดการกับข้อยกเว้น SSL ด้วยตัวเอง โดยใช้เพียงวิธีเดียว อัตโนมัติ.
การเปลี่ยนแปลงขึ้นอยู่กับอินสแตนซ์ของเบราว์เซอร์ที่ใช้งานอยู่ และนี่คือจุดที่ Desired Capabilities เข้ามามีบทบาท Desired Capabilities จะกำหนดค่าอินสแตนซ์ของไดรเวอร์ของเบราว์เซอร์ Selenium Webdriver รวมถึง ChromeDriver Firefoxไดรเวอร์และอินเทอร์เน็ตเอ็กซ์พลอเรอร์
ขั้นตอนด้านล่างนี้สามารถเพิ่มเข้าไปได้ Selenium สคริปต์สำหรับแก้ไขสถานการณ์ "การเชื่อมต่อที่ไม่น่าเชื่อถือ" สำหรับแต่ละเบราว์เซอร์
⚠️ Selenium หมายเหตุปี 4: คลาส DesiredCapabilities ถูกลบออกไปแล้วใน Selenium 4. ขณะนี้คลาสตัวเลือกของเบราว์เซอร์จะส่งการตั้งค่าเดียวกันผ่านความสามารถของ W3C เพียงอย่างเดียว ยอมรับใบรับรองที่ไม่ปลอดภัย.
| เบราว์เซอร์ | Selenium ชั้น 4 | โทร |
|---|---|---|
| Chrome | ตัวเลือก Chrome | setAcceptInsecureCerts(true) |
| Firefox | Firefoxตัวเลือก | setAcceptInsecureCerts(true) |
| ขอบ | ตัวเลือกขอบ | setAcceptInsecureCerts(true) |
| Safari | Javascriptผู้ปฏิบัติการ | สคริปต์บายพาสชั่วคราว |
ChromeOptions options = new ChromeOptions(); options.setAcceptInsecureCerts(true); WebDriver driver = new ChromeDriver(options);
การจัดการข้อผิดพลาดใบรับรอง SSL ใน Firefox
สำหรับการจัดการข้อผิดพลาดใบรับรอง SSL ใน Firefoxเราจำเป็นต้องใช้ความสามารถที่ต้องการของ Selenium Webdriver และทำตามขั้นตอนต่อไปนี้
ขั้นตอน 1) ขั้นแรกเราต้องสร้างสิ่งใหม่ Firefox โปรไฟล์ พูด "ประวัติของฉัน"
ขั้นตอน 2) ตอนนี้เข้าถึง myProfile ในสคริปต์ด้านล่างและสร้าง Firefoxวัตถุโปรไฟล์
ProfilesIni prof = new ProfilesIni() FirefoxProfile ffProfile= prof.getProfile ("myProfile")
ขั้นตอน 3) ตอนนี้เราต้องตั้งค่าคุณสมบัติ “setAcceptUntrustedCertificates” และ “setAssumeUntrustedCertificateIssuer” ใน Fire Fox โปรไฟล์
ffProfile.setAcceptUntrustedCertificates(true) ffProfile.setAssumeUntrustedCertificateIssuer(false)
ขั้นตอน 4) ตอนนี้ใช้ไฟFox โปรไฟล์ในไฟFox วัตถุไดรเวอร์
WebDriver driver = new FirefoxDriver (ffProfile)
หมายเหตุ "setAcceptUntrustedCertificates" และ "setAssumeUntrustedCertificateIssuer“คือความสามารถในการจัดการข้อผิดพลาดเกี่ยวกับใบรับรองในเว็บเบราว์เซอร์”
⚠️ หมายเหตุเกี่ยวกับเวอร์ชัน: โค้ดข้างต้นที่อิงตามโปรไฟล์กำหนดเป้าหมายไปที่ Selenium 2 และ Selenium 3. เปิด Selenium 4. โปรไฟล์ถูกแนบผ่าน Firefoxตัวเลือก และ Firefox โดยค่าเริ่มต้นจะยอมรับใบรับรองที่ไม่ปลอดภัย
การจัดการข้อผิดพลาดใบรับรอง SSL ใน Chrome
สำหรับการจัดการข้อผิดพลาด SSL ใน Chrome อ็อบเจ็กต์ DesiredCapabilities ด้านล่างนี้จะยอมรับใบรับรอง SSL ทุกประเภท ดังนั้นผู้ใช้จะไม่เห็นคำเตือนเกี่ยวกับใบรับรองในระหว่างการใช้งาน
เราจำเป็นต้องสร้างอินสแตนซ์ของคลาส DesiredCapabilities ดังนี้:-
DesiredCapabilities handlSSLErr = DesiredCapabilities.chrome () handlSSLErr.setCapability (CapabilityType.ACCEPT_SSL_CERTS, true) WebDriver driver = new ChromeDriver (handlSSLErr);
⚠️ หมายเหตุเกี่ยวกับเวอร์ชัน: CapabilityType.ACCEPT_SSL_CERTS เป็นของโปรโตคอล JSON Wire แบบเก่า ให้แทนที่ด้วยโค้ด ChromeOptions ที่แสดงไว้ก่อนหน้านี้เมื่อเรียกใช้งาน Selenium 4.
การจัดการข้อผิดพลาดใบรับรอง SSL ใน IE
ไม่เหมือนการจัดการใบรับรอง SSL ในเบราว์เซอร์ Chrome และ Firefoxใน IE คุณอาจต้องจัดการโดยใช้วิธีอื่น JavaScript.
ในการจัดการใบรับรอง SSL ใน IE คุณสามารถทำได้สองวิธี
วิธีที่ 1) คลิกที่ลิงก์ “ดำเนินการต่อที่เว็บไซต์นี้ (ไม่แนะนำ)” ในหน้าต่างป๊อปอัพ ลิงก์นั้นมี ID “overridelink” ซึ่งคุณสามารถตรวจสอบได้ในหน้าต่าง HTML ที่เปิดขึ้นโดยการกด F12 ดังที่แสดงในภาพหน้าจอด้านล่าง
คลิกที่ลิงค์โดยใช้วิธี driver.navigate() ด้วย Javaสคริปต์มีดังต่อไปนี้ :-
driver.navigate ().to ("javascript:document.getElementById('overridelink').click()");
วิธีที่ 2) วิธีที่สองค่อนข้างคล้ายกับโค้ดการจัดการ SSL ของ Chrome
DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); System.setProperty("webdriver.ie.driver","IEDriverServer.exe"); WebDriver driver = new InternetExplorerDriver(capabilities);
รหัสด้านบนจะช่วยจัดการข้อผิดพลาดใบรับรอง SSL ใน IE
⚠️ หมายเหตุเกี่ยวกับเวอร์ชัน: Internet Explorer 11 ถูกยกเลิกการใช้งานในเดือนมิถุนายน 2022 ลองจำลองสถานการณ์เดียวกันนี้กับ... Microsoft Edge ด้วย EdgeOptions หรือใช้งาน Edge ในโหมด IE ในกรณีที่แอปพลิเคชันรุ่นเก่าบางตัวยังคงต้องการใช้งานโหมดนี้อยู่





