X.509

ในการเข้ารหัสข้อมูล X.509 เป็นรูปแบบมาตรฐาน ITU-T สำหรับโครงสร้างพื้นฐานกุญแจสาธารณะ (PKI) และโครงสร้างพื้นฐานการจัดการสิทธิ์ (PMI) ซึ่ง X.509 จะระบุหลากหลายหมวดหมู่ รูปแบบมาตรฐานสำหรับใบรับรองกุญแจสาธารณะ รายการเพิกถอนใบรับรอง ใบรับรอง attribute และขั้นตอนการตรวจสอบเส้นทางการรับรอง
==ประวัติและการใช้ประโยชน์==
X.509 ถูกออกมาใช้ในวันที่ 3 กรกฎาคม พ.ศ. 2531 และมีความเกี่ยวข้องกับมาตรฐาน X.500 ซึ่งก็ถือว่าเป็นระบบลำดับชั้นที่เข้มงวดของผู้มีอำนาจในการออกใบรับรอง (CAs) ในการออกใบรับรอง ซึ่งแตกต่างจากเว็บรูปแบบของความไว้วางใจเว็บ (Web of trust model) ยกตัวอย่างเช่น PGP ที่ทุกคน (ที่ไม่ใช่เพียงแค่ CAs) ซึ่งอาจจะลงนามและเป็นเครื่องยืนยันถึงความถูกต้องของใบรับรองของผู้อื่น รุ่นที่ 3 ของ X.509 จะรวมไปทั้งความยืดหยุ่นของโครงสร้างอื่นๆ เช่น bridge และ mesh เป็นต้น มันสามารถนำใช้แบบ Peer-to-Peer แต่แทบจะไม่เคยถูกใช้ ระบบ X.500 ถูก implement โดยประเทศอธิปไตย เพื่อบอกข้อมูลประจำตัวร่วมกันเพื่อบรรลุสนธิสัญญาร่วมกัน และ โครงสร้างพื้นฐานกุญแจสาธารณะของ IETF (X.509) หรือ PKIX คณะทำงานได้ทำการปรับมาตรฐานให้กับองค์กรที่มีความยืดหยุ่นมากขึ้นของอินเทอร์เน็ต ในความเป็นจริงใบรับรอง X.509 มักจะหมายถึง IETF ของใบรับรอง PKIX และข้อมูลส่วนตัว CRL ของมาตรฐานใบรับรอง X.509 version 3 ตามที่ระบุไว้ใน RFC 5280 ปกติจะเรียกว่า PKIX สำหรับระบบโครงสร้างพื้นฐานกุญแจสาธารณะ
==ใบรับรอง==
ในระบบ X.509 ผู้มีอำนาจออกใบรับรองจะออกใบรับรองที่เกี่ยวพันกับกุญแจสาธารณะที่มีชื่อแตกต่างกันในรูปแบบ X.500 หรือชื่ออื่นๆ เช่น e-mail หรือ DNS
ใบรับรองหลักที่น่าเชื่อถือขององค์กรสามารถแจกจ่ายไปยังให้กับพนักงานทุกคนเพื่อให้พวกเขาสามารถระบบ PKI ขององค์กร เบราว์เซอร์ เช่น Internet Explorer Firefox Opera Safari และ Chrome มาพร้อมกับชุดที่กำหนดไว้ของใบรับรองหลัก ดังนั้นใบรับรอง SSL จากผู้ขายรายใหญ่จะทำงานทันที ซึ่งมีผลกับนักพัฒนาเบราว์เซอร์ตรวจสอบ CAs ที่ได้รับความเชื่อถือบุคคลที่ 3 สำหรับเบราว์เซอร์ผู้ใช้
X.509 ยังรวมไปถึงการ implememt มาตรฐานสำหรับรายการเพิกถอนใบรับรอง (CRL) ซึ่งมักจะเพิกเฉยระบบโครงสร้างพื้นฐานกุญแจสาธารณะ (PKI) วิธีรับรอง IETF ในการตรวจสอบความถูกต้องของใบรับรองเป็นโพรโทคอลสถานะของใบรับรองออนไลน์ (OCSP) Firefox 3 ให้ OCSP ตรวจสอบโดยค่าเริ่มต้นของ Windows แต่ละรุ่น รวมไปถึง Vista และอื่นๆต่อมา
===โครงสร้างของใบรับรอง===
โครงสร้างเล็งเห็นตามมาตรฐานจะถูกแสดงในภาษาที่เป็นทางการคือบทคัดย่อไวยากรณ์
โครงสร้างของใบรับรองดิจิทัล X.509 v3 จะเป็นดังนี้
ใบรับรอง
*รุ่นของใบรับรอง
*หมายเลขลำดับ
*Algorithm ID
*ผู้ออกใบรับรอง
*ความถูกต้อง
**Not Before
**Not After
*หัวข้อ
*หัวข้อข้อมูลกุญแจสาธารณะ
**Algorithm กุญแจสาธารณะ
**หัวข้อกุญแจสาธารณะ
*ผู้ออกตัวเอกลักษณ์ (ถ้ามี)
*หัวข้อตัวเอกลักษณ์ (ถ้ามี)
*ส่วนขยาย (ถ้ามี)
**...
Algorithm ลายเซ็นใบรับรอง
ลายเซ็นใบรับรอง
การขยายแต่ละครั้งจะมี id เป็นของตัวเองถูกใช้แสดงเป็นตัวระบุตัวตน ซึ่งเป็นค่ารวมกับตัวบ่งชี้สำคัญและไม่สำคัญ ระบบการใช้ใบรับรองต้องปฏิเสธใบรับรองถ้าหากพบส่วนขยายที่สำคัญที่ไม่รู้จักหรือส่วนขยายที่สำคัญซึ่งประกอบไปด้วยข้อมูลที่ไม่สามารถดำเนินการได้ ส่วนขายที่ไม่สำคัญอาจถูกละเว้นถ้าหากยังไม่ได้การยอมรับ แต่ต้องดำเนินการในกระบวนการที่ได้การยอมรับ
โครงสร้างของรุ่นที่ 1 ถูกระบุใน RFC 1422
ITU-T แนะนำผู้ออกใบรับรองและผู้ระบุหัวข้อเอกลักษณ์ในเวอร์ชันที่ 2 ที่จะอนุญาตให้นำมาใช้ใหม่ของผู้ออกใบรับรองหรือชื่อเรื่องในภายหลัง ตัวอย่างการนำมาใช้ใหม่จะเกิดขึ้นเมื่อ CA ล้มละลายหรือถูกลบรายชื่อออกจากระบบ หลังจากบางครั้งที่ CA อื่นที่มีชื่อเดียวกันสามารถลงทะเบียนตัวเองถึงแม้ว่ามันจะไม่เกี่ยวข้องหน่วยงานนั้น อย่างไรก็ตาม IETF แนะนำว่าผู้ออกใบรับรองและชื่อเรื่องไม่ควรถูกนำมาใช้ใหม่ ดังนั้นในเวอร์ชันที่ 2 ไม่ได้ถูกนำไปใช้อย่างแพร่หลายในอินเทอรเน็ต
ส่วนต่อขยายถูกนำมาใช้ในเวอร์ชันที่ 3 CA สามารถใช้ส่วนขยายในการออกใบรับรองเพียงเพื่อวัตถุประสงค์เฉพาะ (เช่น เพื่อการลงนามวัตถุดิจิตอล) แต่ละส่วนขยายสามารถเป็นส่วนสำคัญหรือไม่สำคัญก็ได้ ถ้าส่วนขยายเป็นสิ่งสำคัญและระบบประมวลผลใบรับรองไม่ทำงาน ระบบต้องปฏิเสธใบรับรองทั้งหมด ส่วนขยายที่ไม่สำคัญสามารถปฏิเสธในขณะที่ระบบประมวลผลส่วนที่เหลือของใบรับรอง
ในทุกเวอร์ชัน หมายเลขจะต้องไม่ซ้ำกันสำหรับแต่ละใบรับรองที่ออกโดย CA เฉพาะ (ตามที่กล่าวไว้ใน RFC 2459)
===ส่วนต่อขยายที่แจ้งการใช้งานที่เฉพาะเจาะจงของใบรับรอง===
RFC 5280 (และก่อนหน้า) กำหนดจำนวนของส่วนต่อขยายของใบรับรองที่ระบุวิธีการรับรองจากที่ควรจะใช่ ส่วนใหญ่เป็นส่วนหนึ่งของ joint-iso-ccitt(2) ds(5) id-ce(29) และ OID บางส่วนพบมากที่สุด ระบุไว้ในข้อ 4.2.1 คือ:
ข้อจำกัดพื้นฐาน { id-ce 19 } จะใช้ในการระบุใบรับรองว่าเป็นของ CA
การใช้คีย์ {id-CE 15} ให้บิตแมปที่ระบุการดำเนินการเข้ารหัสลับซึ่งอาจดำเนินการโดยใช้กุญแจสาธารณะที่มีอยู่ในใบรับรอง ยกตัวอย่างเช่น มันอาจแสดงให้เห็นว่ากุญแจควรใช้ในการรองชื่อรับรอง แต่ไม่ได้ใช้เข้ารหัส
การใช้คีย์ขยาย {id-CE 37} จะถูกใช้ในใบรับรองทั่วไปเพื่อระบุวัตถุประสงค์ของกุญแจสาธารณะที่มีอยู่ในใบรับรอง มันมีรายชื่อของ OIDs แต่ละแห่งซึ่งบ่งบอกการใช้งานที่ได้รับอนุญาต ตัวอย่างเช่น {id-PKIX 3 1} แสดงให้เห็นว่า กุญแจมักจะถูกใช้บนเซิฟเวอร์ของการเชื่อมต่อ TLS หรือ SSL {id-PKIX 3 4} แสดงให้เห็นว่ากุญแจถูกใช้เพื่อรักษาความปลอดภัยของอีเมล
โดยทั่วไป ถ้าใบรับรองมีส่วนต่อขยายหลายส่วนของข้อจำกัดการใช้งาน ทุกคนต้องมีความพึงพอใจสำหรับการใช้งานที่กำหนดให้ตามความเหมาะสม RFC 5280 ให้ตัวอย่างที่เฉพาะเจาะจงของใบรับรองที่มีทั้ง keyUsage และ extendedKeyUsage ในกรณีนี้ทั้งคู่จะต้องได้รับการประมวลผลและใบรับรองที่สามารถนำมาใช้เฉพาะในกรณีที่ส่วนต่อขยายของทั้งสองมีความเกี่ยวข้องกันในการระบุการใช้งานของใบรับรอง
===ชื่อไฟล์ส่วนต่อขยายของใบรับรอง===
ชื่อไฟล์ทั่วไปของส่วนต่อขยายใบรับรอง X.509 คือ
.pem - (Privacy-enhanced Electronic Mail) ใบรับรองเข้ารหัสแบบ Base64 DER อยู่ระหว่างส่วนหัวและส่วนท้ายของใบรับรอง
.cer, .crt, .der - มักอยู่ในรูปแบบ DER binary แต่ใบรับรองที่เข้ารหัสแบบ Base64 เป็นเรื่องปกติ (ดู .pem ด้านบน)
.p7b, .p7c - PKCS#7 โครงสร้าง SignedData ที่ไม่มีข้อมูล เพียงใบรับรอง หรือ CRL
.p12 - PKCS#12 อาจมีใบรับรอง (สาธารณะ) และกุญแจส่วนตัว (ป้องกันด้วยรหัสผ่าน)
.pfx - PFX ต้นแบบของ PKCS#12 (มักจะมีข้อมูลในรูปแบบ PKCS#12 เช่นเดียวกับ PFX ที่สร้างขึ้นใน IIS)
PKCS#7 เป็นมาตรฐานสำหรับการลงนามหรือการเข้ารหัสข้อมูล (เรียกอย่างเป็นทางการ "ห่อ") ตั้งแต่ใบรับรองจำเป็นในการตรวจสอบลงนามข้อมูลก็เป็นไปได้ที่รวมไว้ในโครงสร้าง SignedData ไฟล์ .P7C เป็น degenerated โครงสร้าง SignedData โดยไม่มีข้อมูลใดๆที่จะลงนาม
PKCS#12 วิวัฒนาการมาจากมาตรฐานการแลกเปลี่ยนข้อมูลส่วนบุคคล (PFX) และถูกนำมาใช้ในการแลกเปลี่ยนข้อมูลส่วนตัวและสาธารณะในไฟล์เดียว
==Certificate chains and cross-certification==
A certificate chain (ดูแนวคิดเทียบเท่าของ "เส้นทางการรับรอง" ที่กำหนดโดย RFC 5280) เป็นรายการของใบรับรอง (โดยปกติจะเริ่มต้นด้วยการรับรองจากนิติบุคคล) ตามด้วยใบรับรอง CA (โดยปกติจะเป็นคนสุดท้ายที่ถูกลงนามด้วยตนเองในใบรับรอง) ที่มีคุณสมบัติดังต่อไปนี้
1. ผู้ออกแต่ละใบรับรอง (ยกเว้นคนสุดท้าย) ตรงกับหัวข้อใบรับรองถัดไปในรายการ
2. แต่ละใบรับรอง (ยกเว้นคนสุดท้าย) ควรจะได้รับการลงนามโดยคีย์ลับที่สอดคล้องกับใบรับรองต่อไปในห่วงโซ่ (เช่นลายเซ็นของใบรับรองหนึ่งใบสามารถตรวจสอบได้โดยใช้กุญแจสาธารณะที่มีอยู่ในใบรับรองดังต่อไปนี้)
3. ใบรับรองสุดท้ายในรายการต้องวางใจได้ ใบรับรองที่คุณไว้วางใจเพราะมันถูกส่งถึงคุณโดยบางขั้นตอนที่น่าเชื่อถือ
Certificate chains ถูกใช้เพื่อที่ตรวจสอบว่ากุญแจสาธารณะ (PK) ที่มีอยู่ในใบรับรองเป้าหมาย (ใบรับรองแรกใน chain) และข้อมูลอื่น ๆ ที่มีอยู่ในนั้นได้อย่างมีประสิทธิภาพ เพื่อที่ตรวจสอบให้แน่ใจว่าลายเซ็นบนใบรับรองเป้าหมายถูกรับรองโดยกุญแจสาธารณะ (PK) ที่มีอยู่ในใบรับรองดังกล่าว ซึ่งลายเซ็นถูกตรวจสอบโดยใช้ใบรับรองถัดไปจนถึงใบรับรองใบสุดท้าย ในขณะที่ใบรับรองสุดท้ายเป็นใบรับรองที่ไว้ใจได้ สุดท้ายมันจะพิสูจน์ว่าใบรับรองเป้าหมายสามารถเชื่อถือได้
คำอธิบายในวรรคก่อนหน้าเป็นมุมมองที่ง่ายในการตรวจสอบกระบวนการเส้นทางในใบรับรองตามที่กำหนดโดย RFC 5280 ซึ่งเกี่ยวกับการตรวจสอบเพิ่มเติม เช่นตรวจสอบความถูกต้องของวันที่ในใบรับรอง เป็นต้น
แม้ว่าใบรับรอง X.509 สามารถมีผู้ออกไดเพียงคนเดียว (ไม่สามารถมีลายเซ็น CA มากกว่า 1 ลายเซ็น) ซึ่งต่างจาก certificate chains สามารถมีอยู่สำหรับใบรับรองเป้าหมายเพราะว่าใบรับมากกว่า 1 ใบสามารถมีกุญแจสาธารณะเหมือนกันได้ นี่คือสิ่งสำคัญสำหรับ cross-certification ระหว่าง PKI ที่แตกต่างกันและการใช้งานอื่นๆ ดังตัวอย่างต่อไปนี้
===ตัวอย่างที่ 1 Cross-certification ที่ระดับ CA หลัก ระหว่างโครงสร้างกุญแจสาธารณะ===
นอกเหนือจาก "cert2.2 → cert2" ทางออก certificate chain ลำดับ 2 ที่ถูกต้องสำหรับ cert2.2 แล้ว "cert2.2 → cert2.1 → cert1" ซึ่งช่วยให้ cert2.2 (ออกโดย PKI 2) สามารถเชื่อถือได้โดย PKI 1
===ตัวอย่างที่ 2 ต่ออายุใบรับรอง CA===
เพื่อให้การเปลี่ยนแปลงที่สง่างามจากคู่กุญแจลงนามแบบเก่าไปสู่แบบใหม่ CA ควรออกใบรับรองซึ่งมีกุญแจสาธารณะเก่าที่ถูกลงนามโดยกุญแจลงนามส่วนตัวใหม่และใบรับรองที่ประกอบด้วยกุญแจสาธารณะแบบใหม่ซึ่งลงนามโดยกุญแจลงนามส่วนตัวแบบใหม่ ทั้งคู่เป็นตัวออกใบรับรองเองแต่ไม่ได้ลงนามเอง
เนื่องจากทั้ง cert1 และ cert3 มีกุญแจสาธารณะเดียวกัน (เก่า) มี 2 certificate chains ที่ถูกต้องสำหรับ cert5 "cert5 → cert1" and "cert5 → cert3 → cert2" และ analogously สำหรับ cert6 นี่จะช่วยใช้ใบรับรองผู้ใช้เก่า (เช่น cert5) และใบรับรองใหม่ (เช่น cert6) สามารถเชื่อถือได้โดยบุคคลที่มีใบรับรอง root CA ใหม่หรือเก่า เป็นที่ไว้วางใจในช่วงการเปลี่ยนแปลงไปเป็นกุญแจ CA ใหม่
==ตัวอย่างใบรับรอง X.509==
นี่คือตัวอย่างใบรับรอง X.509 ที่ผ่านการเข้ารหัสของ www.freesoft.org สร้างโดย OpenSSL เป็นใบรับรองขนาก 1kB มันถูกออกโดย Thawte (ตั้งแต่ได้มาโดย VeriSign และในปัจจุบัน Symantec เป็นเจ้าของ) เรื่องของมันประกอบด้วยรายละเอียดส่วนบุคคลจำนวนมากแต่ส่วนที่สำคัญที่สุดมักจะเป็นชื่อทั่วไป (CN) ซึ่งส่วนนี้ต้องเข้ากับโฮสต์ที่ได้รับการรับรอง รวมทั้งเป็นกุญแจสาธารณะ RSA (โมดูลัสและสัญลักษณ์สาธารณะ) ตามด้วยลายเซ็น คำนวณโดยการทำ Hash MD5 ของส่วนแรกในใบรับรองและการลงนาม (ประยุกต์กับกระบวนการการเข้ารหัส) โดยกุญแจส่วนตัว RSA ของ Thawte
ในการตรวจสอบใบรับรอง ใบรับรองต้องการใบรับรองลำดับที่ 2 เข้ากับผู้ออกใบรับรองลำดับที่ 1 (Thawte Server CA) ลำดับแรกใบรับรองตรวจสอบว่าใบรับรองลำดับที่ 2 คือประเภทของ CA นั่นหมายความว่ามันสามารถนำมาใช้ในการออกใบรับรองอื่นๆ โดยจะทำการตรวจสอบค่า attribute ของ CA ในส่วนต่อขยาย X.509 เวอร์ชัน 3 ดังนั้นกุญแจสาธารณะ RSA จากใบรับรอง CA จะถูกใช้ในการถอดรหัสลายเซ็นบนใบรับรองแรกที่ได้รับการ Hash MD5 ซึ่งต้องเข้ากับ Hash MD5 จริงที่ถูกคำนวณในส่วนที่เหลือของใบรับรอง
นี่คือตัวอย่างของใบรับรองที่ลงนามด้วยตัวเอง ในฐานะผู้ออกใบรับรองเช่นกัน ไม่มีวิธีการตรวจสอบใบรับรองยกเว้นตรวจสอบด้วยตัวมันเอง Thawte เป็นหนึ่งใน root certificate authorities ที่ได้รับการยอมรับจาก Microsoft และ Netscape ใบรับรองนี้มาพร้อมกับเว็บเบราว์เซอร์และเป็นที่ถือเชื่อถือได้โดยปริยาย ในตลอดการใช้งานโดยทั่วไปเชื่อถือใบรับรองซึ่งลงนามรับรองได้ (ตามที่มีในข้อจำกัดเบื้องต้นของ X.509 เวอร์ชัน 3) ซึ่งมันต้องเข้ากับกุญแจส่วนตัวที่ต้องดูแลรักษาอย่างใกล้ชิด
==ความปลอดภัย==
มีการค้นพบปัญหาเกี่ยวกับโครงสร้างกุญแจสาธารณะ (PKI) โดย Bruce Schneier  Peter Gutmann และผู้เชี่ยวชาญด้านความปลอดภัยคนอื่นๆ
===ความซับซ้อนใบรับรอง===
ผู้ใช้อินเทอร์เน็ตส่วนใหญ่ทั้งภาคธุรกิจและภาคสังคมขาดความสามารถพื้นฐานในความรู้และความเข้าใจในการเข้ารหัสข้อมูลเพื่อระงับการคุกคาม ความซับซ้อนนี้เป็นหนึ่งในจุดอ่อนของการเข้ารหัสกุญแจสาธารณะ ซึ่งไม่เป็นมิตรกับผู้ใช้และการใช้งานโดยรวมจึงมีผลกระทบกับประสิทธิภาพในการแก้ปัญหา เพื่อที่จะจัดการปัญหาดังกล่าว บริษัทซอฟต์แวร์รายใหญ่ได้รวบรวม root certificate ที่ได้รับการตรวจสอบเพื่อความปลอดภัยเข้าไปใน browser ผู้ใช้และระบบปฏิบัติการ เพื่อประโยชน์ในการใช้งานง่ายและการทำงานร่วมกัน ทุกเว็บเบราว์เซอร์และระบบปฏิบัติการในปัจจุบันใส่ใบรับรองทีได้การตรวจสอบ Trusted Root Store ของที่ออกใบรับรอง ใบรับรองที่ออกโดยองค์กรเหล่านี้หรือภายใต้องค์กรเหล่านี้ได้รับความเชื่อถือโดยอาศัยหน่วยงานเหล่านี้ถือว่าเชื่อถือได้และปลอภัยอย่างอัตโนมัติ เมื่อเทียบกับใบรับรองที่ออกโดยบุคคลที่ไม่รู้จัก ซึ่งจะเตือนว่าไม่น่าไว้วางใจ ทั้งหมดนี้ตีความลงในใบรับรองที่ออกโดยเจ้าหน้าที่ทั้งหมดซึ่งไม่รวมอยู่กับ root store วิธีการนี้พยายามที่จะทำข้อกำหนดของระบบความปลอดภัยอัตโนมัติและมีความโปร่งใส และที่สำคัญเอาออกจากผู้ใช้ การตัดสินใจสร้างกระบวนการเกี่ยวกับความน่าเชื่อถือของเว็บไซต์
มาตรฐาน X.509 ได้รับการออกแบบมาเพื่อรองรับโครงสร้าง X.500 แต่การใช้งานในวันนี้ cases center บริเวณรอบๆเว็บไซต์ คุณสมบัติหลายอย่างมีน้อยและไม่เกี่ยวข้องในทุกวันนี้ ข้อกำหนด X.509 มาจากการเป็นมากกว่าการทำงานและข้อมูลบรรทัดฐานจะถูกกระจายไปทั่วเอกสารจากส่วนมาตรฐานต่างๆ โปรไฟล์หลายคนได้รับการพัฒนาเพื่อแก้ปัญหานี้ แต่แนะนำปัญหาการทำงานร่วมกันและไม่ได้แก้ไขปัญหา
===จุดอ่อนสถาปัตยกรรม===
ใช้ไปรับรองที่ไม่ถูกขึ้นบัญชีดำ (ใช้ CRLs และ OCSP)
CRLs เป็นตัวเลือกที่ไม่ดีเพราะว่ามีขนาดใหญ่และรูปแบบกระจายที่ซับซ้อน
ความหมายของ OCSP กำกวมและขาดสถานะการถอนทางประวัติศาสตร์
การเพิกถอนใบรับรองไม่ถูกกล่าวต่อ
รวมปัญหา : การอ้างเอกลักษณ์ (รับรองผู้ตรวจสอบ) การอ้างแอททริบิวต์ และการอ้างสิทธิถูกรวมในที่เดียวกัน ทำให้เกิดความเป็นส่วนตัว การวางแผนนโยบาย และปัญหาการบำรุงรักษา
ปัญหาของผู้แทน : CAs ไม่สามารถจำกัดทางเทคนิค CAs ที่อยู่ภายใต้ จากการออกใบรับรองที่อยู่นอกเหนือ namespace และชุด attribute ซึ่ง X.509 ไม่ได้ใช้คุณสมบัตินี้ ดังนี้ CA จำนวนมากอยู่บนอินเทอร์เน็ต และแบ่งชนิด CAs และนโยบายของ CAs เป็นงานที่ยาก คณะผู้แทนของผู้มีอำนาจภายในองค์กรไม่สามารถจัดการได้ทั้งหมด ขณะที่ทำงานร่วมกัน
ปัญหาการรวมกัน : Certificate chains ซึ่งเป็นผลมาจากการอยู่ภายใต้ CAs bridge CAs และการลงนามแบบข้ามกันทำให้ถูกต้อง ซับซ้อน และสิ้นเปลืองในแง่ของเวลาการประมวลผล ความหมายการตรวจสอบเส้นทางอาจจะคลุมเครือ ลำดับชั้นที่มีกลุ่มบุคคลที่ 3 ที่เชื่อถือได้ เป็นรูปแบบเฉพาะ มันอาจจะไม่สะดวกเมื่อมีความสัมพันธ์ที่เชื่อถือได้อยู่แล้ว
===ปัญหาของเจ้าหน้าที่ใบรับรอง===
ซื้อใบรับรอง มักจะใช้ผู้ออกที่ถูกที่สุด ดังนั้นคุณภาพจะถูกใช้จ่ายในตลาดการแข่งขัน บางส่วนจะพูดต่อในส่วนต่อขยายใบรับรอง
เจ้าหน้าที่ใบรับรองปฏิเสธการรับประกันผู้ใช้เกือบทั้งหมด (รวมไปถึงกลุ่มบุคคล)
วันหมดอายุควรใช้เพื่อจำกัด เวลา ความยาวกุญแจ ถือว่าเพียงพอ parameter นี้ถูกทำลายโดยเจ้าหน้าที่ใบรับรองในการเรียกเก็บค่าธรรมเนียมลูกค้าเพิ่มเติม ข้อมูลนี้จะบรรจุภาระที่ไม่จำเป็นของผู้ใช้งานกับกุญแจ
ผู้ใช้ใช้โพรโทคอลร้องขอใบรับรองที่ไม่ได้ระบุเพื่อรับใบรับรองซึ่งระบุตำแหน่งไม่แน่ชัดในไดเรกทอรีที่ไม่ชัดเจนซึ่งไม่มีวิธีการที่แท้จริงที่จะยกเลิกได้
เช่นเดียวกันกับทุกธุรกิจ CAs จะครองครองอำนาจตามกฎของการดำเนินการเว็บไซต์ของพวกเขาและอาจถูกบังคับตามกฎที่พอจะประนีประนอมผลประโยชน์ลูกค้าและผู้ใช้ได้
หน่วยข่าวกรองทำให้ยังใช้ใบรับรองเท็จผ่านการประนีประนอมข้อยกเว้นของ CA เช่น Diginotar เพื่อดำเนินการผู้โจมตีตรงกลาง
===ปัญหาการใช้งาน===
ปัญหาการใช้งานเกิดจากข้อบกพร่องในการออกแบบ bugs การตีความที่แตกต่างกันของมาตรฐาน และขาดการทำงานร่วมกันของมาตรฐานที่ต่างกัน ปัญหาคือ
การใช้งานจำนวนมากปิดการตรวจสอบการเพิกถอน
*มองว่าเป็นอุปสรรค นโยบายไม่ได้ถูกบังคับใช้
*ถ้ามันเปิดอยู่ในทุกเบราว์เซอร์โดยค่าเริ่มต้น รวมทั้งการลงนามรหัส มันอาจจะผิดพลาดในโครงสร้างพื้นฐาน
DNS มีความซับซ้อนและความเข้าใจเล็กน้อย
ชื่อ rfc822 มี 2 สัญลักษณ์
ชื่อและข้อจำกัดนโยบายแทบจะไม่สนับสนุน
การใช้งานกุญแจถูกละเลย ใบรับรองแรกของรายการถูกนำมาใช้
การบังคับใช้ OID เป็นเรื่องยาก
คุณสมบัติไม่ควรทำงานที่สำคัญเพราะจะทำให้เกิดความผิดพลาดของลูกค้า
ไม่ระบุความยาวในคุณสมบัตินำไปสู่ข้อจำกัดเฉพาะผลิตภัณฑ์
===ข้อได้เปรียบ===
ใบรับรอง MD2-based ถูกนำมาใช้เป็นเวลานานและมีความเสี่ยงที่จะถูกโจมตีแบบ preimage ตั้งแต่ใบรับรองลงนามรับรองเอง ผู้โจมตีจะใช้ลายเซ็นและใช้มันเป็นใบรับรองกลาง
ในปี 2548 Arjen Lenstra และ Benne de Weger แสดงให้เห็นว่า ใช้ Hash Collision เพื่อจะสร้างใบรับรอง X.509 2 ชุด ที่มีลายเซ็นเหมือนกันและที่แตกต่างกันเฉพาะกุญแจสาธารณะ ทำได้โดย collision attack บน Hash MD5
ในปี 2551 Alexander Sotirov และ Marc Stevens นำเสนอ การสื่อสารที่โกลาหลในสภาคองเกรส การโจมตีอนุญาตให้พวกเขาสร้างเจ้าหน้าที่ใบรับรองปลอม ที่ได้รับการยอมรับจากเบราว์เซอร์ทั่วไป โดยการใช้ประโยชน์จากความจริงที่ว่า RapidSSL ยังคงออกใบรับรอง X.509 โดยขึ้นอยู่กับ MD5
ใบรับรอง X.509 ที่ขึ้นอยู่กับ SHA-1 ถือว่าปลอดภัยจนถึงล่าสุด ในเดือนเมษายน 2552 ในที่ประชุม Eurocrypt และนักวิจัยชาวออสเตรเลียของมหาวิทยาลัย Macquarie นำเสนอ การค้นหาเส้นทางที่แตกต่างกันอัตโนมัติโดยสำหรับ SHA-1
ใบรับรอง EV เป็นความช่วยเหลือที่จำกัด เพราะเบราว์เซอร์ไม่ได้มีนโยบายที่ไม่อนุญาตใบรับรอง EV
มีข้อผิดพลาดการดำเนินการกับ X.509 ซึ่งอนุญาต เช่น ปลอมชื่อเรื่องโดยใช้ สตริงสุดท้ายเป็นช่องว่างหรือการโจมตีรหัสในใบรับรอง
==มาตรฐานโครงสร้างพื้นฐานกุญแจสาธารณะสำหรับ X.509==
PKCS7 (การเข้ารหัสลับข้อความไวยากรณ์มาตรฐาน - กุญแจสาธารณะซึ่งพิสูจน์เอกลักษณ์สำหรับลงนาม และ/หรือ เข้ารหัสข้อความของโครงสร้างพื้นฐานกุญแจสาธารณะ)
Secure Sockets Layer (SSL)  - โพรโทคอลการเข้ารหัสสำหรับการสื่อสารที่ปลอดภัยทางอินเทอร์เน็ต
Online Certificate Status Protocol (OCSP) / Certificate Revocation List (CRL) - เหมาะสำหรับตรวจสอบเอกลักษณ์เฉพาะตัว
PKCS12 (มาตรฐานการแลกเปลี่ยนข้อมูลไวยากรณ์ส่วนตัว) - ใช้เก็บกุญแจส่วนตัวที่เหมาะสมใบรับรองกุญแจสาธารณะ
==เจ้าหน้าที่ใบรับรอง==
เจ้าหน้าที่ใบรับรอง (CA) เป็นนิติบุคคลที่ออกใบรับรองดิจิทัลสำหรับการใช้งานโดยบุคคลอื่นๆ มันเป็นตัวอย่างของบุคคลที่สามที่เชื่อถือได้ CA มีลักษณะของหลายแผนการโครงสร้างพื้นฐานกุญแจสาธารณะ (PKI)
มีหลาย CA เชิงพาณิชย์คิดค่าบริการ สถาบันการศึกษาและหน่วยงานรัฐบาลอาจมี CAs ของตัวและ CAs ฟรี
==การทำงานกลุ่มโครงสร้างพื้นฐานกุญแจสาธารณะ (X.509)==
การทำงานกลุ่มโครงสร้างพื้นฐานกุญแจสาธารณะ X.509 (PKIX) เป็นกลุ่มทำงานของ the Internet Engineering Task Force (IETF) ทุ่มเทเพื่อสร้าง RFCs และเอกสารมาตรฐานอื่นๆ ในประเด็นที่เกี่ยวกับโครงสร้างพื้นฐานกุญแจสาธารณะของใบรับรอง X.509 PKIX ก่อตั้งในช่วงฤดูใบไม้ร่วงปี 2538 ร่วมสถาบันมาตรฐานและเทคโนโลยีแห่งชาติ คณะทำงานถูกปิดลงในพฤศจิกายน 2556
==โพรโทคอลและมาตรฐานที่สนับสนุนใบรับรอง X.509==
TLS/SSL
S/MIME (Secure Multipurpose Internet Mail Extensions)
IPsec
SSH
Smart card
HTTPS
EAP
LDAP
Trusted Computing Group (TNC TPM NGSCB)
CableLabs (North American Cable Industry Technology Forum)
WS-Security
XMPP
Microsoft Authenticode
OPC UA
== ดูเพิ่ม ==
Abstract Syntax Notation One
Certificate policy
Certificate server
Code access security
Computer security
Communications security
Digital signature
Information security
ISO/IEC
Public Key Cryptography
Time stamp protocol
Trusted timestamping
Heartbleed
== ดูเพิ่ม ==
ITU-T Recommendation X.509 (2005): Information Technology - Open Systems Interconnection - The Directory: Authentication Framework, 08/05.
C. Adams, S. Farrell, "Internet X.509 Public Key Infrastructure: Certificate Management Protocols", RFC 2510, March 1999
Housley, R., W. Ford, W. Polk and D. Solo, "Internet X.509 Public Key Infrastructure: Certificate and CRL Profile", RFC 3280, April 2002. Obsoleted by RFC 5280, Obsoletes RFC 2459/ updated by RFC 4325, RFC 4630.
Housley, R., W. Ford, W. Polk and D. Solo, "Internet X.509 Public Key Infrastructure: Certificate and CRL Profile", RFC 2459, January 1999. Obsoleted by RFC 3280.
Arjen Lenstra, Xiaoyun Wang and Benne de Weger, On the possibility of constructing meaningful hash collisions for public keys, full version, with an appendix on colliding X.509 certificates, 2005 (see also [http://eprint.iacr.org/2005/067).
== แหล่งข้อมูลอื่น ==
ITU-T Recommendation X.509 : Information technology - Open Systems Interconnection - The Directory: Public-key and attribute certificate frameworks
Peter Gutmann's articles, an overview of PKI X.509 implementation notes [http://www.cs.auckland.ac.nz/~pgut001/pubs/x509guide.txt X.509 Style Guide
PKIX website
Enterprise Trust Integration and Web Services Security standards and demos 
FAQ from RSA Labs 
Sun Inc. - Secure code guidelines
RFC 4158 - Internet X.509 Public Key Infrastructure: Certification Path Building
CSR Decoder and Certificate Decoder - can be used to decode and examine an encoded CSR or certificate.
SSL Checker - can be used to test a certificate and that it has been installed correctly
Certificate Management Tool - Creating Your Own SSL Certificate Authority.
phpseclib: X.509 Decoder - decodes to an associative array whose keys correspond to X.509's ASN.1 description
Certificate Lookup  - ssl tool that can be used to verify and troubleshoot X.509 certificate installations or examine their contents
SSLTools Manager for Windows - Windows utility to create X.509 certificates for IIS or Exchange.
Web site with a free, graphical X509 Builder  tool for Windows.
Cryptographic protocols
ข้อเสนอแนะของ ITU-T
Public-key cryptography