สาเหตุที่ Chrome 57 ไม่โชว์ Green Bar สำหรับเว็บไซต์หลายแห่งที่ใช้ใบรับรองแบบ EV

สืบเนื่องจากประเด็นระหว่างกูเกิลกับไซแมนเทคเกี่ยวกับการออกใบรับรองดิจิตอลที่ไม่เป็นไปตามมาตรฐานมาเป็นเวลานาน (ทั้งที่ออกโดยไซแมนเทคเองและที่ออกโดย (อดีต) ตัวแทนของไซแมนเทค) ซึ่งทำให้กูเกิลได้เตรียมมาตรการเพื่อปกป้องผู้ใช้งานเว็บเบราว์เซอร์ Chrome เอาไว้แล้วนั้น ได้พบว่าการยกเลิกการแสดงสถานะ EV หรือที่เรียกกันว่าแถบ Green Bar ซึ่งเป็นหนึ่งในมาตรการที่กูเกิลได้เตรียมที่จะนำมาใช้นั้นเหมือนจะได้มีผลบังคับใช้ไปแล้วทั้งที่ยังไม่ถึงกำหนดเวลา โดยเฉพาะเว็บธนาคารในไทยซึ่งส่วนใหญ่จะใช้ใบรับรองแบบ EV ที่ออกโดยไซแมนเทคนั้น มีหลายเว็บที่พบว่าแถบ Green Bar ดังกล่าวได้หายไปแล้ว แต่ของบางเว็บก็ยังคงมีอยู่ ทำให้เกิดความสับสนว่านี่เป็นการเริ่มต้นแล้วของมาตรการการดังกล่าวของกูเกิลใช่หรือไม่

ซึ่งแท้จริงแล้วนั้นปัญหานี้เป็นปัญหาซึ่งไม่เกี่ยวข้องกันกับมาตรการข้างต้นที่กูเกิลได้เตรียมที่จะนำมาใช้ ปัญหานี้เป็นสิ่งที่ได้เกิดขึ้นมาก่อนแล้วเพียงแต่บังเอิญว่าเพิ่งได้มีการค้นพบในช่วงเวลาที่มาตรการนี้ออกมา (แต่ยังไม่มีผลบังคับใช้) พอดี โดยสาเหตุของปัญหาดังกล่าวนี้นั้นได้ถูกเปิดเผยโดยกูเกิลเองว่าเกิดจากการเรียง OID ผิดของใบรับรอง EV ที่ออกโดยไซแมนเทค โดย OID นี้จะอยู่ในส่วนของ X509 Certificate Policies ภายในใบรับรองเอง และจะเป็นตัวที่เบราว์เซอร์ใช้ในการตัดสินใจว่าจะขึ้นสถานะ EV ให้หรือไม่ โดย OID ที่ได้ผ่านการรับรองว่าเป็น EV นั้นอยู่มีเพียงไม่กี่ตัวเท่านั้น โดยแต่ละ CA จะมีกันเพียงคนละตัว หรือบางรายอาจมีถึงสองตัว และไม่ใช่ว่า CA ทุกเจ้าจะมี OID ที่เป็น EV นี้กันหมด ซึ่ง OID ที่เป็น EV ของไซแมนเทคนั้นก็คือ

2.16.840.1.113733.1.7.23.6 (VeriSign)
2.16.840.1.113733.1.7.48.1 (Thawte)
1.3.6.1.4.1.14370.1.6 (GeoTrust)

แต่ใบรับรอง EV ที่ออกโดยไซแมนเทคที่ใช้ root CA ของ VeriSign ในการรับรองนั้นได้มีการใส่ OID พิเศษเพิ่มเข้ามาคือ 2.23.140.1.1 ซึ่งปัญหาจะไม่เกิดถ้ามันไม่ใช่ตัวแรกในลิสต์ของ Certificate Policies ปัญหาเกิดขึ้น (สำหรับ Chrome 57 บน Windows และ Linux) เมื่อ OID 2.23.140.1.1 นี้มาแทรกอยู่ก่อน OID 2.16.840.1.113733.1.7.23.6 ใน Certificate Policies เพราะทำให้ Chrome คิดว่าใบรับรองนี้ไม่ใช่ใบรับรอง EV นั่นคือ Chrome จะเช็ค OID แรกเพียงตัวเดียว ในขณะที่เบราว์เซอร์ตัวอื่นเช่น Firefox อาจเช็คทุกตัวเพื่อหาดูว่าในลิสต์มี OID แบบ EV หรือเปล่า ถ้ามีก็จะโชว์ว่าเป็น EV ไม่ว่า OID ที่เป็น EV นั้นจะอยู่ลำดับใด

ซึ่งประเด็นนี้อาจเกิดการถกเถียงกันว่าใครผิด บางคนอาจมองว่า Chrome ผิดที่ไม่เช็คทุกๆ OID ในลิสต์แบบ Firefox แต่บางคนอาจมองว่าไซแมนเทคผิดที่ไม่เรียง OID หลักที่เป็น EV ขึ้นมาเป็น OID แรก (ในใบรับรองกลุ่มที่มีปัญหากับ Chrome) และไซแมนเทคผิดที่มีการะบวนการสร้างใบรับรองที่เหมือนมีสองมาตรฐาน คือมาตรฐานนึงเอา 2.16.840.1.113733.1.7.23.6 ขึ้นก่อนแล้วเอา 2.23.140.1.1 ตามหลัง แต่อีกมาตรฐานนึงดันเอา 2.23.140.1.1 มาขึ้นก่อนแล้วเอา 2.16.840.1.113733.1.7.23.6 ตามหลัง ซึ่งเป็นเรื่องที่ไม่มี consistency เอาเสียเลย พอๆกับการออกใบรับรองในภาพรวมที่ไม่ได้มาตรฐานนั่นเอง

สรุปว่าปัญหานี้เกิดเฉพาะกับ Chrome 57 (ไม่นับตัว Beta ซึ่งเป็น Chrome 58 และตัว Dev กับ Canary ซึ่งเป็น Chrome 59 ซึ่งทั้งหมดนี้ยังไม่ได้ทำการทดสอบ) และน่าจะเกิดเฉพาะบน Windows และ Linux แต่อาจไม่เกิดบน Mac และเกิดเฉพาะกับใบรับรอง EV ที่มี OID ที่ไม่ใช่ EV OID นำหน้าเป็นตัวแรก เช่นถ้าเป็นของไซแมนเทคที่ใช้ CA ของ VeriSign ก็ต้องให้ 2.16.840.1.113733.1.7.23.6 ขึ้นก่อน วิธีแก้ไขที่เร็วที่สุดน่าจะเป็นการขอออกใบรับรองใหม่ซึ่งน่าจะทำได้ทันทีจากทางฝั่งลูกค้าที่เจอปัญหานี้ หากออกใบใหม่แล้วยังเป็นเหมือนเดิมก็อาจต้องคุยกับทาง CA โดยอาจยกตัวอย่างใบรับรองที่ไม่มีปัญหาประกอบไป ซึ่งถ้าเป็นเว็บธนาคารในไทยที่ดังๆที่ไม่มีปัญหาก็เช่น KTB netbank, KK Biz e-Banking, ธนาคารแห่งประเทศไทย เป็นต้น ส่วนที่มีปัญหาก็เช่น K-Cyber, Bualuang iBanking, Citibank เป็นต้น

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

หากต้องการเช็คแบบเร็วๆว่าเว็บใดมีปัญหาบ้าง ก็อาจใช้ OpenSSL เช็คผ่าน Command Line ได้แบบนี้

ตัวอย่างของเว็บที่ใช้ใบรับรอง EV แบบที่ไม่มีปัญหากับ Chrome 57

openssl s_client -connect www.ktbnetbank.com:443 </dev/null 2>/dev/null | openssl x509 -text | grep -E "Issuer:|Subject:|Poli"

        Issuer: C = US, O = Symantec Corporation, OU = Symantec Trust Network, CN = Symantec Class 3 EV SSL CA - G3
        Subject: jurisdictionC = TH, businessCategory = Private Organization, serialNumber = DOC:19940324, C = TH, ST = Bangkok, L = Wattana, O = KRUNG THAI BANK PUBLIC COMPANY LIMITED, OU = KRUNG THAI BANK PUBLIC COMPANY LIMITED, CN = www.ktbnetbank.com
            X509v3 Certificate Policies:
                Policy: 2.16.840.1.113733.1.7.23.6
                Policy: 2.23.140.1.1

ตัวอย่างของเว็บที่ใช้ใบรับรอง EV แบบที่มีปัญหากับ Chrome 57

openssl s_client -connect online.kasikornbankgroup.com:443 </dev/null 2>/dev/null | openssl x509 -text | grep -E "Issuer:|Subject:|Poli"

        Issuer: C = US, O = Symantec Corporation, OU = Symantec Trust Network, CN = Symantec Class 3 EV SSL CA - G3
        Subject: jurisdictionC = TH, businessCategory = Private Organization, serialNumber = 0107536000315, C = TH, postalCode = 10140, ST = Bangkok, L = Ratburana, street = 1 Soi Rat Burana 27/1 Rat Burana Rd., O = KASIKORNBANK Public Co Ltd, OU = Retail And Sme E-Business Department, CN = online.kasikornbankgroup.com
            X509v3 Certificate Policies:
                Policy: 2.23.140.1.1
                Policy: 2.16.840.1.113733.1.7.23.6


from Blognone https://www.blognone.com/node/91267
via IFTTT