อ่าน 4 นาที
การเจรจาโปรโตคอลระดับแอปพลิเคชัน
การเจรจาโปรโตคอลระดับแอปพลิเคชัน ( ALPN ) เป็น ส่วนขยาย ของความปลอดภัยระดับการขนส่ง (TLS) ที่อนุญาตให้เลเยอร์แอปพลิเคชันเจรจาว่า ควรใช้ โปรโตคอล ใด ในการเชื่อมต่อที่ปลอดภัย...
การเจรจาโปรโตคอลระดับแอปพลิเคชัน
การเจรจาโปรโตคอลระดับแอปพลิเคชัน ( ALPN ) เป็น ส่วนขยาย ของความปลอดภัยระดับการขนส่ง (TLS) ที่อนุญาตให้เลเยอร์แอปพลิเคชันเจรจาว่า ควรใช้ โปรโตคอล ใด ในการเชื่อมต่อที่ปลอดภัย โดยไม่ต้องมีการส่งข้อมูลไปกลับเพิ่มเติม และเป็นอิสระจากโปรโตคอลระดับแอปพลิเคชัน ALPN ใช้ในการสร้าง การเชื่อมต่อ HTTP/2โดยไม่ต้องมีการส่งข้อมูลไปกลับเพิ่มเติม (ไคลเอนต์และเซิร์ฟเวอร์สามารถสื่อสารกันผ่านพอร์ตสองพอร์ตที่กำหนดไว้สำหรับ HTTPS ด้วยHTTP/1.1และอัปเกรดไปใช้ HTTP/2 หรือใช้งาน HTTP/1.1 ต่อไปได้โดยไม่ต้องปิดการเชื่อมต่อเริ่มต้น)
สนับสนุน
ALPN รองรับไลบรารีเหล่านี้:
- BSAFE Micro Edition Suite ตั้งแต่เวอร์ชัน 5.0 [ 1 ]
- GnuTLSตั้งแต่เวอร์ชัน 3.2.0 ที่วางจำหน่ายในเดือนพฤษภาคม 2013 [ 2 ]
- MatrixSSLตั้งแต่เวอร์ชัน 3.7.1 ที่วางจำหน่ายในเดือนธันวาคม 2014 [ 3 ]
- บริการรักษาความปลอดภัยเครือข่ายตั้งแต่เวอร์ชัน 3.15.5 ที่เผยแพร่ในเดือนเมษายน 2557 [ 4 ]
- OpenSSLตั้งแต่เวอร์ชัน 1.0.2 ที่วางจำหน่ายในเดือนมกราคม 2015 [ 5 ]
- LibreSSLตั้งแต่เวอร์ชัน 2.1.3 ที่วางจำหน่ายในเดือนมกราคม 2015 [ 6 ]
- mbed TLS (เดิมคือ PolarSSL) ตั้งแต่เวอร์ชัน 1.3.6 ที่วางจำหน่ายในเดือนเมษายน 2557 [ 7 ]
- s2nนับตั้งแต่เปิดตัวสู่สาธารณะครั้งแรกในเดือนมิถุนายน 2015
- wolfSSL (เดิมชื่อ CyaSSL) ตั้งแต่เวอร์ชัน 3.7.0 ที่วางจำหน่ายในเดือนตุลาคม 2558 [ 8 ]
- Go (ในแพ็คเกจไลบรารีมาตรฐาน crypto/tls) ตั้งแต่เวอร์ชัน 1.4 ที่วางจำหน่ายในเดือนธันวาคม 2014 [ 9 ]
- JSSEในJavaตั้งแต่ JDK 9 ที่วางจำหน่ายในเดือนกันยายน 2017 [ 10 ]ย้อนกลับไปยัง JDK 8 ที่วางจำหน่ายในเดือนเมษายน 2020 [ 11 ]
- Win32 SSPIตั้งแต่ Windows 8.1 และ Windows Server 2012 R2 เปิดตัวเมื่อวันที่ 18 ตุลาคม 2013 [ 12 ]
- Rustls [ 13 ]
ประวัติศาสตร์
การเจรจาพิธีสารครั้งต่อไป
ในเดือนมกราคม พ.ศ. 2553 Google ได้นำเสนอร่างมาตรฐาน IETF ที่อธิบายส่วนขยาย Next Protocol Negotiation TLS [ 14 ]ส่วนขยายนี้ถูกใช้เพื่อเจรจาการเชื่อมต่อ SPDY แบบทดลองระหว่าง Google Chrome และเซิร์ฟเวอร์บางส่วนของ Google เมื่อ SPDY พัฒนาขึ้น NPN ก็ถูกแทนที่ด้วย ALPN
การเจรจาโปรโตคอลระดับแอปพลิเคชัน
เมื่อวันที่ 11 กรกฎาคม 2557 ALPN ได้รับการเผยแพร่เป็นRFC 7301 ALPN แทนที่ส่วนขยาย Next Protocol Negotiation (NPN) [ 15 ]
TLS False Startถูกปิดใช้งานในGoogle Chromeตั้งแต่เวอร์ชัน 20 (2012) เป็นต้นไป ยกเว้นเว็บไซต์ที่มีส่วนขยาย NPN รุ่นก่อนหน้า[ 16 ]
ตัวอย่าง
ALPN เป็นส่วนขยายของ TLS ที่ส่งไปในการเชื่อมต่อ TLS ครั้งแรก 'Client Hello' โดยจะแสดงรายการโปรโตคอลที่ไคลเอ็นต์ (เช่น เว็บเบราว์เซอร์) รองรับ:
ประเภทการจับมือ: Client Hello ( 1 ) ความยาว: 141 เวอร์ชัน: TLS 1.2 ( 0x0303 ) สุ่ม: dd67b5943e5efd0740519f38071008b59efbd68ab3114587 ... ความยาวรหัสเซสชัน: 0 ความยาวชุดเข้ารหัส: 10 ชุดเข้ารหัส( 5 ชุด) ความยาววิธีการบีบอัด: 1 วิธีการบีบอัด( 1 วิธี) ความยาวส่วนขยาย: 90 [ ส่วนขยายอื่นๆถูกละเว้น] ส่วนขยาย: application_layer_protocol_negotiation ( len = 14 ) ประเภท: application_layer_protocol_negotiation ( 16 ) ความยาว: 14 ความยาวส่วนขยายALPN : 12 โปรโตคอลALPN ความยาวสตริงALPN : 2 โปรโตคอลALPN ถัดไป: h2 ความยาวสตริงALPN : 8 โปรโตคอลALPN ถัดไป: http / 1 . 1ข้อความ 'Server Hello' ที่ได้รับจากเว็บเซิร์ฟเวอร์จะประกอบด้วยส่วนขยาย ALPN ด้วย ซึ่งจะยืนยันว่าโปรโตคอลใดจะถูกใช้สำหรับคำขอ HTTP:
ประเภทการจับมือ: Server Hello ( 2 ) ความยาว: 94 เวอร์ชัน: TLS 1.2 ( 0x0303 ) สุ่ม: 44 e447964d7e8a7d3b404c4748423f02345241dcc9c7e332 ... รหัสเซสชันความยาว: 32 รหัสเซสชัน: 7667476 d1d698d0a90caa1d9a449be814b89a0b52f470e2d ... ชุดการเข้ารหัส: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ( 0xc02f ) วิธีการบีบอัด: null ( 0 ) ความยาวส่วนขยาย: 22 [ ส่วนขยายอื่นๆถูกละเว้น] ส่วนขยาย: application_layer_protocol_negotiation ( len = 5 ) ประเภท: application_layer_protocol_negotiation ( 16 ) ความยาว: 5 ความยาวส่วนขยายALPN : 3 โปรโตคอลALPN ความยาวสตริงALPN : 2 โปรโตคอลถัดไปALPN : h2ลิงก์ภายนอก
- ทะเบียนรหัสโปรโตคอล ALPN นั้นได้รับการดูแลโดย IANA ในฐานะส่วนขยายของ TLS
- draft-agl-tls-nextprotoneg-04 (NPN draft) (ปรับปรุงล่าสุด: พฤษภาคม 2555)
- RFC 7301 "ส่วนขยายการเจรจาโปรโตคอลระดับแอปพลิเคชันของ Transport Layer Security (TLS)"
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การเจรจาโปรโตคอลระดับแอปพลิเคชัน
การเจรจาโปรโตคอลระดับแอปพลิเคชัน ( ALPN ) เป็น ส่วนขยาย ของความปลอดภัยระดับการขนส่ง (TLS) ที่อนุญาตให้เลเยอร์แอปพลิเคชันเจรจาว่า ควรใช้ โปรโตคอล ใด ในการเชื่อมต่อที่ปลอดภัย...
การเจรจาพิธีสารครั้งต่อไป
ในเดือนมกราคม พ.ศ. 2553 Google ได้นำเสนอร่างมาตรฐาน IETF ที่อธิบายส่วนขยาย Next Protocol Negotiation TLS [ 14 ] ส่วนขยายนี้ถูกใช้เพื่อเจรจาการเชื่อมต่อ SPDY แบบทดลองระหว่าง Google Chrome และเซิร์ฟเวอร์บางส่วนของ Google เมื่อ SPDY พัฒนาขึ้น NPN ก็ถูกแทนที่ด้วย...
การเจรจาโปรโตคอลระดับแอปพลิเคชัน
เมื่อวันที่ 11 กรกฎาคม 2557 ALPN ได้รับการเผยแพร่เป็น RFC 7301 ALPN แทนที่ส่วนขยาย Next Protocol Negotiation (NPN) [ 15 ]
ตัวอย่าง
ALPN เป็นส่วนขยายของ TLS ที่ส่งไปใน การเชื่อมต่อ TLS ครั้งแรก 'Client Hello' โดยจะแสดงรายการโปรโตคอลที่ไคลเอ็นต์ (เช่น เว็บเบราว์เซอร์) รองรับ: