บทช่วยสอน OpenVPN: การติดตั้งการกำหนดค่าเซิร์ฟเวอร์ VPN และการเชื่อมต่อ

OpenVPN เป็นข้ามแพลตฟอร์ม VPN (เครือข่ายส่วนตัวเสมือน) ไคลเอนต์ / เซิร์ฟเวอร์ มันเข้ากันได้กับ ไมโครซอฟท์ Windows, กนู / ลินุกซ์, ระบบปฏิบัติการ macOS และยังมีแอพพลิเคชั่นฟรีสำหรับ Android และ iOS. จุดแข็งอีกประการหนึ่งของ OpenVPN คือผู้ผลิตเราเตอร์บางรายกำลังรวมเข้ากับอุปกรณ์ของตนดังนั้นเราจึงมีความเป็นไปได้ในการกำหนดค่าเซิร์ฟเวอร์ OpenVPN บนเราเตอร์ของเรา สิ่งที่น่าสังเกตอีกประการหนึ่งก็คือตัวอย่างเช่น ไฟร์วอลล์ระบบปฏิบัติการที่ได้รับการสนับสนุนยังรวมไว้ด้วย PFsense และ OPNSense เป็นสองการกระจายที่แนะนำอย่างยิ่งให้ใช้ OpenVPN และตัวเลือกการกำหนดค่าที่เหลือ

มันคืออะไร?

OpenVPN เป็นซอฟต์แวร์ที่ใช้ซอฟต์แวร์ฟรีที่ช่วยให้เราสร้างเครือข่ายส่วนตัวเสมือน (VPN) เพื่อเชื่อมต่อกับเซิร์ฟเวอร์จากระยะไกล ซอฟต์แวร์นี้ช่วยให้เรากำหนดค่าสถาปัตยกรรม VPN ได้สองประเภท:

บทช่วยสอน OpenVPN

  • VPN การเข้าถึงระยะไกล: เรามีเซิร์ฟเวอร์ VPN ส่วนกลางและไคลเอนต์ VPN หลายตัวพร้อมซอฟต์แวร์ที่ติดตั้งบนคอมพิวเตอร์สมาร์ทโฟนแท็บเล็ตหรืออุปกรณ์อื่น ๆ ของคุณและทั้งหมดนี้เชื่อมต่อจากส่วนกลางกับเซิร์ฟเวอร์ VPN
  • Site-to-Site VPN: สถาปัตยกรรมนี้ช่วยให้เราสามารถสื่อสารระหว่างไซต์ต่างๆเพื่อแบ่งปันทรัพยากรผ่านเครือข่ายที่ปลอดภัยซึ่งได้รับการปกป้องด้วยการเข้ารหัสจากต้นทางถึงปลายทาง VPN ประเภทนี้ช่วยให้เราสามารถสื่อสารกับสำนักงานสำนักงานใหญ่ของ บริษัท ฯลฯ

คุณสมบัติที่สำคัญบางประการของ OpenVPN คือรองรับการกำหนดค่าที่ครอบคลุมทั้งเพื่อปรับปรุงประสิทธิภาพและความปลอดภัย มันขึ้นอยู่กับ SSL / TLS ดังนั้นเราจึงสามารถสร้างใบรับรองดิจิทัลสำหรับการตรวจสอบความถูกต้องของไคลเอนต์ VPN ได้นอกจากนี้เรายังสามารถพิสูจน์ตัวตนด้วยใบรับรองพร้อมชื่อผู้ใช้ / รหัสผ่านที่เราเพิ่มเข้าไปในระบบ OpenVPN นั้นง่ายต่อการกำหนดค่ามากกว่า IPsec และด้วยการสนับสนุนที่ดีจากชุมชนเราจะสามารถค้นหา OpenVPN บนระบบปฏิบัติการเดสก์ท็อปเซิร์ฟเวอร์และแม้แต่ในสมาร์ทโฟนและแท็บเล็ต

มันคืออะไรหา?

หากเราสร้างเซิร์ฟเวอร์ OpenVPN ในบ้านของเรามันสามารถช่วยให้เราเชื่อมต่ออินเทอร์เน็ตได้ในรูปแบบ วิธีที่ปลอดภัย จากเครือข่ายใดก็ได้ไม่ว่าจะเป็นแบบใช้สายหรือ อินเตอร์เน็ตไร้สายด้วยการเข้ารหัส WEP / WPA หรือไม่มีการเข้ารหัส การจราจรทั้งหมดจะเป็น เข้ารหัสผ่านอุโมงค์ จากคอมพิวเตอร์ของเราที่เราเชื่อมต่อกับบ้านของเราและจากที่นั่นจะไปที่อินเทอร์เน็ตเหมือนกับการเชื่อมต่ออินเทอร์เน็ตที่บ้าน เราต้องคำนึงถึงปัจจัยหลายประการเช่นการมีความเร็วในการอัพโหลดที่ดี (30Mbps ขึ้นไป) และการมีที่อยู่ IP สาธารณะในบ้านของเราเนื่องจากหากเรามี CG-NAT เราจะไม่สามารถเชื่อมต่อได้เพราะเราจะไม่ สามารถทำการส่งต่อพอร์ตในเราเตอร์ได้

ด้วยการติดตั้งเซิร์ฟเวอร์ OpenVPN ในบ้านของเราเรายังสามารถเข้าถึงแต่ละทรัพยากรที่ใช้ร่วมกันที่เรามีเช่นเซิร์ฟเวอร์ Samba, FTP และแม้กระทั่งเข้าถึงเครื่องพิมพ์, กล้อง IP ที่เราเชื่อมต่อเป็นต้นการอนุญาตการเข้าถึงทั้งหมดจะเป็น ราวกับว่าเราอยู่ในบ้านของเรา OpenVPN เป็นโซลูชันสำหรับ VPN ที่ใช้การเชื่อมต่อเลเยอร์ 2 หรือ 3 ขึ้นอยู่กับโหมดการเชื่อมต่อที่เลือกซึ่งจะทำงานไม่ทางใดก็ทางหนึ่งนอกจากนี้รายละเอียดที่สำคัญคือระบบปฏิบัติการส่วนใหญ่ในปัจจุบันรองรับ OpenVPN แม้ว่าจะไม่ใช่ โดยปกติผู้ผลิตฮาร์ดแวร์สำหรับไฟร์วอลล์หรือเราเตอร์จะรวมเข้าด้วยกัน

OpenVPN ใช้ชุดของโปรโตคอล SSL / TLS ที่ทำงานที่เลเยอร์การขนส่งและเรามีการดำเนินการสองประเภท:

  • TUN : TUN คอนโทรลเลอร์เลียนแบบอุปกรณ์แบบจุดต่อจุดซึ่งใช้ในการสร้าง อุโมงค์เสมือนที่ทำงานด้วยโปรโตคอล IP . ด้วยวิธีนี้แพ็กเก็ตทั้งหมดที่ขนส่งผ่านสามารถถูกห่อหุ้มเป็นเซ็กเมนต์ TCP หรือดาต้าแกรม UDP (ภายหลังคุณจะเห็นว่าเราเลือก UDP แทน TCP และคุณจะถามว่าทำไมเนื่องจาก TCP เชื่อมต่อเชื่อถือได้และมุ่งเน้นไปที่การเชื่อมต่อ ). เครื่องที่อยู่หลังปลายแต่ละด้านของลิงก์จะอยู่ในเครือข่ายย่อยที่แตกต่างกัน
  • TAP : จำลองอินเทอร์เฟซเครือข่ายอีเทอร์เน็ตหรือที่เรียกกันทั่วไปว่าบริดจ์หรือบริดจ์โหมดอุโมงค์เสมือนเหล่านี้ ห่อหุ้มแพ็กเก็ตอีเทอร์เน็ตโดยตรง . สถานการณ์นี้อนุญาตให้บรรจุผ้าที่แตกต่างจาก IP เครื่องที่อยู่หลังปลายแต่ละด้านของลิงก์สามารถทำงานเป็นส่วนหนึ่งของซับเน็ตเดียวกันได้ (หากใช้โปรโตคอล IP) โหมดการทำงานของบริดจ์มีประโยชน์อย่างยิ่งในการเชื่อมโยงผู้ใช้ระยะไกลเนื่องจากสามารถเชื่อมต่อกับเซิร์ฟเวอร์เดียวกันและแทบจะเป็นส่วนหนึ่งของเครือข่ายหลักอย่างไรก็ตามหากเครือข่ายส่วนตัวที่ต้นทางเชื่อมต่อตรงกับปลายทางเราจะมีปัญหาในการกำหนดเส้นทาง และการสื่อสารจะไม่ทำงาน

ในคู่มือเราจะใช้ TUN และดูว่าเราสร้างเครือข่ายย่อยเสมือน 10.8.0.0/24 ที่ซึ่งไคลเอนต์ OpenVPN จะอยู่ที่ใดเมื่อเชื่อมต่อ ด้วยวิธีนี้จะง่ายกว่ามากในการระบุไคลเอนต์ VPN ที่เราเชื่อมต่อในเครือข่ายท้องถิ่น

ในคู่มือนี้ฉันจะอธิบายวิธีการทำ GNU / Linux (ใน Debian 10) แม้ว่าโดยพื้นฐานแล้วจะเหมือนกันสำหรับ Windows เฉพาะคำสั่งในคอนโซล (cmd.exe) ใบรับรองและคีย์เปลี่ยนไปเหมือนกันทั้งคู่ นั่นคือคุณสามารถสร้างทุกอย่างในรูปแบบ GNU / Linux แล้วส่งต่อไปยัง Windows ในการใช้งาน (ไคลเอนต์หรือเซิร์ฟเวอร์) คุณจะต้องเปลี่ยนไฟล์ ไคลเอนต์ / เซิร์ฟเวอร์ นามสกุล .conf เป็น. avpn แม้ว่าในเวอร์ชันล่าสุด OpenVPN สำหรับ Windows จะอนุญาตให้เราจดจำและใช้ไฟล์คอนฟิกูเรชัน. config ได้อยู่แล้วดังนั้นเราจะไม่ต้องเปลี่ยนนามสกุล

ในคู่มือนี้ฉันจะแสดงวิธีสร้างการกำหนดค่า OpenVPN ที่ปลอดภัยมากปรับแต่งอัลกอริธึมการเข้ารหัสแบบสมมาตรไม่สมมาตรและแฮช ด้วยวิธีนี้เราสามารถเข้ารหัสการสื่อสารที่ดีที่สุดได้

สรุปการเข้ารหัสที่จะใช้

  • ใบรับรองดิจิทัล : เราจะใช้ EC (เส้นโค้งรูปไข่) สำหรับการสร้างไฟล์ โครงสร้างพื้นฐานคีย์สาธารณะ . เราจะสร้างทั้งใบรับรองของ CA (ผู้ออกใบรับรอง) ตลอดจนใบรับรองของเซิร์ฟเวอร์และไคลเอนต์ VPN ที่ต้องการเชื่อมต่อ อัลกอริทึม EC ที่ใช้คือ secp521r1 แม้ว่าเราจะมีอื่น ๆ อีกมากมาย อัลกอริทึมแฮชที่เราจะใช้จะเป็น SHA512 . รายละเอียดที่สำคัญคือไคลเอนต์ / เซิร์ฟเวอร์ OpenVPN บางตัวเท่านั้นที่รองรับเราต้องมีการอัปเดต OpenVPN และไลบรารีการเข้ารหัส แต่ปัจจุบันพบว่าตัวเองอยู่ในสถานการณ์ที่ไม่สามารถทำงานร่วมกันได้
  • ช่องควบคุม OpenVPN : เราจะใช้ TLS 1.2 เป็นอย่างน้อยและใช้ PFS (Perfect Forward Secrecy) ตาม Diffie-Hellmann ที่มีเส้นโค้งวงรี (ECDHE) เสมอ นั่นคือเราจะใช้ชุดการเข้ารหัสลับที่ปลอดภัยที่เลือกเช่น TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384 หากคุณต้องการตรวจสอบว่าเซิร์ฟเวอร์หรือไคลเอนต์ของคุณรองรับการเข้ารหัสประเภทนี้หรือไม่คุณควรใส่คอนโซล“ openvpn –show-tls”
  • ช่องข้อมูล OpenVPN : เราจะใช้ไฟล์ AES-256-GCM อัลกอริทึมการเข้ารหัสแบบสมมาตรซึ่งเป็นระบบที่ปลอดภัยที่สุดในปัจจุบันซึ่งรวมอยู่ใน OpenVPN 2.4 และใหม่กว่า หากคุณต้องการตรวจสอบว่าเซิร์ฟเวอร์หรือไคลเอนต์ของคุณรองรับการเข้ารหัสประเภทนี้หรือไม่คุณต้องใส่คอนโซล« openvpn – แสดงรหัส «. หากเราใช้ AES-256-GCM เป็นการเข้ารหัสช่องข้อมูลเราจะไม่ใช้อัลกอริทึม HASH ใด ๆ เนื่องจากเป็น AEAD อย่างไรก็ตามหากเราใช้ AES-256-CBC เราจะใช้ SHA512

นอกเหนือจากมาตรการรักษาความปลอดภัยเหล่านี้เราจะรวมลายเซ็น HMAC เพิ่มเติมสำหรับการเจรจา TLS ครั้งแรกด้วยวิธีนี้เราจะปกป้องระบบจากการโจมตีปฏิเสธบริการที่เป็นไปได้การโจมตี UDP Port Flooding และการโจมตี TCP SYN เมื่อเชื่อมต่อกับเซิร์ฟเวอร์หากไคลเอนต์ไม่มีลายเซ็น HMAC ที่ถูกต้องจะถูกบล็อก ในเวอร์ชันก่อนหน้าของ OpenVPN 2.4 คำสั่งคือ TLS-รับรองความถูกต้อง ซึ่งรับผิดชอบเฉพาะการตรวจสอบสิทธิ์ของคีย์ที่แชร์ล่วงหน้าที่สร้างโดย OpenVPN เอง ตอนนี้ในเวอร์ชันที่สูงกว่า OpenVPN 2.4 เรียกว่า tls-crypt.php ความแตกต่างที่สำคัญคือนอกเหนือจากการตรวจสอบสิทธิ์แล้วยังเข้ารหัสช่องสัญญาณเพื่อไม่ให้ใครจับคีย์ที่แชร์ล่วงหน้าดังกล่าวได้ การกำหนดค่าคล้ายกันมากการสร้างคีย์จะเหมือนกันทุกประการในทั้งสองอย่าง

ในที่สุดเราจะใช้โปรโตคอล UDP แทน TCP เนื่องจากมีความแข็งแกร่งกว่าในการต่อต้านการโจมตีแบบปฏิเสธบริการเราต้องจำไว้ว่า UDP ไม่เชื่อมต่อไม่น่าเชื่อถือและเน้นการเชื่อมต่อ อย่างไรก็ตามเราสามารถใช้ TCP ได้โดยไม่มีปัญหาใด ๆ เพื่อให้ VPN มีประโยชน์ทั้งหมดของโปรโตคอลนี้

ขั้นตอนในการทำงานกับ OpenVPN

ด้านล่างนี้คุณจะสามารถดูรายละเอียดวิธีการติดตั้งซอฟต์แวร์นี้และทุกสิ่งที่คุณต้องการเพื่อเริ่มต้นใช้งานด้วยความปลอดภัยที่ดีที่สุดที่โซลูชันนี้มีให้เพื่อสร้างเครือข่ายส่วนตัวเสมือน

ดาวน์โหลดและติดตั้ง

สิ่งแรกที่เราต้องทำคือติดตั้ง OpenVPN บนคอมพิวเตอร์ของเราไม่ว่าจะกับ Windows หรือ Linux หากคุณใช้ Windows คุณต้องไปที่ไฟล์ เว็บไซต์ดาวน์โหลด OpenVPN อย่างเป็นทางการ และติดตั้งทุกอย่างในวิซาร์ดการติดตั้ง หากคุณใช้ระบบปฏิบัติการเช่น Debian (เราจะใช้ Debian 10 ตลอดคู่มือนี้) คุณจะต้องป้อนคำสั่งต่อไปนี้:

sudo apt update

sudo apt ติดตั้ง openvpn

ดาวน์โหลด Easy-RSA 3 สำหรับใบรับรอง

เมื่อติดตั้งแล้วเราต้องดาวน์โหลดชุดซอฟต์แวร์ Easy-RSA 3 ชุดซอฟต์แวร์นี้ใช้ในการสร้างใบรับรองดิจิทัลได้อย่างง่ายดายและรวดเร็ว เราสามารถปรับเปลี่ยนความยาวของคีย์ประเภทของคีย์ได้หากต้องการใส่รหัสผ่านให้กับคีย์ส่วนตัวเป็นต้น เว็บไซต์อย่างเป็นทางการของโครงการ Easy-RSA 3 บน GitHub คุณมีข้อมูลทั้งหมดและความเป็นไปได้ในการดาวน์โหลดไฟล์. zip พร้อมทุกอย่าง

หากคุณใช้ระบบ Linux เราขอแนะนำให้ใช้คำสั่ง wget เพื่อดาวน์โหลดไฟล์. zip:

wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz

จากนั้นเราต้องแตกไฟล์ที่ดาวน์โหลดมานี้และเข้าสู่โฟลเดอร์เพื่อเริ่มกำหนดค่าไฟล์ vars

tar -zxvf EasyRSA-3.0.8.tgz

กำหนดค่า Easy-RSA 3 « vars »

พื้นที่ vars.ตัวอย่าง ไฟล์เป็นศูนย์กลางของการกำหนดค่าทั้งหมดของใบรับรองซึ่งเป็นที่ที่เราต้องกำหนดว่าเราต้องการสร้างใบรับรองตาม RSA หรือตาม EC นอกจากนี้ยังช่วยให้เราสามารถลงนามในใบรับรองกับ SHA256 หรือ SHA512 ร่วมกับผู้อื่นได้ นั่นคือเราต้องกำหนดค่าไฟล์การกำหนดค่านี้ให้ถูกต้องเพื่อสร้างใบรับรองดิจิทัลในภายหลัง

สิ่งแรกที่เราต้องทำคือคัดลอกไฟล์ vars.example ในโฟลเดอร์เดียวกันที่มีชื่อ "vars" หากเราไม่มีชื่อ "vars" นี้จะใช้ไม่ได้ นอกจากนี้เรายังมีความเป็นไปได้ที่จะเปลี่ยนชื่อไฟล์ vars.example ใน "vars" แต่เราขอแนะนำให้คุณทำการสำรองข้อมูลไว้ดีกว่าในกรณีที่คุณลบบางสิ่งออกไปแล้วมันไม่ได้ผลสำหรับคุณ

ไปที่โฟลเดอร์หลักของ Easy-RSA3 และคัดลอกไฟล์ด้วยวิธีนี้:

cp vars.example vars

เมื่อเรามีไฟล์ "vars" แล้วเราต้องแก้ไขด้วยโปรแกรมแก้ไขไฟล์ใด ๆ ผ่านคอนโซลหรืออินเทอร์เฟซแบบกราฟิกเราจะใช้นาโนเนื่องจากมันง่าย ในไฟล์คอนฟิกูเรชัน« vars »ต่อไปนี้คุณสามารถดูว่า EC จะมีหน้าตาอย่างไรด้วยอัลกอริทึม secp521r1 ซึ่งเซ็นชื่อด้วย SHA512 และเราได้ใช้ DN (Distinguished Name) โดยใส่ CN (ชื่อสามัญ) แทน«ข้อมูลองค์กร»ทั่วไปในขณะที่เรา เคยทำมาก่อนด้วยวิธีนี้เราอำนวยความสะดวกในการสร้างใบรับรองอย่างไรก็ตามเราสามารถทำได้โดยระบุข้อมูลองค์กรทั่วไป

ในไฟล์นั้นมีความคิดเห็นต้นฉบับเป็นภาษาอังกฤษและในภาษาสเปนเราได้ใส่ไว้เพื่ออำนวยความสะดวกในการระบุตำแหน่งของสิ่งที่ต้องแก้ไข รายละเอียดที่สำคัญมาก WordPress จะใส่สัญลักษณ์เหล่านี้โดยอัตโนมัติ << และ >> เมื่อควรใส่เครื่องหมายคำพูดคู่: »

# การตั้งค่าพารามิเตอร์ Easy-RSA 3

# หมายเหตุ: หากคุณติดตั้ง Easy-RSA จากตัวจัดการแพ็คเกจของ distro อย่าแก้ไข
# ไฟล์นี้แทน - คุณควรคัดลอกไดเรกทอรี easy-rsa ทั้งหมด
# ไปยังตำแหน่งอื่นเพื่อไม่ให้การอัปเกรดในอนาคตลบล้างการเปลี่ยนแปลงของคุณ

# วิธีใช้ไฟล์นี้
#
# vars.example มีตัวอย่างในตัวสำหรับการตั้งค่า Easy-RSA คุณต้องชื่อ
# ไฟล์นี้ 'vars' หากคุณต้องการใช้เป็นไฟล์กำหนดค่า ถ้าคุณทำ
# ไม่มันจะไม่ถูกอ่านโดยอัตโนมัติเมื่อคุณเรียกใช้คำสั่ง easyrsa
#
# ไม่จำเป็นต้องใช้ไฟล์กำหนดค่านี้เว้นแต่คุณต้องการเปลี่ยนแปลง
# ค่าเริ่มต้นในการดำเนินงาน ค่าเริ่มต้นเหล่านี้ควรใช้ได้สำหรับการใช้งานจำนวนมากโดยไม่ใช้
# ต้องคัดลอกและแก้ไขไฟล์ 'vars'
#
# การตั้งค่าที่แก้ไขได้ทั้งหมดจะแสดงความคิดเห็นและเริ่มต้นด้วยคำสั่ง
# 'set_var' - หมายถึงคำสั่ง set_var ใด ๆ ที่ไม่มีการใส่ความคิดเห็น
# แก้ไขโดยผู้ใช้ หากคุณพอใจกับค่าเริ่มต้นก็ไม่จำเป็นต้องทำ
# กำหนดค่าเป็นค่าเริ่มต้น

# หมายเหตุสำหรับผู้ใช้ WINDOWS
#
# Paths สำหรับ Windows * MUST * ใช้เครื่องหมายทับไปข้างหน้าหรือเลือก double-esscaped
# แบ็กสแลช (แนะนำให้ใช้เครื่องหมายทับไปข้างหน้าเดียว) ซึ่งหมายถึงเส้นทางของคุณไปยัง
# ไบนารี openssl อาจมีลักษณะดังนี้:
#“ C: / Program Files / OpenSSL-Win32 / bin / openssl.exe”

# แม่บ้านทำความสะอาดเล็กน้อย: อย่าแก้ไขส่วนนี้
#
# Easy-RSA 3.x ไม่ได้เข้าสู่สิ่งแวดล้อมโดยตรง
# ร้องเรียนหากผู้ใช้พยายามทำสิ่งนี้:
ถ้า [-z“ $ EASYRSA_CALLER”]; แล้ว
เสียงสะท้อน“ ดูเหมือนว่าคุณกำลังจัดหาไฟล์ 'vars' ของ Easy-RSA” > & 2
เสียงสะท้อน«สิ่งนี้ไม่จำเป็นอีกต่อไปและไม่ได้รับอนุญาต ดูส่วนที่เรียกว่า»> & 2
สะท้อน“ 'วิธีใช้ไฟล์นี้' ใกล้ความคิดเห็นด้านบนเพื่อดูรายละเอียดเพิ่มเติม " > & 2
ส่งคืน 1
fi

# ทำการแก้ไขของคุณด้านล่างจุดนี้

# ตัวแปรนี้ใช้เป็นตำแหน่งฐานของไฟล์คอนฟิกูเรชันที่ต้องการ
# easyrsa. ตัวแปรเฉพาะเพิ่มเติมสำหรับไฟล์เฉพาะ (เช่น EASYRSA_SSL_CONF)
# อาจแทนที่ค่าเริ่มต้นนี้
#
# ค่าเริ่มต้นของตัวแปรนี้คือตำแหน่งของสคริปต์ easyrsa
# เองซึ่งเป็นที่ตั้งของไฟล์การกำหนดค่าในไฟล์
# ต้นไม้ easy-rsa

#set_var EASYRSA“ $ {0% / *}”

# หากคำสั่ง OpenSSL ของคุณไม่อยู่ใน PATH ของระบบคุณจะต้องกำหนดไฟล์
# เส้นทางไปที่นี่ โดยปกติหมายถึงเส้นทางแบบเต็มไปยังไฟล์ปฏิบัติการมิฉะนั้น
# คุณอาจไม่ได้กำหนดไว้ที่นี่และจะใช้ค่าเริ่มต้นที่แสดง
#
# ผู้ใช้ Windows อย่าลืมใช้เส้นทางที่มีเครื่องหมายทับ (หรือ Escape
# back-slashes.) ผู้ใช้ Windows ควรประกาศเส้นทางแบบเต็มไปยัง openssl
# ไบนารีที่นี่หากไม่ได้อยู่ใน PATH ของระบบ

#set_var EASYRSA_OPENSSL“ openssl”
#
# ตัวอย่างนี้อยู่ในไวยากรณ์ของ Windows - แก้ไขเส้นทางของคุณหากไม่ได้ใช้ PATH:
#set_var EASYRSA_OPENSSL“ C: / Program Files / OpenSSL-Win32 / bin / openssl.exe”

# แก้ไขตัวแปรนี้เพื่อชี้ไปที่ไดเร็กทอรีคีย์ที่จะสร้างขึ้นในไม่ช้า โดย
# default ซึ่งจะเป็น“ $ PWD / pki” (เช่นไดเรกทอรีย่อย“ pki” ของไฟล์
# ไดเรกทอรีที่คุณอยู่ในปัจจุบัน)
#
# คำเตือน: init-pki จะทำ rm -rf บนไดเร็กทอรีนี้ดังนั้นโปรดกำหนด
# ถูกต้อง! (โหมดโต้ตอบจะแจ้งก่อนดำเนินการ)

#set_var EASYRSA_PKI“ $ PWD / pki”

# กำหนดโหมด X509 DN
# ใช้เพื่อปรับองค์ประกอบที่รวมอยู่ในช่อง Subject เป็น DN
# (นี่คือ« Distinguished Name »)
# โปรดทราบว่าในโหมด cn_only จะไม่มีการใช้ฟิลด์องค์กรเพิ่มเติมด้านล่าง
#
# ทางเลือกคือ:
# cn_only - ใช้เพียงค่า CN
# org - ใช้ "ดั้งเดิม" ประเทศ / จังหวัด / เมือง / องค์กร / OU / อีเมล / รูปแบบ CN

#ELEGIMOS cn_only สำหรับการสร้างใบรับรอง

set_var EASYRSA_DN“ cn_only”

# ช่ององค์กร (ใช้กับโหมด 'องค์กร' และละเว้นในโหมด 'cn_only')
# นี่คือค่าเริ่มต้นสำหรับฟิลด์ที่จะวางไว้ในไฟล์
# ใบรับรอง อย่าปล่อยให้ฟิลด์ใด ๆ เหล่านี้ว่างแม้ว่าจะมีการโต้ตอบ
# คุณสามารถข้ามฟิลด์ใดฟิลด์หนึ่งได้โดยพิมพ์«. » สัญลักษณ์ (ไม่ถูกต้องสำหรับ
# อีเมล)

#set_var EASYRSA_REQ_COUNTRY“ เรา”
#set_var EASYRSA_REQ_PROVINCE“ แคลิฟอร์เนีย”
#set_var EASYRSA_REQ_CITY“ ซานฟรานซิสโก”
#set_var EASYRSA_REQ_ORG“ Copyleft Certificate Co”
#set_var EASYRSA_REQ_EMAIL“ me@example.net”
#set_var EASYRSA_REQ_OU“ หน่วยองค์กรของฉัน”

# เลือกขนาดเป็นบิตสำหรับคู่คีย์ของคุณ ค่าที่แนะนำคือ 2048 การใช้
คีย์ # 2048 บิตถือว่าเพียงพอสำหรับหลายปีในไฟล์
# อนาคต. คีย์ขนาดใหญ่จะทำให้การเจรจา TLS ช้าลงและสร้างคีย์ / พารามิเตอร์ DH
# รุ่นใช้เวลานานกว่ามาก ค่าที่สูงถึง 4096 ควรได้รับการยอมรับโดยส่วนใหญ่
# ซอฟต์แวร์ ใช้เฉพาะเมื่อ crypto alg เป็น rsa (ดูด้านล่าง)

#set_var ESYRSA_KEY_SIZE 2048

# โหมด crypto เริ่มต้นคือ rsa; ec สามารถเปิดใช้งานการรองรับเส้นโค้งรูปไข่
# โปรดทราบว่าซอฟต์แวร์บางตัวไม่รองรับ ECC ดังนั้นโปรดใช้ความระมัดระวังเมื่อเปิดใช้งาน
# ตัวเลือกสำหรับ crypto alg คือ: (แต่ละตัวเลือกเป็นตัวพิมพ์เล็ก)
# * ร.ศ
# * ฯลฯ

# เราเลือก ELIPTICAL CURVE สำหรับการสร้างใบรับรองโดยค่าเริ่มต้นคือ RSA

set_var EASYRSA_ALGO เป็นต้น

# เรากำหนดชื่อของตัวเลือกการโค้งแบบ ELIPTICAL CURVE

set_var EASYRSA_CURVE วินาที

# เรากำหนดค่าการหมดอายุของ AC

set_var ESYRSA_CA_EXPIRE 3650

# เรากำหนดค่าการหมดอายุของใบรับรองที่สร้างขึ้น

set_var EASYRSA_CERT_EXPIRE 1080

# กี่วันจนกว่าจะถึงวันที่เผยแพร่ CRL ถัดไป? โปรดทราบว่า CRL ยังคงเป็นได้
# แยกวิเคราะห์หลังจากกรอบเวลานี้ผ่านไป ใช้สำหรับการคาดการณ์ถัดไปเท่านั้น
# วันที่ตีพิมพ์.

# กี่วันก่อนวันหมดอายุใบรับรองได้รับอนุญาต
# ต่ออายุ?
#set_var ESYRSA_CERT_RENEW 30

#set_var ESYRSA_CRL_DAYS 180

# สนับสนุนส่วนขยาย "Netscape" ที่เลิกใช้งานแล้วหรือไม่ (ตัวเลือก“ ใช่” หรือ“ ไม่”) ค่าเริ่มต้น
# คือ“ ไม่” ที่จะกีดกันการใช้ส่วนขยายที่เลิกใช้งาน หากคุณต้องการสิ่งนี้
# คุณสมบัติที่จะใช้กับ –ns-cert-type ให้ตั้งค่าเป็น“ ใช่” ที่นี่ การสนับสนุนนี้
# ควรถูกแทนที่ด้วยคุณลักษณะ –remote-cert-tls ที่ทันสมัยกว่า ถ้าคุณทำ
# ไม่ใช้ประเภท -ns-cert ในการกำหนดค่าของคุณมันปลอดภัย (และแนะนำ) ที่จะออก
# สิ่งนี้กำหนดให้เป็น "ไม่" เมื่อตั้งค่าเป็น“ ใช่” ใบรับรองที่ลงนามเซิร์ฟเวอร์จะได้รับไฟล์
# nsCertType = แอตทริบิวต์เซิร์ฟเวอร์และรับ NS_COMMENT ใด ๆ ที่กำหนดไว้ด้านล่างในไฟล์
# ns ช่องแสดงความคิดเห็น

#set_var EASYRSA_NS_SUPPORT“ ไม่”

# เมื่อ NS_SUPPORT ถูกตั้งค่าเป็น«ใช่»ฟิลด์นี้จะถูกเพิ่มเป็นฟิลด์ nsComment
# ตั้งค่านี้ว่างเพื่อเว้นไว้ ด้วย NS_SUPPORT ที่ตั้งค่าเป็น“ ไม่” ฟิลด์นี้จะถูกละเว้น

#set_var EASYRSA_NS_COMMENT“ Easy-RSA Generated Certificate”

# ไฟล์ชั่วคราวที่ใช้ในการจัดเตรียมส่วนขยายใบรับรองระหว่างการลงนาม ค่าเริ่มต้นควร
# ถูกต้องสำหรับผู้ใช้ส่วนใหญ่ อย่างไรก็ตามผู้ใช้บางรายอาจต้องการทางเลือกอื่นภายใต้ไฟล์
# แรม- ตาม FS เช่น / dev / shm หรือ / tmp ในบางระบบ

#set_var EASYRSA_TEMP_FILE“ $ EASYRSA_PKI / extensions.temp”

#!!
# หมายเหตุ: ตัวเลือกขั้นสูงด้านล่างจุดนี้
# เล่นกับพวกเขาด้วยความเสี่ยงของคุณเอง
#!!

# นามแฝงคำสั่งเชลล์แตก: หากคุณมีเชลล์ที่แตกเป็นส่วนใหญ่นั่นคือ
# ไม่มีคำสั่งที่ต้องใช้ POSIX เหล่านี้ซึ่งใช้โดย Easy-RSA คุณจะต้อง
# เพื่อกำหนดนามแฝงไปยังเส้นทางที่เหมาะสมสำหรับคำสั่ง อาการจะเป็น
# ข้อผิดพลาด 'ไม่พบคำสั่ง' บางรูปแบบจากเชลล์ของคุณ ซึ่งหมายถึงไฟล์
# shell เสีย แต่คุณสามารถแฮ็กได้ที่นี่หากคุณต้องการจริงๆ เอสโตส
# ค่าที่แสดงไม่ใช่ค่าเริ่มต้นขึ้นอยู่กับคุณที่จะรู้ว่าคุณกำลังทำอะไรอยู่
# คุณสัมผัสสิ่งเหล่านี้
#
#alias awk = » / alt / bin / awk »
#alias แมว = » / alt / bin / cat »

# X509 ไดเรกทอรีส่วนขยาย:
# หากคุณต้องการปรับแต่งส่วนขยาย X509 ที่ใช้ให้ตั้งค่าไดเรกทอรีให้ดู
# สำหรับส่วนขยายที่นี่ ใบรับรองแต่ละประเภทที่คุณลงนามต้องมีชื่อไฟล์ที่ตรงกัน
# และไฟล์ทางเลือกชื่อ 'COMMON' จะรวมไว้ก่อนเมื่อมีอยู่ โปรดทราบว่า
# เมื่อไม่ได้กำหนดไว้ที่นี่พฤติกรรมเริ่มต้นคือการดูใน $ EASYRSA_PKI ก่อนจากนั้น
# fallback เป็น $ EASYRSA สำหรับ dir 'x509-types' คุณสามารถลบล้างสิ่งนี้ได้
# การตรวจจับกับผบ. ที่ชัดเจนที่นี่
#
#set_var EASYRSA_EXT_DIR“ $ EASYRSA / x509-types”

# ไฟล์กำหนดค่า OpenSSL:
# หากคุณต้องการใช้ไฟล์กำหนดค่า openssl เฉพาะคุณสามารถอ้างอิงได้ที่นี่
# โดยปกติไฟล์นี้จะตรวจพบโดยอัตโนมัติจากไฟล์ที่ชื่อ openssl-easyrsa.cnf จากไฟล์
# EASYRSA_PKI หรือ EASYRSA dir (ตามลำดับ) โปรดทราบว่าไฟล์นี้เป็น Easy-RSA
# เฉพาะและคุณไม่สามารถใช้ไฟล์กำหนดค่ามาตรฐานได้ดังนั้นนี่คือไฟล์
# คุณลักษณะขั้นสูง

#set_var EASYRSA_SSL_CONF“ $ EASYRSA / openssl-easyrsa.cnf”

# ค่าเริ่มต้น CN:
# ปล่อยให้อยู่คนเดียวดีที่สุด คุณจะตั้งค่าแบบโต้ตอบด้วยตนเองและ BATCH
คาดว่าผู้โทร # รายจะตั้งค่านี้เอง

#set_var EASYRSA_REQ_CN“ ChangeMe”

# การย่อยการเข้ารหัสที่จะใช้
# อย่าเปลี่ยนค่าเริ่มต้นนี้เว้นแต่คุณจะเข้าใจผลกระทบด้านความปลอดภัย
# ตัวเลือกที่ถูกต้อง ได้แก่ : md5, sha1, sha256, sha224, sha384, sha512

# เราเลือก HASH SHA512

set_var EASYRSA_DIGEST“ sha512”

# โหมดแบทช์ ปล่อยให้สิ่งนี้ปิดใช้งานเว้นแต่คุณตั้งใจจะเรียก Easy-RSA อย่างชัดเจน
# ในโหมดแบตช์โดยไม่ต้องป้อนข้อมูลผู้ใช้ยืนยันการดำเนินการที่เป็นอันตราย
# หรือผลลัพธ์ส่วนใหญ่ การตั้งค่านี้เป็นสตริงที่ไม่ว่างจะเปิดใช้งานโหมดแบตช์

#set_var EASYRSA_BATCH «»

เมื่อเราแก้ไขทุกอย่างแล้วเราจะบันทึกไฟล์หลังจากนั้นเราจะใช้กับค่าเหล่านี้

การสร้าง PKI: ใบรับรอง CA เซิร์ฟเวอร์และไคลเอนต์

เมื่อเรากำหนดค่าไฟล์« vars »แล้วเราจะดำเนินการสร้าง Public Key Infrastructure (PKI) ด้วยคำสั่งต่อไปนี้ (เราถือว่าคุณยังอยู่ในไดเรกทอรีหลัก Easy-RSA3):

./easyrsa init-pki

รูท @ debian-vm: /home/bron/EasyRSA-v3.0.6# ./easyrsa init-pki

หมายเหตุ: การใช้การกำหนดค่า Easy-RSA จาก: ./vars

init-pki เสร็จสมบูรณ์ ตอนนี้คุณสามารถสร้าง CA หรือคำขอได้
PKI dir ที่สร้างขึ้นใหม่ของคุณคือ: /home/bron/EasyRSA-v3.0.6/pki

เมื่อเริ่มต้น PKI แล้วเราจะต้องสร้างหน่วยงานรับรอง (CA):

./easyrsa build-ca

เมื่อดำเนินการแล้วเราต้องทำตามวิซาร์ดการสร้าง CA อย่างง่าย รหัสผ่านที่คุณถามเราคือการป้องกันคีย์ส่วนตัวของ CA ซึ่งเป็นสิ่งพื้นฐาน

รูท @ debian-vm: /home/bron/EasyRSA-v3.0.6# ./easyrsa build-ca

หมายเหตุ: การใช้การกำหนดค่า Easy-RSA จาก: ./vars

การใช้ SSL: openssl OpenSSL 1.1.1d 10 ก.ย. 2019

ป้อนรหัสผ่านคีย์ CA ใหม่:
ป้อนรหัสผ่านคีย์ CA ใหม่อีกครั้ง:
อ่านคีย์ EC
เขียนคีย์ EC
ไม่สามารถโหลด /home/bron/EasyRSA-v3.0.6/pki/.rnd ลงใน RNG
139864421569664: ข้อผิดพลาด: 2406F079: ตัวสร้างตัวเลขสุ่ม: RAND_load_file: ไม่สามารถเปิดไฟล์: ../ crypto / rand / randfile.c: 98: ชื่อไฟล์ = / home / bron / EasyRSA-v3.0.6 / pki / .rnd
คุณกำลังจะถูกขอให้ป้อนข้อมูลที่จะรวมอยู่
ลงในคำขอใบรับรองของคุณ
สิ่งที่คุณกำลังป้อนคือสิ่งที่เรียกว่า Distinguished Name หรือ DN
มีช่องค่อนข้างน้อย แต่คุณสามารถเว้นว่างได้
สำหรับบางฟิลด์จะมีค่าเริ่มต้น
หากคุณป้อน "." ฟิลด์จะเว้นว่างไว้
-
ชื่อสามัญ (เช่นชื่อผู้ใช้โฮสต์หรือเซิร์ฟเวอร์ของคุณ) [Easy-RSA CA]: AUTHORITY-CERTIFICATION

การสร้าง CA เสร็จสมบูรณ์และตอนนี้คุณสามารถนำเข้าและลงนามคำขอใบรับรองได้
ไฟล์ใบรับรอง CA ใหม่สำหรับเผยแพร่อยู่ที่:
/home/bron/EasyRSA-v3.0.6/pki/ca.crt

หากเราไม่ต้องการป้อนรหัสผ่านในคีย์ส่วนตัวของ CA (ไม่แนะนำด้วยเหตุผลด้านความปลอดภัย) เราต้องใส่คำสั่งนี้:

./easyrsa build-ca nopass

เมื่อเราสร้าง CA แล้วเราจะต้องสร้างใบรับรองเซิร์ฟเวอร์และใบรับรองไคลเอ็นต์ ต่อไปเราต้องลงนามกับ CA

สร้างใบรับรองเซิร์ฟเวอร์และลงนามด้วย CA

เมื่อสร้างเซิร์ฟเวอร์และใบรับรองไคลเอ็นต์เราสามารถให้รหัสผ่านสำหรับคีย์ส่วนตัวแก่พวกเขาได้อย่างไรก็ตามไม่แนะนำให้ทำบนเซิร์ฟเวอร์เนื่องจากทุกครั้งที่เราเริ่มต้นระบบจะขอรหัสผ่านจากเราเพื่อใช้งาน หากเราไม่ต้องการรหัสผ่านเราจะใส่ "nopass" ไว้ข้างหลังแต่ละคำสั่งที่คุณจะเห็นด้านล่าง

./easyrsa gen-req servidor-openvpn-redeszone nopass

เอาต์พุตของเทอร์มินัลมีดังนี้:

รูท @ debian-vm: /home/bron/EasyRSA-v3.0.6# ./easyrsa gen-req server-openvpn-redeszone nopass

หมายเหตุ: การใช้การกำหนดค่า Easy-RSA จาก: ./vars

การใช้ SSL: openssl OpenSSL 1.1.1d 10 ก.ย. 2019
การสร้างคีย์ส่วนตัว EC
การเขียนคีย์ส่วนตัวใหม่ให้กับ '/home/bron/EasyRSA-v3.0.6/pki/private/server-openvpn-redeszone.key.bHJsAFg0KR'
-
คุณกำลังจะถูกขอให้ป้อนข้อมูลที่จะรวมอยู่
ลงในคำขอใบรับรองของคุณ
สิ่งที่คุณกำลังป้อนคือสิ่งที่เรียกว่า Distinguished Name หรือ DN
มีช่องค่อนข้างน้อย แต่คุณสามารถเว้นว่างได้
สำหรับบางฟิลด์จะมีค่าเริ่มต้น
หากคุณป้อน "." ฟิลด์จะเว้นว่างไว้
-
ชื่อสามัญ (เช่น: ผู้ใช้โฮสต์หรือชื่อเซิร์ฟเวอร์ของคุณ) [server-openvpn-redeszone]:

คำขอคีย์คู่และใบรับรองเสร็จสมบูรณ์ ไฟล์ของคุณคือ:
ข้อกำหนด: /home/bron/EasyRSA-v3.0.6/pki/reqs/server-openvpn-redeszone.req
คีย์: /home/bron/EasyRSA-v3.0.6/pki/private/servidor-openvpn-redeszone.key

เมื่อสร้างใบรับรองแล้วเราจะต้องลงนามด้วย CA ในโหมด "เซิร์ฟเวอร์":

./easyrsa sign-req server servidor-openvpn-redeszone

root @ debian-vm: /home/bron/EasyRSA-v3.0.6# ./easyrsa เซิร์ฟเวอร์ sign-req server-openvpn-redeszone

หมายเหตุ: การใช้การกำหนดค่า Easy-RSA จาก: ./vars

การใช้ SSL: openssl OpenSSL 1.1.1d 10 ก.ย. 2019

คุณกำลังจะลงนามในใบรับรองต่อไปนี้
โปรดตรวจสอบรายละเอียดที่แสดงด้านล่างเพื่อความถูกต้อง โปรดทราบว่าคำขอนี้
ยังไม่ได้รับการตรวจสอบการเข้ารหัส โปรดตรวจสอบว่ามาจากผู้ที่เชื่อถือได้
แหล่งที่มาหรือว่าคุณได้ยืนยันการตรวจสอบคำขอกับผู้ส่งแล้ว

ขอหัวเรื่องเพื่อลงนามในใบรับรองเซิร์ฟเวอร์เป็นเวลา 1080 วัน:

เรื่อง =
commonName = เซิร์ฟเวอร์ openvpn-redeszone

พิมพ์คำว่า 'ใช่' เพื่อดำเนินการต่อหรือป้อนข้อมูลอื่น ๆ เพื่อยกเลิก
ยืนยันรายละเอียดคำขอ: ใช่
ใช้การกำหนดค่าจาก /home/bron/EasyRSA-v3.0.6/pki/safessl-easyrsa.cnf
ป้อนรหัสผ่านสำหรับ /home/bron/EasyRSA-v3.0.6/pki/private/ca.key:
ตรวจสอบว่าคำขอตรงกับลายเซ็น
ลายเซ็นโอเค
ชื่อที่โดดเด่นของหัวเรื่องมีดังนี้
commonName: ASN.1 12: 'server-openvpn-redeszone'
ใบรับรองจะได้รับการรับรองจนถึงวันที่ 23 ธันวาคมเวลา 11:40:22 น. 2022 GMT (1080 วัน)

เขียนฐานข้อมูลด้วย 1 รายการใหม่
อัปเดตฐานข้อมูลแล้ว

สร้างใบรับรองที่: /home/bron/EasyRSA-v3.0.6/pki/issued/servidor-openvpn-redeszone.crt

และเราได้สร้าง. crt ที่เราจะใช้ในภายหลังในไฟล์คอนฟิกูเรชัน OpenVPN

สร้างใบรับรองไคลเอ็นต์และลงนามด้วย CA

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

./easyrsa gen-req cliente1-openvpn-redeszone nopass

รูท @ debian-vm: /home/bron/EasyRSA-v3.0.6# ./easyrsa gen-req client1-openvpn-redeszone nopass

หมายเหตุ: การใช้การกำหนดค่า Easy-RSA จาก: ./vars

การใช้ SSL: openssl OpenSSL 1.1.1d 10 ก.ย. 2019
การสร้างคีย์ส่วนตัว EC
การเขียนคีย์ส่วนตัวใหม่ให้กับ '/home/bron/EasyRSA-v3.0.6/pki/private/cliente1-openvpn-redeszone.key.YflrPvFgdV'
-
คุณกำลังจะถูกขอให้ป้อนข้อมูลที่จะรวมอยู่
ลงในคำขอใบรับรองของคุณ
สิ่งที่คุณกำลังป้อนคือสิ่งที่เรียกว่า Distinguished Name หรือ DN
มีช่องค่อนข้างน้อย แต่คุณสามารถเว้นว่างได้
สำหรับบางฟิลด์จะมีค่าเริ่มต้น
หากคุณป้อน "." ฟิลด์จะเว้นว่างไว้
-
ชื่อสามัญ (เช่นชื่อผู้ใช้โฮสต์หรือเซิร์ฟเวอร์ของคุณ) [client1-openvpn-redeszone]:

คำขอคีย์คู่และใบรับรองเสร็จสมบูรณ์ ไฟล์ของคุณคือ:
ความต้องการ: /home/bron/EasyRSA-v3.0.6/pki/reqs/cliente1-openvpn-redeszone.req
คีย์: /home/bron/EasyRSA-v3.0.6/pki/private/cliente1-openvpn-redeszone.key

เมื่อสร้างแล้วเราต้องเซ็นชื่อ:

./easyrsa sign-req client cliente1-openvpn-redeszone

root @ debian-vm: /home/bron/EasyRSA-v3.0.6# ./easyrsa ไคลเอ็นต์ sign-req client1-openvpn-redeszone

หมายเหตุ: การใช้การกำหนดค่า Easy-RSA จาก: ./vars

การใช้ SSL: openssl OpenSSL 1.1.1d 10 ก.ย. 2019

คุณกำลังจะลงนามในใบรับรองต่อไปนี้
โปรดตรวจสอบรายละเอียดที่แสดงด้านล่างเพื่อความถูกต้อง โปรดทราบว่าคำขอนี้
ยังไม่ได้รับการตรวจสอบการเข้ารหัส โปรดตรวจสอบว่ามาจากผู้ที่เชื่อถือได้
แหล่งที่มาหรือว่าคุณได้ยืนยันการตรวจสอบคำขอกับผู้ส่งแล้ว

ขอหัวเรื่องเพื่อลงนามในใบรับรองไคลเอ็นต์เป็นเวลา 1080 วัน:

เรื่อง =
commonName = ลูกค้า1-openvpn-redeszone

พิมพ์คำว่า 'ใช่' เพื่อดำเนินการต่อหรือป้อนข้อมูลอื่น ๆ เพื่อยกเลิก
ยืนยันรายละเอียดคำขอ: ใช่
ใช้การกำหนดค่าจาก /home/bron/EasyRSA-v3.0.6/pki/safessl-easyrsa.cnf
ป้อนรหัสผ่านสำหรับ /home/bron/EasyRSA-v3.0.6/pki/private/ca.key:
ตรวจสอบว่าคำขอตรงกับลายเซ็น
ลายเซ็นโอเค
ชื่อที่โดดเด่นของหัวเรื่องมีดังนี้
commonName: ASN.1 12: 'client1-openvpn-redeszone'
ใบรับรองจะได้รับการรับรองจนถึงวันที่ 23 ธันวาคมเวลา 11:41:36 น. 2022 GMT (1080 วัน)

เขียนฐานข้อมูลด้วย 1 รายการใหม่
อัปเดตฐานข้อมูลแล้ว

สร้างใบรับรองที่: /home/bron/EasyRSA-v3.0.6/pki/issued/cliente1-openvpn-redeszone.crt

หากเราต้องการสร้างและลงนามใบรับรองหมายเลข 2 สำหรับลูกค้ารายอื่นเราควรใส่สิ่งนี้:

./easyrsa gen-req cliente2-openvpn-redeszone nopass ./easyrsa sign-req client cliente2-openvpn-redeszone

โปรดจำไว้ว่าหากคุณต้องการใส่รหัสผ่านเราจะต้องลบ“ nopass” ออก

จัดระเบียบเซิร์ฟเวอร์และไคลเอนต์ใบรับรอง. crt และ. key

สิ่งที่สำคัญมากคือการจัดระเบียบเซิร์ฟเวอร์และใบรับรองไคลเอ็นต์ตามโฟลเดอร์ ใบรับรองเซิร์ฟเวอร์และไคลเอ็นต์อยู่ในเส้นทาง“ / pki / ออก /” และคีย์ส่วนตัวอยู่ใน“ / pki / private” โดย ca.crt อยู่ในรูทของโฟลเดอร์“ pki” เราต้องสร้างโฟลเดอร์สามโฟลเดอร์ที่มีเนื้อหาต่อไปนี้ (ตอนนี้):

  • เซิร์ฟเวอร์: ca.crt, server-openvpn-redeszone.crt, server-openvpn-redeszone.key
  • Client1: ca.crt, client1-openvpn-redeszone.crt, client1-openvpn-redeszone.key
  • Client2: ca.crt, client2-openvpn-redeszone.crt, client2-openvpn-redeszone.key

สร้างพารามิเตอร์ Diffie-Hellmann และคีย์ tls-crypt (tls-auth บนระบบเก่า)

เมื่อเราสร้างและลงนามใบรับรองแล้วก่อนหน้านี้เราต้องสร้างพารามิเตอร์ Diffie-Hellmann เพื่อวางไว้ในโฟลเดอร์ "เซิร์ฟเวอร์" เพื่อสร้างใบรับรองที่เราใช้ "./easyrsa gen-dh" แต่เมื่อใช้ ECDHE ไม่จำเป็น เพื่อสร้างหรือระบุว่าไม่มีในไฟล์คอนฟิกูเรชันของเซิร์ฟเวอร์ สิ่งที่เราต้องสร้างคือ tls-crypt key ที่มีชื่อ ta.key หรืออะไรก็ได้ที่เราต้องการ ลำดับที่เราต้องใส่มีดังต่อไปนี้:

openvpn --genkey --secret ta.key

ต้องวางคีย์ ta.key นี้บนเซิร์ฟเวอร์และบนไคลเอนต์ทั้งหมด

เมื่อเรามาถึงที่นี่โฟลเดอร์ของเราที่มีใบรับรองควรมีดังต่อไปนี้:

  • เซิร์ฟเวอร์: ca.crt, server-openvpn-redeszone.crt, server-openvpn-redeszone.key, dh.pem (Diffie-Hellmann, OPTIONAL เพราะเราจะไม่ใช้กับ ECDHE), ta.key (tls-crypt)
  • Client1: ca.crt, client1-openvpn-redeszone.crt, client1-openvpn-redeszone.key, ta.key (tls-crypt)
  • Client2: ca.crt, client2-openvpn-redeszone.crt, client2-openvpn-redeszone.key, ta.key (tls-crypt)

หากเราจะใช้ tls-auth แทน tls-crypt (เพราะไม่รองรับเป็นต้น) เราต้องคำนึงถึงสิ่งนี้ด้วย:

ตัว Vortex Indicator ได้ถูกนำเสนอลงในนิตยสาร การกำหนดค่าเซิร์ฟเวอร์ (server.conf หรือ server.ovpn) เราต้องใส่:

tls-auth ta.key 0 (0 จากขาเข้า)

ตัว Vortex Indicator ได้ถูกนำเสนอลงในนิตยสาร การกำหนดค่าไคลเอ็นต์ (client.conf หรือ client.ovpn) เราต้องใส่:

tls-auth ta.key 1 (1 จากขาออก)

ต่อไปเราจะใส่ตารางว่าใบรับรองแต่ละใบคืออะไร (ชื่อแตกต่างกันไป)

เมื่อเรามีการจัดระเบียบทุกอย่างในโฟลเดอร์ตอนนี้คือตอนที่เราต้องสร้างไฟล์คอนฟิกูเรชัน (.conf สำหรับระบบ Linux และ. avpn สำหรับระบบ Windows) มี ตัวอย่างไฟล์การกำหนดค่าบนเว็บไซต์ OpenVPN อย่างเป็นทางการ และในพา ธ “ / usr / share / doc / openvpn / samples / samples-config-files /”

สิ่งแรกที่เราต้องตรวจสอบคือเซิร์ฟเวอร์และไคลเอนต์ของเรารองรับการเข้ารหัสแบบสมมาตร tls-ciphersuites (TLS 1.3) และ tls-cipher (TLS 1.2) และเส้นโค้งวงรีที่กำหนดค่าไว้หรือไม่ เราต้องคำนึงถึงเพราะมิฉะนั้นจะทำให้เรามีข้อผิดพลาด ในการดำเนินการตรวจสอบเหล่านี้เราต้องดำเนินการ:

  • openvpn – แสดงรหัส
  • openvpn –show-tls (จะแสดงให้เราเห็นว่ารองรับ TLS 1.3 หรือไม่และอันไหนเช่น TLS 1.2)
  • openvpn - แสดงเส้นโค้ง

กำหนดค่าเซิร์ฟเวอร์ OpenVPN และเริ่มต้น

การกำหนดค่าเซิร์ฟเวอร์ OpenVPN เป็นสิ่งสำคัญในการให้สิทธิ์การเข้าถึงกับไคลเอนต์ไปยังเครือข่ายท้องถิ่นของเรากำหนดค่าการเจรจา TLS เนื่องจากเรามีการกำหนดค่าหลายร้อยแบบเราจะใส่การกำหนดค่าของเราพร้อมกับความคิดเห็นที่อธิบายแต่ละพารามิเตอร์คุณสามารถคัดลอกและวางการกำหนดค่าได้โดยไม่มีปัญหา จำไว้ว่าสำหรับ Linux ต้องมีนามสกุล. config และสำหรับ Windows .ovpn

# พอร์ตที่จะใช้โดย TCP หรือ UDP โดยค่าเริ่มต้นคือ 1194
#PROTOCOL เพื่อใช้ TCP หรือ UDP
#โหมดอุโมงค์
พอร์ต 11949
proto udp
dev tun

# ใบรับรอง
# ถ้าเรามี. CONF อยู่ในโฟลเดอร์เดียวกันจะไม่มีการขาดไปยังเส้นทางมิเตอร์มีเพียงชื่อเท่านั้น
# หากพวกเขาอยู่ในเส้นทางอื่นเราควรทดสอบเส้นทางของพวกเขาทั้งหมด

ca ca.crt
รับรองเซิร์ฟเวอร์ openvpn-redeszone.crt
คีย์เซิร์ฟเวอร์ openvpn-redeszone.key
#dh dh.pem (ไม่บังคับเนื่องจากเราใช้ ECDHE)
dh ไม่มี
tls-crypt ta.key

# เราตรวจสอบใบรับรองของลูกค้า (การรักษาความปลอดภัยที่ดียิ่งขึ้น)
ไคลเอนต์ remote-cert-tls

# เราปรับเปลี่ยนการเข้ารหัส SYMMETRIC ของช่องข้อมูลช่องควบคุม TLS และข้อผิดพลาดเพื่อยืนยันความถูกต้อง
# ถ้าเราใช้ AES-256-GCM มันไม่จำเป็นที่จะต้องใส่ AUTH DIRECTIVE เนื่องจากไม่ได้ใช้

การเข้ารหัส AES-256-GCM
tls-ciphersuites TLS_AES_256_GCM_SHA384: TLS_CHACHA20_POLY1305_SHA256
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384: TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256
ecdh-curve วินาที
tls-เวอร์ชั่น-นาที 1.2
เรเนก-วินาที 0
รับรองความถูกต้อง SHA512

# เครือข่าย TOPOLOGY (SUBNET แนะนำ) และ SUBNET เสมือนลูกค้าจะอยู่ที่ไหน

โทโพโลยีซับเน็ต
เซิร์ฟเวอร์ 10.8.0.0 255.255.255.0

# เรากำหนดค่าเซิร์ฟเวอร์เพื่อให้ลูกค้ามี IP เดียวกันเสมอเมื่อพวกเขาเชื่อมต่อ
ifconfig-พูล-คงอยู่ ipp.txt

# เราให้ลูกค้าเข้าถึงเครือข่ายที่บ้านเราดำเนินการเปลี่ยนเส้นทางอินเทอร์เน็ตและเปิดให้บริการ DNS. WordPress ใส่สัญลักษณ์เหล่านี้โดยอัตโนมัติ << และ >> เมื่อควรใส่เครื่องหมายคำพูดคู่: »
ผลักดัน "เส้นทาง 192.168.2.0 255.255.255.0"
กด“ redirect-gateway def1”
ดัน“ dhcp-option DNS 208.67.222.222”
ดัน“ dhcp-option DNS 208.67.220.220”

# เราเปิดใช้งานการสื่อสารระหว่างลูกค้าเราเปิดใช้งานอย่างต่อเนื่องเพื่อให้ทราบว่าอุโมงค์ถูกปล่อยเราเปิดใช้งานการบีบอัดและจำนวนลูกค้าสูงสุด 100 รายพร้อมกัน
ไคลเอนต์ต่อไคลเอนต์
keepalive 10 120
ลูกค้าสูงสุด 100

# ไม่มีสิทธิ์ของผู้ใช้ใน OPENVPN เพื่อความปลอดภัยของเซิร์ฟเวอร์
ผู้ใช้ไม่มีใคร
กลุ่ม nogroup

# ที่สำคัญและอุโมงค์ส่วนตัว
ยังคงมีอยู่ที่สำคัญ
ยังคงมีอยู่-TUN

# บันทึกเซิร์ฟเวอร์ในไฟล์นั้นการกำหนดค่า VERB 3 สำหรับบันทึก
สถานะ openvpn-status.log
คำกริยา 3
ชัดเจน - ออก - แจ้ง 1

จนถึงตอนนี้เราได้มาถึงการกำหนดค่าเซิร์ฟเวอร์แล้วในการเริ่มต้นเราจะต้องใส่“ openvpn server.conf” ในระบบ Linux และจะเริ่มโดยอัตโนมัติเมื่อสิ้นสุดการบูตคุณต้องใส่“ Initialization Sequence Completed” .

กำหนดค่าไคลเอนต์ (หรือไคลเอนต์)

จากนั้นคุณจะเห็นการกำหนดค่าไคลเอ็นต์ที่เกี่ยวข้องกับเซิร์ฟเวอร์ที่เราเห็นก่อนหน้านี้ ความแตกต่างเพียงอย่างเดียวระหว่าง clients.conf ที่แตกต่างกันคือเส้นทางของใบรับรองตัวอย่างเช่น สำคัญมากที่การเข้ารหัส tls-cipher และพารามิเตอร์อื่น ๆ จะเหมือนกันทุกประการมิฉะนั้นจะไม่เชื่อมต่อกับเซิร์ฟเวอร์ จำไว้ว่าสำหรับ Linux ต้องมีนามสกุล. config และสำหรับ Windows .ovpn

# เรากำหนดค่าในโหมดไคลเอนต์โหมดปรับแต่งกระบวนการ UDP

ไคลเอนต์
dev tun
proto udp

# ไดเรคทีฟคือการเชื่อมต่อกับ IP สาธารณะหรือโดเมนของเซิร์ฟเวอร์ OPENVPN เราต้องใส่พอร์ตเซิร์ฟเวอร์เดียวกันด้วย
รีโมท 127.0.0.1 11949

# แก้ไข IP หรือโดเมนอย่างต่อเนื่องเพื่อเชื่อมต่อกับเราคีย์และผู้ติดตามเป็นเซิร์ฟเวอร์
resolv ลองใหม่ infinite
nobind
ยังคงมีอยู่ที่สำคัญ
ยังคงมีอยู่-TUN

#RUTA DE LA CA ใบรับรองลูกค้าและ TA คีย์
# ถ้าเรามีมันอยู่ในโฟลเดอร์เดียวกันมันไม่จำเป็นที่จะต้องใส่เส้นทางทั้งหมด
ca ca.crt
รับรอง client1-openvpn-redeszone.crt
คีย์ client1-openvpn-redeszone.key
tls-crypt ta.key

# ตรวจสอบรหัสประจำตัวเซิร์ฟเวอร์ใช้การเข้ารหัส GCM SYMMETRIC TLS 1.2 และการกำหนดค่า AUTH หากลูกค้าของเราไม่รองรับ TLS 1.3
เซิร์ฟเวอร์ remote-cert-tls
การเข้ารหัส AES-256-GCM
รับรองความถูกต้อง SHA512

อัด

# หากลูกค้าของเรารองรับ TLS 1.3 เราจะเพิ่มคำสั่งนี้:
# ชุดรหัส tls TLS_AES_256_GCM_SHA384: TLS_CHACHA20_POLY1305_SHA256

# หากลูกค้าของเรารองรับ TLS 1.2 เท่านั้นเราจะเพิ่มคำสั่งนี้:
# tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384: TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256

# เปิดใช้งาน VERBOSE ระดับ 3 บันทึก

คำกริยา 3

หากคุณใช้ Windows โฟลเดอร์ของใบรับรองที่มีไฟล์คอนฟิกูเรชันในนามสกุล. avpn จะต้องอยู่ในพา ธ OpenVPN เริ่มต้นซึ่งก็คือ C: UsersBronOpenVPNconfig ตามค่าเริ่มต้นแม้ว่าเราจะเปลี่ยนได้ก็ตาม เมื่อเสร็จแล้วหากเราคลิกขวาที่ OpenVPN ในแถบด้านขวาล่างเราจะเห็นชื่อของไฟล์ไคลเอนต์ที่จะเชื่อมต่อได้สำเร็จ ในตอนท้ายของการบูตคุณต้องใส่“ Initialization Sequence Completed” และเราจะเชื่อมต่อกับเซิร์ฟเวอร์ OpenVPN ที่กำหนดค่าไว้ได้สำเร็จ

สร้างเส้นทางแบบคงที่ในเราเตอร์ของเรา

เพื่อให้มีการเชื่อมต่อกับเครือข่ายท้องถิ่นของบ้านเราจำเป็นต้องสร้างเส้นทางแบบคงที่ในเราเตอร์ที่บ้านของเรา ด้วยการกำหนดค่า 10.8.0.0/24 ที่เราได้กำหนดค่าไว้ในเซิร์ฟเวอร์ OpenVPN เราต้องสร้างเส้นทางแบบคงที่ด้วยข้อมูลนี้:

  • ซับเน็ต IP: 10.8.0.0
  • หน้ากาก: 255.255.255.0
  • เกตเวย์: IP ท้องถิ่นที่เราเริ่มเซิร์ฟเวอร์ OpenVPN เช่นหากเราติดตั้งบน Raspberry PI ด้วย IP 192.168.1.100 เราต้องใส่ IP นี้

ปัญหาหลักและความล้มเหลวในการเชื่อมต่อเมื่อเชื่อมต่อ

เมื่อเราตั้งค่าเซิร์ฟเวอร์ OpenVPN เป็นครั้งแรกเราอาจมีปัญหาที่แตกต่างกันในการเชื่อมต่อไคลเอนต์ต่างๆ ก่อนที่จะแสดงรายการปัญหาต่างๆและความล้มเหลวในการเชื่อมต่อที่อาจปรากฏขึ้นเราต้องแจ้งให้คุณทราบว่าหากคุณทำตามบทช่วยสอนทีละขั้นตอนคุณไม่ควรมีข้อผิดพลาดใด ๆ เมื่อเชื่อมต่อเนื่องจากเราได้ตรวจสอบการกำหนดค่าโดยละเอียด การกำหนดค่าของทั้งเซิร์ฟเวอร์และไคลเอนต์อยู่ใน "กริยา 3" นั่นคือระดับการลงทะเบียนที่แนะนำสำหรับผู้ใช้ทุกคนในกรณีที่มีปัญหาในการเชื่อมต่อหากเราไม่พบความล้มเหลวเราจะต้องเพิ่มระดับการลงทะเบียน และใส่“ กริยา 5” เพื่อให้มีรายละเอียดเพิ่มเติมเกี่ยวกับทุกสิ่งที่เกิดขึ้นในการเชื่อมต่อ

RESOLVE: ไม่สามารถแก้ไขที่อยู่โฮสต์: xxxx.no-ip.org:11949 (โฮสต์ที่ไม่รู้จัก)

ข้อผิดพลาดนี้เป็นเพราะไม่พบเซิร์ฟเวอร์ OpenVPN เราต้องตรวจสอบว่าโดเมนที่เราใส่นั้นถูกต้องข้อผิดพลาดนี้เป็นเพราะไม่พบ IP สาธารณะใด ๆ ที่เชื่อมโยงกับโดเมนนั้น สิ่งที่พบบ่อยที่สุดคือเราใส่โดเมนผิดในไคลเอนต์ VPN โดยที่โดเมนที่เราป้อนไม่มีอยู่เนื่องจากเรายังไม่ได้สร้างหรือเนื่องจากบริการไดนามิก DNS ทำงานไม่ถูกต้อง

ไม่สามารถระบุโปรโตคอล IPv4 / IPv6

ข้อผิดพลาดนี้เกี่ยวข้องกับข้อผิดพลาดก่อนหน้านี้เราได้ป้อนโดเมนที่ไม่สามารถค้นหาได้ไม่ว่าจะใช้โปรโตคอล IPv4 หรือโปรโตคอล IPv6

ได้รับ SIGUSR1 [soft, init_instance] แล้วให้รีสตาร์ท

คำเตือนนี้แจ้งให้เราทราบว่ากระบวนการเชื่อมต่อกับเซิร์ฟเวอร์ VPN กำลังจะเริ่มต้นใหม่เพียงระบุว่าก่อนหน้านี้มีข้อผิดพลาดและกำลังจะลองเชื่อมต่ออีกครั้ง

การจัดการ:> รัฐ: 1603127258, รอ,,,,,

แม้ว่านี่จะไม่ใช่ข้อผิดพลาด แต่หากไคลเอนต์ OpenVPN ยังคงอยู่ในส่วนนี้ของการเชื่อมต่ออย่างต่อเนื่องนั่นเป็นเพราะเราไม่มีพอร์ตที่เปิดบนเราเตอร์หรือไฟร์วอลล์ของเราไปยังเซิร์ฟเวอร์ VPN ทั้งนี้ขึ้นอยู่กับว่าเราใช้ TCP หรือ UDP และของพอร์ตที่เลือกเราต้องเปิดพอร์ตหนึ่งหรือพอร์ตอื่น เนื่องจากไคลเอนต์สามารถค้นหาที่อยู่ IP ได้โดยไม่มีปัญหา แต่รอการตอบกลับจากเซิร์ฟเวอร์ OpenVPN ซึ่งเป็นคำตอบที่ไม่มีวันมาถึง

ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อเราไม่มีเซิร์ฟเวอร์ VPN เริ่มทำงานหากเราลืมเริ่มต้นตั้งแต่ตอนแรกเราจะมีปัญหานี้ วิธีแก้ปัญหาคือเริ่มต้นใช้งานและรอให้ไคลเอนต์แรกปรากฏขึ้น

หมายเหตุ: ตัวเลือก –user ไม่ได้ใช้งานบน Windows

ในระบบปฏิบัติการ Windows เราไม่จำเป็นต้องใส่คำสั่ง "user none" ซึ่งเป็นสิ่งที่แนะนำให้วางไว้ในระบบปฏิบัติการที่ใช้ Linux

หมายเหตุ: ตัวเลือก –group ไม่ได้ใช้งานบน Windows

ในระบบปฏิบัติการ Windows เราไม่จำเป็นต้องใส่คำสั่ง "group nogroup" ซึ่งเป็นสิ่งที่แนะนำให้ใส่ไว้ในระบบปฏิบัติการที่ใช้ Linux

คำเตือน: ละเว้นตัวเลือก 'dh' ในโหมดไคลเอนต์ tls โปรดรวมสิ่งนี้ไว้ในการกำหนดค่าเซิร์ฟเวอร์ของคุณเท่านั้น

ในไคลเอนต์ VPN เราไม่จำเป็นต้องใส่อะไรที่เกี่ยวข้องกับ Diffie-Hellmann คำสั่งนี้อยู่ในไฟล์กำหนดค่าเซิร์ฟเวอร์เท่านั้นในไคลเอนต์มันไม่จำเป็น

ข้อผิดพลาดในการแกะ tls-crypt: การตรวจสอบสิทธิ์แพ็คเก็ตล้มเหลวและข้อผิดพลาด TLS: การแกะ tls-crypt ล้มเหลวจาก [AF_INET]

การพิสูจน์ตัวตนด้วยคำสั่ง tls-crypt ล้มเหลวโดยปกติจะเป็นเพราะเนื้อหาของไฟล์ ta.key บนเซิร์ฟเวอร์และไคลเอนต์ต่างกัน เราต้องจำไว้ว่า ta.key ต้องเหมือนกันทุกประการทั้งบนเซิร์ฟเวอร์และบนไคลเอนต์ VPN ทั้งหมดที่เราจะใช้

ข้อผิดพลาด TLS: แพ็กเก็ตควบคุมที่ไม่สามารถกำหนดเส้นทางได้รับจาก [AF_INET] และข้อผิดพลาด TLS: คีย์ TLS ภายใน / ระยะไกลไม่ซิงค์

คีย์ TLS ที่เราใช้ไม่ถูกต้องบนเซิร์ฟเวอร์และ / หรือไคลเอนต์จำเป็นต้องตรวจสอบการกำหนดค่าของใบรับรองและคีย์ ta.key ข้อผิดพลาดนี้เกิดขึ้นโดยเฉพาะเมื่อเรากำหนดค่า ta.key ไม่ถูกต้อง

ข้อผิดพลาด TLS: แพ็กเก็ตควบคุมที่ไม่สามารถกำหนดเส้นทางได้รับจาก

นี่เป็นข้อผิดพลาดทั่วไปของการเชื่อมต่อ TLS คุณอาจคัดลอก CA ใบรับรองเซิร์ฟเวอร์ (ในการตั้งค่าเซิร์ฟเวอร์) ใบรับรองไคลเอ็นต์ (ในการตั้งค่าไคลเอ็นต์) อย่างไม่ถูกต้อง ข้อผิดพลาดนี้เกิดจากความล้มเหลวในการคัดลอกใบรับรองต่างๆ

คำเตือน: 'link-mtu' ถูกใช้อย่างไม่สอดคล้องกัน local = 'link-mtu 1549′, remote = 'link-mtu 1550′

ข้อผิดพลาดนี้ปรากฏขึ้นเนื่องจากจำเป็นที่ MTU จะเหมือนกันทั้งในโลคัล (ไคลเอนต์) และในระยะไกล (เซิร์ฟเวอร์ VPN) หากกำหนดค่า MTU ไม่ถูกต้องการเชื่อมต่อจะถูกสร้างขึ้น แต่เราจะมีประสิทธิภาพต่ำมาก และเป็นไปได้ว่าการเชื่อมต่อ VPN จะถูกตัดเมื่อใดก็ได้

ข้อผิดพลาดนี้ยังเกิดขึ้นเมื่อเราเปิดใช้งานการบีบอัดข้อมูลบนเซิร์ฟเวอร์ VPN และเราไม่ได้กำหนดค่าบนไคลเอนต์ นอกจากนี้ยังเกิดขึ้นเมื่อเรามีอัลกอริทึมการบีบอัดที่แตกต่างกันบนเซิร์ฟเวอร์ / ไคลเอนต์ จำเป็นสำหรับเซิร์ฟเวอร์และไคลเอนต์ที่จะใช้การบีบอัดเดียวกันหรือไม่ใช้การบีบอัดซึ่งเป็นวิธีที่แนะนำมากที่สุดสำหรับการรักษาความปลอดภัย

ในการแก้ไขข้อผิดพลาดนี้เพียงแค่ใส่คำสั่ง: «บีบอัด»บนไคลเอนต์เพื่อให้ยอมรับการบีบอัดที่เซิร์ฟเวอร์ส่งผ่าน« PUSH »ที่ดำเนินการ

คำเตือน: 'comp-lzo' มีอยู่ในการกำหนดค่าระยะไกล แต่ไม่มีใน config ท้องถิ่น, remote = 'comp-lzo'

ข้อผิดพลาดนี้เกิดขึ้นเมื่อบนเซิร์ฟเวอร์ VPN เราได้เปิดใช้งานการบีบอัดข้อมูลด้วย comp-lzo และบนไคลเอนต์เราไม่มีการบีบอัดเลย จำเป็นที่ทั้งเซิร์ฟเวอร์และไคลเอนต์จะต้องมีอัลกอริธึมการบีบอัดที่เหมือนกันทุกประการ ในการแก้ไขข้อผิดพลาดนี้เพียงแค่ใส่คำสั่ง: «บีบอัด»บนไคลเอนต์เพื่อให้ยอมรับการบีบอัดที่เซิร์ฟเวอร์ส่งผ่าน« PUSH »ที่ดำเนินการ

ข้อผิดพลาด "เขียนถึง TUN / TAP: ข้อผิดพลาดที่ไม่รู้จัก (รหัส = 122)" อาจปรากฏขึ้นเนื่องจากคุณลักษณะการบีบอัดนี้

ข้อผิดพลาด TLS: TLS handshake ล้มเหลว

เกิดข้อผิดพลาดขณะเจรจาข้อมูลบนช่องควบคุมเป็นไปได้ว่าเรามี tls-cipher หรือ tls-ciphersuites ที่แตกต่างกันและไม่มีอัลกอริธึมช่องควบคุมทั่วไปจึงทำให้ "handshake" ล้มเหลวและไม่สามารถดำเนินการต่อได้

อัปเดตและข่าวสารใน OpenVPN เวอร์ชันใหม่

OpenVPN ไม่หยุดอัปเดตและเผยแพร่เวอร์ชันใหม่พร้อมการแก้ไขข้อบกพร่องการปรับปรุงประสิทธิภาพและการปรับปรุงความปลอดภัยโดยมีเป้าหมายสูงสุดที่การเชื่อมต่อ VPN จะปลอดภัยที่สุด ต่อไปเราจะอธิบายถึงการปรับปรุงบางอย่างที่ OpenVPN 2.5 จะมีซึ่งจะมาเร็ว ๆ นี้เนื่องจากอยู่ในช่วง "ผู้สมัครรุ่น"

มีเพิ่ม Tls-crypt-v2

tls-crypt เป็นฟังก์ชันที่ช่วยให้เราลดการโจมตี DoS และ DDoS บนเซิร์ฟเวอร์ OpenVPN ด้วยคีย์เหล่านี้ที่เราสร้างโดยตรงใน OpenVPN เราจะสามารถทำการตรวจสอบสิทธิ์ลูกค้าล่วงหน้าแต่ละรายเพื่อเข้าสู่ขั้นตอนการพิสูจน์ตัวตนในภายหลังด้วย ใบรับรองไคลเอ็นต์ tls-crypt เวอร์ชันแรกต้องการให้ทั้งเซิร์ฟเวอร์และไคลเอนต์ทั้งหมดมีคีย์ tls-crypt เหมือนกันทุกประการ ด้วย tls-crypt-v2 เราสามารถทำให้ลูกค้าแต่ละรายมีคีย์ tls-crypt ของตัวเองได้ด้วยวิธีนี้องค์กรขนาดใหญ่มากหรือผู้ให้บริการ OpenVPN สามารถปกป้องเซิร์ฟเวอร์ของตนได้อย่างเพียงพอโดยการสร้างคีย์เหล่านี้หลาย ๆ

รองรับการเข้ารหัส ChaCha20-Poly1305

ปัจจุบันการเข้ารหัสแบบสมมาตรที่ปลอดภัยที่สุดที่สามารถใช้กับช่องข้อมูลคือ AES-256-GCM และ AES-128-GCM ด้วย OpenVPN 2.5 เวอร์ชันล่าสุดเราจะมีความเป็นไปได้ในการเลือกการเข้ารหัส ChaCha20-Poly1305 ยอดนิยมที่ใช้ VPN เช่น WireGuard.

การเจรจาต่อรองการเข้ารหัสขั้นสูงบนช่องข้อมูล

เกี่ยวข้องอย่างใกล้ชิดกับประเด็นก่อนหน้านี้เรามีใน OpenVPN 2.5 เวอร์ชันใหม่ตัวเลือก ncp-ciphers ได้ถูกเปลี่ยนชื่อเป็น data-ciphers แม้ว่าชื่อเดิมจะยังคงได้รับการยอมรับ การเปลี่ยนแปลงนี้มีขึ้นเพื่อหลีกเลี่ยงความคลุมเครือของ“ –cipher” และ“ –tls-cipher” ตอนนี้ไคลเอนต์ VPN จะบอกเซิร์ฟเวอร์ว่ารองรับการเข้ารหัสประเภทใดและเซิร์ฟเวอร์จะเลือกการเข้ารหัสทั่วไปตัวแรกจากรายการรหัสข้อมูลที่รองรับแทนที่จะใช้อันแรกในรายการซึ่งจะทำให้การสร้าง VPN เร็วขึ้น . นอกจากนี้ยังช่วยให้เราทราบว่าหากเซิร์ฟเวอร์มีการกำหนดค่า "data-ciphers" ChaCha20-Poly1305: AES-256-GCM และไคลเอนต์มี ChaCha20-Poly1305 เซิร์ฟเวอร์จะใช้เนื่องจากไคลเอ็นต์รองรับ

การสนับสนุน BF-CBC จะถูกลบออกในการตั้งค่าเริ่มต้น

ตอนนี้การกำหนดค่า OpenVPN เริ่มต้นจะไม่อนุญาตให้ใช้ BF-CBC เวอร์ชันล่าสุดจะยอมรับเฉพาะรหัส AES-256-GCM และ AES-128-GCM สำหรับช่องข้อมูล เราต้องจำไว้ว่าใน OpenVPN เรามี BG-CBC เมื่อเราไม่มีตัวเลือกของ –cipher หรือ –ncp-ciphers ในการกำหนดค่า หากคุณต้องการใช้การเข้ารหัสประเภทนี้คุณจะต้องเปิดใช้งานอย่างชัดเจน

เราหวังว่าคู่มือนี้จะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ สามารถแสดงความคิดเห็นได้เราขอแนะนำให้คุณ เยี่ยมชม OpenVPN HOWTO อย่างเป็นทางการ ซึ่งคุณจะพบข้อมูลทั้งหมดเกี่ยวกับพารามิเตอร์ต่างๆที่จะใช้ MAN PAGE ของ OpenVPN 2.4 ที่คุณมีพารามิเตอร์ทั้งหมดก็มีประโยชน์มากเช่นกัน