ใบรับรอง OpenVPN การสร้างใบรับรองและคีย์ การตั้งค่าส่วนเซิร์ฟเวอร์

โอเพ่น VPNเป็นแอปพลิเคชันสำหรับสร้างอุโมงค์ IP ที่ปลอดภัยผ่าน UDP เดียว - หรือพอร์ต TCP - พอร์ต 1194 เพื่อให้มั่นใจในความปลอดภัยของช่องสัญญาณควบคุมและการไหลของข้อมูล OpenVPN ใช้ไลบรารี OpenSSL (โปรโตคอล SSLv3 / TLSv1 ที่แม่นยำยิ่งขึ้น) เช่น ความสามารถในการเข้ารหัส การรับรองความถูกต้อง และการรับรองทั้งหมดของไลบรารี OpenSSL นั้นพร้อมใช้งาน (รหัส ขนาดคีย์ใดก็ได้) อัลกอริธึม HMAC สำหรับ OpenVPN ยังสามารถใช้เพื่อมอบความปลอดภัยที่มากขึ้น และ การเร่งความเร็วด้วยฮาร์ดแวร์ เพื่อปรับปรุงประสิทธิภาพการเข้ารหัส

OpenVPN ใช้กับ Solaris, OpenBSD, FreeBSD, NetBSD, GNU/Linux, แอปเปิ้ลแมค OS X และไมโครซอฟต์วินโดวส์

    OpenVPN ให้การรับรองความถูกต้องหลายประเภทแก่ผู้ใช้:

    ปุ่มที่ตั้งไว้ล่วงหน้าเป็นวิธีที่ง่ายที่สุด

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

OpenVPN สามารถใช้คีย์แบบคงที่ คีย์ที่แชร์ล่วงหน้า หรือการแลกเปลี่ยนคีย์ไดนามิกแบบ TLS นอกจากนี้ยังรองรับ การเชื่อมต่อ VPNด้วยโฮสต์ระยะไกลแบบไดนามิก (DHCP หรือไคลเอ็นต์ผ่านสายโทรศัพท์) ช่องสัญญาณผ่าน NAT หรือผ่านระบบเต็มรูปแบบ ไฟร์วอลล์(เช่นกฎ iptables ของ Linux)

การตั้งค่าไฟล์คอนฟิกูเรชันไคลเอ็นต์เหมือนกันทั้งในรูปแบบไวยากรณ์และการเขียนสำหรับทั้ง Linux และ Windows

ส่วนประกอบเครือข่าย OpenVPN

ส่วนประกอบและวัตถุเครือข่าย OpenVPN หลัก

    ผู้มีอำนาจออกใบรับรอง CA- ออกใบรับรองเมื่อมีการร้องขอจากโหนด เครือข่าย VPNลงนามโดยใบรับรองผู้ออกใบรับรอง มอบใบรับรองโฮสต์ VPN ของตนเองเพื่อตรวจสอบฝ่ายการรับรองความถูกต้อง จัดการรายการเพิกถอนใบรับรอง CRL

    เซิร์ฟเวอร์ OpenVPN- ซอฟต์แวร์เซิร์ฟเวอร์ OpenVPN สร้างอุโมงค์ภายใน เครือข่ายที่ไม่ปลอดภัยเช่น อินเทอร์เน็ต อุโมงค์นี้ให้การรับส่งข้อมูลที่เข้ารหัสอย่างปลอดภัยระหว่างโหนดที่เข้าร่วมในเครือข่าย OpenVPN

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

    ใบรับรอง (กุญแจสาธารณะ) X.509- ใบรับรอง X.509 เป็นกุญแจสาธารณะที่ได้รับการรับรองโดย CA ใช้ในการเข้ารหัสข้อมูล ความจริงที่ว่าใบรับรองได้รับการรับรองโดย CA ทำให้คุณสามารถระบุฝ่ายที่ส่งข้อมูลที่เข้ารหัสได้ ไฟล์คำขอใบรับรองจะถูกสร้างขึ้นบนโหนดเครือข่าย จากนั้นจะถูกถ่ายโอนไปยังโหนดผู้ออกใบรับรองและลงนามที่นั่น ใบรับรองที่ลงนามแล้วที่ได้จะถูกโอนกลับไปยังโหนดเครือข่าย OpenVPN ที่ร้องขอ

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

    รายการเพิกถอนใบรับรอง CRL- ประกอบด้วยรายการใบรับรองที่สูญเสียความน่าเชื่อถือ มันถูกสร้างและแก้ไขบนโหนด CA หากต้องการยกเลิกการเชื่อมต่อโหนดจากเครือข่าย เพียงเพิ่มใบรับรองไปยัง CRL หลังจากการสร้างและการเปลี่ยนแปลงแต่ละครั้ง รายการ CRL จะถูกโอนไปยังเซิร์ฟเวอร์ OpenVPN

    ไฟล์ดิฟฟี-เฮลล์แมน- ใช้เพื่อป้องกันการถอดรหัสการรับส่งข้อมูลที่บันทึกไว้ก่อนการโจรกรรมในกรณีที่มีการโจรกรรมกุญแจ สร้างบนเซิร์ฟเวอร์ OpenVPN

ความปลอดภัยและการเข้ารหัส

ความปลอดภัยและการเข้ารหัสใน OpenVPN จัดทำโดยไลบรารี วิธีใช้ OpenSSL และโปรโตคอล ชั้นการขนส่งความปลอดภัยของเลเยอร์การขนส่ง (TLS) แทนที่จะใช้ OpenSSL ใน OpenVPN เวอร์ชันใหม่ คุณสามารถใช้ไลบรารี PolarSSL ได้ โปรโตคอล TLS เป็นการปรับปรุงโปรโตคอลการถ่ายโอนข้อมูลที่ปลอดภัยของเลเยอร์ Secure Socket Layers (ใบรับรอง SSL สำหรับเว็บไซต์ เมล)

OpenSSL สามารถใช้การเข้ารหัสแบบสมมาตรและไม่สมมาตรได้

ในกรณีแรกก่อนที่จะเริ่มการถ่ายโอนข้อมูลจำเป็นต้องวางสิ่งเดียวกันก่อน รหัสลับ- สิ่งนี้ทำให้เกิดปัญหา โอนอย่างปลอดภัยคีย์นี้ผ่านอินเทอร์เน็ตที่ไม่ปลอดภัย

ในกรณีที่สอง ผู้เข้าร่วมการแลกเปลี่ยนข้อมูลแต่ละคนจะมีสองคีย์ - สาธารณะ (เปิด) และส่วนตัว (ความลับ)

คีย์สาธารณะใช้เพื่อเข้ารหัสข้อมูล และใช้คีย์ส่วนตัวเพื่อถอดรหัส การเข้ารหัสจะขึ้นอยู่กับคณิตศาสตร์ที่ค่อนข้างซับซ้อน อัลกอริธึมการเข้ารหัสคีย์สาธารณะที่เลือกใน SSL/TLS ให้ความสามารถในการถอดรหัสโดยใช้คีย์ส่วนตัวเท่านั้น

คีย์ส่วนตัวเป็นความลับและต้องอยู่ภายในโหนดที่ถูกสร้างขึ้น คีย์สาธารณะจะต้องถูกส่งไปยังผู้เข้าร่วมในการแลกเปลี่ยนข้อมูล

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

เพื่อให้การรับรองความถูกต้อง (การรับรองความถูกต้องของผู้ใช้) โปรโตคอล TLSใช้โครงสร้างพื้นฐานคีย์สาธารณะ (PKI) และการเข้ารหัสแบบอสมมาตร

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

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

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

OpenVPN Debian Wheezy/sid

# ความถนัดติดตั้ง openvpn # mkdir /etc/openvpn/easy-rsa # cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

การเปลี่ยนการตั้งค่าเริ่มต้นสำหรับใบรับรอง

# nano /etc/openvpn/easy-rsa/vars ... ส่งออก KEY_COUNTRY="US" ส่งออก KEY_PROVINCE="CA" ส่งออก KEY_CITY="SanFrancisco" ส่งออก KEY_ORG="Fort-Funston" ส่งออก KEY_EMAIL=" [ป้องกันอีเมล]"

มาสร้างกันเถอะ ตัวแปรสภาพแวดล้อม bash หากยังไม่เสร็จสิ้น เมื่อสร้างคีย์ไคลเอ็นต์ ตัวแปรจะถูกนำมาจาก /etc/openvpn/easy-rsa/openssl.cnf และไม่ใช่จากไฟล์ vars

# cd /etc/openvpn/easy-rsa # source ./vars หมายเหตุ: หากคุณเรียกใช้ ./clean-all ฉันจะทำ rm -rf บน /etc/openvpn/easy-rsa/keys # ./clean- ทั้งหมด # ./build-dh

มาสร้างใบรับรองสำหรับเซิร์ฟเวอร์ชื่อ vpnspar

# ./pkitool --initca # ./pkitool --เซิร์ฟเวอร์ vpnspar

มาสร้างใบรับรองสำหรับลูกค้าที่ชื่อ farm1c คีย์แยกต่างหากสำหรับลูกค้าแต่ละราย

# ./pkitool farm1c # mkdir /etc/openvpn/keys # คีย์ cp/ca.crt /etc/openvpn/keys # คีย์ cp/dh1024.pem /etc/openvpn/keys # คีย์ cp/vpnspar.crt /etc/openvpn /keys # cp คีย์/vpnspar.key /etc/openvpn/keys

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

    เพิ่มเส้นทางให้กับลูกค้าไปยังเครือข่ายย่อยท้องถิ่นของสำนักงานกลาง (กด "เส้นทาง 192.168.1.0 255.255.255.0")

    กำหนดที่อยู่ของเครือข่ายย่อยภายในเครื่องที่อยู่ด้านหลังไคลเอ็นต์ (เช่น เส้นทาง 192.168.2.0 255.255.255.0)

    เชื่อมโยงกับ IP แบบคงที่ (ifconfig-push 192.168.14.21 192.168.14.22) โดยที่ ifconfig-push - คู่ที่อยู่ IP ที่เลือก ประการแรก จะต้องไม่ซ้ำกัน ประการที่สอง ต้องเป็นส่วนหนึ่งของเครือข่ายย่อยต่อเนื่องกันซึ่งจำกัดโดย /30 มาสก์ (255.255.255.252) และประการที่สาม ต้องอยู่ภายในกลุ่มที่อยู่ IP ที่ทุ่มเทให้กับ เครือข่ายส่วนตัวเสมือน (กำหนดโดย พารามิเตอร์เซิร์ฟเวอร์ไฟล์การกำหนดค่าเซิร์ฟเวอร์ OpenVPN)

# mkdir /etc/openvpn/ccd # nano ccd/farm1c กด "เส้นทาง 192.168.1.0 255.255.255.0" #push "เส้นทาง 192.168.35.0 255.255.255.0" # IP แบบคงที่ ifconfig-push 192.168.14.21 192.168 .22 #เส้นทาง 192.168. 2.0 255.255.255.0

เซิร์ฟเวอร์.conf

กำหนดค่าเซิร์ฟเวอร์ในไฟล์ server.conf

# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ # gunzip server.conf.gz # nano /etc/openvpn/server.conf server.conf ท้องถิ่น xxx.196.98.xxx # IP ที่เซิร์ฟเวอร์รับฟังข้อความขาเข้าพอร์ต 1194 # พอร์ตที่เซิร์ฟเวอร์รับฟังข้อความขาเข้าโปรโต udp dev tun # เปิดใช้งานอินเทอร์เฟซการจัดการ OpenVPN มีจำหน่ายที่ ความช่วยเหลือจากเทลเน็ตโลคัลโฮสต์ 7505การจัดการ localhost 7505 ca คีย์/ca.crt # ตำแหน่งของใบรับรองที่เชื่อถือได้ (CA) ที่ลงนามด้วยตนเองคีย์ใบรับรอง / vpnspar.crt # ตำแหน่งใบรับรองเซิร์ฟเวอร์คีย์ คีย์/ vpnspar.key # ตำแหน่งของคีย์ส่วนตัวของเซิร์ฟเวอร์คีย์ dh/ dh1024.pem # ตำแหน่งของไฟล์พารามิเตอร์ Diffie-Halman # การตั้งค่าโหมดเซิร์ฟเวอร์และที่อยู่เครือข่าย VPN # ซึ่ง OpenVPN จะกระจายที่อยู่ให้กับลูกค้า # เซิร์ฟเวอร์จะใช้เวลา 192.168.14.1, ที่อยู่อื่นอีก # รายการจะพร้อมใช้งานสำหรับลูกค้า # ลูกค้าแต่ละรายจะสามารถติดต่อเซิร์ฟเวอร์ได้ที่ 192.168.14.1เซิร์ฟเวอร์ 192.168.14.0 255.255.255.0 # ไฟล์ ipp.txt เก็บข้อมูลเกี่ยวกับการเชื่อมต่อ เช่น ในกรณีที่การเชื่อมต่อล้มเหลว #และการฟื้นฟูต่อไป ifconfig-พูล-คงอยู่ ipp.txt #เส้นทางที่จะส่งให้ลูกค้าแต่ละราย # push - คำสั่ง OpenVPN ส่งไปยังไคลเอนต์และดำเนินการโดยไคลเอนต์ #(วี ในกรณีนี้เพิ่มสองเส้นทางไปยังเครือข่ายส่วนตัวเสมือนบนฝั่งไคลเอ็นต์)ดัน "เส้นทาง 192.168.1.0 255.255.255.0"ดัน "เส้นทาง 192.168.35.0 255.255.255.0" # เปลี่ยนเส้นทางเกตเวย์เริ่มต้นไปยังเซิร์ฟเวอร์ VPN หากไม่จำเป็นก็แสดงความคิดเห็นหรือ # เพิ่มลงใน ccd สำหรับลูกค้าเฉพาะรายกด "เปลี่ยนเส้นทางเกตเวย์ def1" # ระบุตำแหน่งที่จะจัดเก็บไฟล์ที่มีการตั้งค่าที่อยู่ IP ของลูกค้าไคลเอนต์ config-dir ccd # เพิ่มเส้นทางเซิร์ฟเวอร์-ไคลเอนต์ # เส้นทาง - เพิ่มเส้นทางฝั่งเซิร์ฟเวอร์ไปยังเครือข่ายย่อยภายในเครื่องที่อยู่ด้านหลังไคลเอ็นต์เส้นทาง 192.168.14.0 255.255.255.252 # อนุญาตให้ไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์ OpenVPN เพื่อสื่อสารระหว่างกันลูกค้าต่อลูกค้า #คำสั่งตรวจสุขภาพรวมส่ง #ข้อความแบบปิงไปมาทาง #การเชื่อมต่อเพื่อให้แต่ละฝ่ายรู้ว่าเมื่อใด #อีกด้านก็จะหายไป(ลงไป) # ปิงทุกๆ 10 วินาที โดยถือว่ารีโมท # ไม่สามารถเข้าถึงได้หากไม่ได้รับ ping หนึ่งครั้งต่อช่วงระยะเวลาหนึ่ง #เท่ากับ120วินาที keepalive 10 120 comp-lzo max-clients 10 ผู้ใช้ ไม่มีกลุ่ม nogroup ยังคงมีคีย์ ยังคงมีการปรับแต่ง # เนื้อหาของไฟล์สถานะขนาดเล็กที่แสดง # การเชื่อมต่อปัจจุบัน, ถูกตัดทอน # และเขียนใหม่หนึ่งครั้งต่อนาทีสถานะ / var/ log/ openvpn-status.log บันทึก / var/ log/ openvpn.log กริยา 3 # ระดับการแก้ไขข้อบกพร่อง# /etc/init.d/openvpn เริ่มต้น

เพิกถอนใบรับรองไคลเอ็นต์

    ตัวอย่าง- การเพิกถอนใบรับรองผู้ใช้ farm1c # cd /etc/openvpn/easy-rsa # source ./vars # ./revoid-full farm1c การใช้การกำหนดค่าจาก /etc/openvpn/easy-rsa/openssl.cnf การเพิกถอนใบรับรอง 02 อัปเดตฐานข้อมูลแล้ว

    หลังจากคำสั่ง revoid-full บรรทัดที่สอดคล้องกับใบรับรองผู้ใช้ farm1c จะถูกเปลี่ยนเป็นไฟล์ /etc/openvpn/easy-rsa/keys/index.txt

การติดตั้ง OpenVPN + OpenVZ

การติดตั้ง VE(VPS, VDS)

    การติดตั้ง VE Ubuntu สำหรับ OpenVZ # cd /vz/template/cache/ # wget -c http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz # vzctl create 111 --layout simfs --ostemplate ubuntu-14.04-x86_64-การกำหนดค่า CT ขั้นต่ำที่บันทึกไว้ใน /etc/vz/conf/111.conf

    การกำหนดค่า VE 111.conf

    การตั้งค่าอื่น ๆ ทั้งหมดได้ทำไปแล้วใน VE # vzctl enter 111 ที่ติดตั้งไว้

การสร้างคีย์

    การสร้างคีย์โดยใช้ยูทิลิตี้ Easy-RSA ก่อนหน้านี้ยูทิลิตี้นี้เป็นส่วนหนึ่งของการแจกจ่ายเซิร์ฟเวอร์ OpenVPN แต่ตอนนี้เป็นโปรเจ็กต์แยกต่างหาก สามารถดาวน์โหลดยูทิลิตี้เวอร์ชันล่าสุดได้จากเว็บไซต์ OpenVPN แต่การใช้เวอร์ชันที่มาพร้อมกับระบบปฏิบัติการของคุณนั้นถูกต้องมากกว่า ความถนัดติดตั้ง easy-rsa

    ก่อนที่จะเริ่ม OpenVPN daemon เราจำเป็นต้องมีไฟล์การกำหนดค่า OpenSSL ในไดเร็กทอรี /etc/openvpn/keys server.conf - ไฟล์กำหนดค่าเซิร์ฟเวอร์ OpenVPN ca.crt - ใบรับรองของผู้ออกใบรับรอง vpn-server.crt - ใบรับรองเซิร์ฟเวอร์ OpenVPN; เซิร์ฟเวอร์.คีย์ - รหัสส่วนตัวเซิร์ฟเวอร์ OpenVPN ความลับ; crl.pem - รายการเพิกถอนใบรับรอง dh.pem - ไฟล์ Diffie-Hellman เพื่อป้องกันการรับส่งข้อมูลจากการถอดรหัส ta.key - คีย์ HMAC สำหรับ การป้องกันเพิ่มเติมจากการโจมตี DoS และน้ำท่วม

    คัดลอกไดเร็กทอรี easy-rsa ไปยังตำแหน่งที่เราจะสร้างโครงสร้างพื้นฐานคีย์สาธารณะ (PKI) cp -R /usr/share/easy-rsa /etc/openvpn/ cd /etc/openvpn/easy-rsa

    การเปลี่ยนการตั้งค่าเริ่มต้นสำหรับใบรับรองในไฟล์ vars

    ส่งออก KEY_COUNTRY="US" ส่งออก KEY_PROVINCE="CA" ส่งออก KEY_CITY="SanFrancisco" ส่งออก KEY_ORG="Fort-Funston" ส่งออก KEY_EMAIL=" [ป้องกันอีเมล]" ส่งออก KEY_OU="MyOrganizationalUnit"

    มาสร้างตัวแปรสภาพแวดล้อมกันดีกว่า

    แหล่งที่มา ./vars หมายเหตุ: หากคุณเรียกใช้ ./clean-all ฉันจะทำ rm -rf บน /etc/openvpn/easy-rsa/keys

    ชัดเจนจากการทดลองครั้งก่อนๆ มาสร้างคีย์ Diffie-Hellman กัน (คีย์ต้องใช้เวลาพอสมควรในการสร้าง)

    ./clean-all ./build-dh กำลังสร้างพารามิเตอร์ DH, ไพรม์ปลอดภัยแบบยาว 2048 บิต, ตัวสร้าง 2 การดำเนินการนี้จะใช้เวลานาน ...

    มาสร้างไดเร็กทอรีเพื่อจัดเก็บคีย์ส่วนตัวของเซิร์ฟเวอร์ OpenVPN คัดลอกไฟล์ Diffie-Hellman ที่นั่น (dh2048.pem) mkdir /etc/openvpn/keys cp Keys/dh2048.pem /etc/openvpn/keys/

    มาสร้างกันเถอะ ผู้มีอำนาจออกใบรับรอง CA- ca.crt และ ca.key จะถูกสร้างขึ้น ไฟล์ ca.key แสดงถึงคีย์ส่วนตัวของ CA ความลับและเขา ไม่สามารถโอนได้ไปยังโหนดอื่นๆ บนเครือข่ายของคุณ ในทางกลับกันไฟล์ใบรับรอง CA ca.crt เปิดอยู่และจำเป็นสำหรับโหนดเซิร์ฟเวอร์และ ไคลเอนต์ OpenVPN- ./pkitool --initca

    มาสร้างใบรับรองสำหรับเซิร์ฟเวอร์ชื่อ vpnluxor ./pkitool --server vpnluxor

    คัดลอกไฟล์ที่สร้างขึ้น vpnluxor.crt และ vpnluxor.key ไปยังไดเร็กทอรี /etc/openvpn/keys/

    มาสร้างใบรับรองสำหรับไคลเอนต์ client1 ด้วยพารามิเตอร์ CommonName ที่มีชื่อเดียวกัน คีย์แยกต่างหากสำหรับลูกค้าแต่ละราย ./pkitool ไคลเอนต์1

ตำแหน่งของใบรับรองและกุญแจ

ไฟล์ รถ วัตถุประสงค์ เข้าถึง
แคลิฟอร์เนียเซิร์ฟเวอร์และไคลเอนต์ใบรับรองรูท CAสาธารณะ
ซีเอคีย์บนเซิร์ฟเวอร์เท่านั้นจำเป็นสำหรับการลงนามใบรับรองอื่น ๆความลับ
dh(n).pemบนเซิร์ฟเวอร์เท่านั้นพารามิเตอร์ดิฟฟี เฮลล์แมนสาธารณะ
vpnspar.crtบนเซิร์ฟเวอร์เท่านั้นใบรับรองเซิร์ฟเวอร์สาธารณะ
vpnspar.keyบนเซิร์ฟเวอร์เท่านั้นรหัสเซิร์ฟเวอร์ความลับ
darkfire.crtบนไคลเอนต์เท่านั้นใบรับรองลูกค้าสาธารณะ
darkfire.keyบนไคลเอนต์เท่านั้นรหัสลูกค้าความลับ

การติดตั้ง OpenVPN

ไดเร็กทอรี ccd จะจัดเก็บการตั้งค่าส่วนบุคคลสำหรับไคลเอนต์แต่ละราย mkdir /etc/openvpn/ccd.mkdir

การขยายขอบเขตเครือข่าย VPN

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

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

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

ขั้นแรก คุณต้องบอกไคลเอนต์ VPN ว่าซับเน็ต 10.66.0.0/24 สามารถเข้าถึงได้ผ่าน VPN ซึ่งสามารถทำได้ง่ายๆ โดยใช้คำสั่งต่อไปนี้ใน ไฟล์การกำหนดค่าเซิร์ฟเวอร์:

กด "เส้นทาง 10.66.0.0 255.255.255.0"

ถัดไป คุณต้องกำหนดค่าเส้นทางบนเกตเวย์ LAN ในเครือข่ายเซิร์ฟเวอร์เพื่อกำหนดเส้นทางแพ็กเก็ตที่กำหนดไว้สำหรับเครือข่ายย่อยไคลเอนต์ VPN (10.8.0.0/24) ผ่านเซิร์ฟเวอร์ OpenVPN (จำเป็นเฉพาะเมื่อเซิร์ฟเวอร์ OpenVPN และเกตเวย์ LAN เป็น เครื่องต่างๆ)

Iptables -A INPUT -p udp --dport 1194 -j ยอมรับ iptables -A INPUT -i tap+ -j ยอมรับหรือ iptables -A INPUT -i tun+ -j ยอมรับ

การจัดการ OpenVPN

ปัญหา PPPoE และ OpenVPN

ปัญหา:หากเซิร์ฟเวอร์เชื่อมต่อกับ ISP โดยใช้เทคโนโลยี PPPoE ทำงานอย่างไร ในกรณีนี้ OpenVPN จะไม่สามารถทำได้ เครือข่ายที่สามารถเข้าถึงได้ด้านหลังไคลเอนต์ที่เชื่อมต่อ คำสั่งเส้นทางจะไม่ทำงาน เนื่องจาก PPP เขียนเส้นทางเริ่มต้นดังนี้:

# netstat -rn ตารางเส้นทาง IP ของเคอร์เนล เกตเวย์ปลายทาง Genmask แฟล็ก MSS Window irtt Iface 0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0

เหล่านั้น. อินเทอร์เฟซ (ppp0) ถูกระบุโดยเส้นทางเริ่มต้น ไม่ใช่ที่อยู่ IP เซิร์ฟเวอร์ OpenVPN ไม่เข้าใจรายการดังกล่าว สำหรับ การดำเนินการที่ถูกต้องเส้นทางเซิร์ฟเวอร์ OpenVpn ควรมีลักษณะดังนี้:

# netstat -rn เกตเวย์ปลายทาง Genmask ตั้งค่าสถานะ MSS Window irtt Iface 0.0.0.0 91.196.96.35 255.255.255.255 UGH 0 0 0 ppp0

ไคลเอนต์โปรโต udp dev tun ca ca.crt dh dh2048.pem ใบรับรอง client.crt คีย์ client.key ระยะไกล xxx.xxx.xxx.xxx 1194 tls-auth ta.key 1 การเข้ารหัส AES-256 -CBC ผู้ใช้ไม่มีใครกลุ่ม nogroup กริยา 2 ปิดเสียง 20 keepalive 10 120 comp-lzo ยังคงมีคีย์คงอยู่-tun float แก้ไข-ลองอีกครั้ง nobind ที่ไม่มีที่สิ้นสุด

การหมุนเวียนบันทึก OpenVPN

    ในไฟล์ /etc/logrotate.d/openvpn เราเขียนการตั้งค่าสำหรับคำอธิบายและตัวอย่างการตั้งค่า logrotate ใน Linux พารามิเตอร์หลัก คัดลอกตัดทอน(เพื่อไม่ให้ OpenVPN โอเวอร์โหลดและบังคับให้มันเขียนข้อมูลลงในไฟล์บันทึกเดียวกัน) openvpn ฯลฯ/ openvpn/ เซิร์ฟเวอร์/ vpnluxor/ logs/ openvpn.log ( หมุนทุกวัน 8 บีบอัด ล่าช้าบีบอัด ขาดหายไป คัดลอกตัดการแจ้งเตือน สร้าง 640 รูท )

เครือข่ายส่วนตัวเสมือน ด้วยความช่วยเหลือนี้ เราสามารถ:

  • สร้างช่องทางการสื่อสารที่ปลอดภัยในขณะที่เรากำลังนั่งอยู่ด้วย อินเทอร์เน็ตไร้สาย (Wi-Fi) ฟรีในร้านกาแฟ
  • แลกเปลี่ยนไฟล์ระหว่างผู้เข้าร่วมเครือข่าย
  • กระจายอินเทอร์เน็ตโดยใช้เกตเวย์ทั่วไป

ข้อดีหลัก:

  • ติดตั้งง่าย.
  • ความปลอดภัย.
  • ไม่ต้องใช้อุปกรณ์เพิ่มเติม
  • ความเร็วสูงและมีเสถียรภาพ

เช่นเดียวกับผู้เขียนบทความเกี่ยวกับ การติดตั้ง OpenVPNบน Linux ฉันไม่พบบทความปกติและแม้แต่บทความที่อธิบายทุกอย่างอย่างละเอียดจนถึงรายละเอียดที่เล็กที่สุด ในบทความเกี่ยวกับ Habrahabr นี้ ฉันจะพยายามอธิบายทุกอย่างให้ชัดเจนที่สุด ไปกันเลย!

ดาวน์โหลดการแจกจ่าย

ในขณะที่เขียนเวอร์ชันที่มีอยู่ 2.3.2 - ดาวน์โหลดตัวติดตั้ง Windows เวอร์ชัน 32 บิตหรือ 64 บิตเพื่อให้ตรงกับความต้องการของคุณ ระบบปฏิบัติการ.

การติดตั้ง

เมื่อทำการติดตั้ง ต้องแน่ใจว่าได้ทำเครื่องหมายในช่องทั้งหมด เราจะตอบเป็นการยืนยันเมื่อถูกขอให้ติดตั้งไดรเวอร์ อะแดปเตอร์เครือข่ายเสมือนใหม่จะปรากฏในระบบ

การสร้างใบรับรองและคีย์

กาลครั้งหนึ่ง จุดนี้ทำให้ฉันหยุดนิ่ง พวกเขาบอกว่า นี่คือกุญแจ ฉันจะไปหาสิ่งที่ง่ายกว่านี้ แต่อนิจจาฉันไม่พบสิ่งใดที่ดีไปกว่านี้ ดังนั้น ไปที่ C:\Program files\OpenVPN\easy-rsa รัน init-config.bat จากนั้น vars.bat จะปรากฏขึ้น เปิดใน Notepad เราสนใจบรรทัดที่ด้านล่างสุดซึ่งจะต้องกรอกตามต้องการ ตัวอย่างเช่น:
ตั้งค่า KEY_COUNTRY=RU
ตั้ง KEY_PROVINCE=หัวล้าน
ตั้ง KEY_CITY=ปีเตอร์
ตั้งค่า KEY_ORG=OpenVPN
ชุด
ตั้งค่า KEY_CN=เซิร์ฟเวอร์
ตั้งค่า KEY_NAME=เซิร์ฟเวอร์
ตั้งค่า KEY_OU=ouou

มันเขียนตรงไหน. เซิร์ฟเวอร์อย่าแตะต้อง บันทึกแล้ว
ตอนนี้เปิด openssl-1.0.0.cnf แล้วมองหาบรรทัด default_days 365 ตั้งเป็น 3650 ซึ่งจะยืดอายุใบรับรองของเราไปอีก 10 ปี บันทึก. จากนั้น เปิดบรรทัดคำสั่งในบรรทัดคำสั่งเริ่มต้นมาตรฐาน (บน Windows Vista/7/8 ในฐานะผู้ดูแลระบบ) เขียนตามลำดับ:

ซีดี C:\OpenVPN\easy-rsa
วาร์ส
ทำความสะอาดทั้งหมด

คำตอบควรเขียนว่า “Files copied: 1” สองครั้ง ดังนั้นทุกอย่างก็โอเค ในหน้าต่างเดียวกันเราพิมพ์:
สร้าง-dh
จะสร้างคีย์ Diffie-Hellman
สร้าง-แคลิฟอร์เนีย
จะสร้างใบรับรองหลัก
คำถามจะถูกถาม เพียงกด Enter จนกว่าคุณจะเห็นเส้นทาง C:\Program files\OpenVPN\easy-rsa ต่อไปเราพิมพ์:
สร้างคีย์เซิร์ฟเวอร์
หากมีคำถาม ให้กด Enter เพียงสละเวลา! ในตอนท้ายจะมีคำถามสองข้อ: “ลงนามในใบรับรอง?” และ “คำขอใบรับรอง 1 ใน 1 รายการได้รับการรับรอง คอมมิต?” ตอบคำถามทั้งสองข้อ ตอนนี้เรามาสร้างใบรับรองไคลเอ็นต์กันดีกว่า:
ไคลเอนต์คีย์บิลด์
ที่นี่คุณจะต้องระมัดระวังมากขึ้น เมื่อถามชื่อสามัญ (เช่น ชื่อของคุณหรือชื่อโฮสต์ของเซิร์ฟเวอร์) คุณจะต้องป้อนไคลเอนต์ ในตอนท้ายยังมี Y สองครั้งสำหรับแต่ละไคลเอ็นต์ คุณต้องสร้างใบรับรองใหม่โดยใช้ชื่อที่แตกต่างกันเท่านั้น เช่น build-key client1 และยังระบุเป็นชื่อสามัญด้วย ถ้าทำทุกอย่างถูกต้องก็หายใจออกได้! ส่วนที่ยากที่สุดจบลงแล้ว ในโฟลเดอร์ C:\Program Files\OpenVPN\easy-rsa\keys เราใช้: ca.crt, dh1024.pem, server.crt, server.key และวางไว้ใน C:\Program Files\OpenVPN\config

เราสร้างการกำหนดค่า

ไปที่ C:\Program Files\OpenVPN\config สร้างเอกสารข้อความ วาง:
# ยกอุโมงค์ L3
ปรับแต่งการพัฒนา
# โปรโตคอล
โปรโต udp
# พอร์ตที่ VPN ฟัง
พอร์ต 12345
#กุญแจและใบรับรอง
caca.crt
เซิร์ฟเวอร์ใบรับรอง.crt
คีย์เซิร์ฟเวอร์.คีย์
dh dh1024.pem
# พูดคร่าวๆ ก็คือ เราบันทึกที่อยู่ไว้
เครือข่ายย่อยโทโพโลยี
#ที่อยู่พูล
เซิร์ฟเวอร์ 10.8.0.0 255.255.255.0
# วิธีการเข้ารหัส
รหัส AES-128-CBC
#การบีบอัด
คอมพ์-lzo
# ปรับปรุง ping เล็กน้อย
mssfix.php
# อายุการใช้งานของลูกค้า ถ้าไม่ตอบสนอง - ตัดการเชื่อมต่อ
รักษาไว้ 10 120
# ระดับการแก้ไขข้อบกพร่อง
กริยา 3

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

ตอนนี้การกำหนดค่าไคลเอนต์:
ลูกค้า
ปรับแต่งการพัฒนา
โปรโต udp
# ที่อยู่เซิร์ฟเวอร์และพอร์ต
ที่อยู่ห่างไกล 12345
# คีย์จะต้องอยู่ในโฟลเดอร์ปรับแต่ง
caca.crt
ใบรับรอง client.crt
คีย์ client.key
รหัส AES-128-CBC
ไม่มีข้อผูกมัด
คอมพ์-lzo
ยืนยันคีย์
ยังคงมีอยู่
กริยา 3

บันทึกเป็น client.ovpn สร้างโฟลเดอร์ใดๆ และใส่การกำหนดค่า client.ovpn และใบรับรอง ca.crt, client.crt, client.key ไว้ที่นั่น ซึ่งอยู่ใน C:\Program files\OpenVPN\easy-rsa ดาวน์โหลดไคลเอนต์สำหรับ Windows บน เครื่องไคลเอนต์ติดตั้ง ถ่ายโอนโฟลเดอร์ด้วยการกำหนดค่าและใบรับรอง และเรียกใช้ client.ovpn หากคุณเชื่อมต่อแล้ว ให้ลองพิมพ์ ping 10.8.0.1 ในบรรทัดคำสั่ง พัสดุมาถึงแล้วใช่ไหม? ยินดีด้วย! เซิฟเวอร์พร้อมแล้ว! ตอนนี้ไปที่แผงควบคุม - การดูแลระบบ - บริการมองหา OpenVPN ที่นั่น ดับเบิลคลิกและตั้งค่าเป็นอัตโนมัติ ตอนนี้เซิร์ฟเวอร์จะเริ่มทำงานเองหลังจากรีบูต

เรากำลังสรุปการกำหนดค่าหรือการกำหนดค่าของแต่ละรายการเอง

ตอนนี้ฉันจะบอกวิธีเผยแพร่อินเทอร์เน็ตและสิ่งเล็กๆ น้อยๆ อื่น ๆ ที่เกี่ยวข้องกับการตั้งค่า เริ่มจากสิ่งเล็กๆ น้อยๆ กันก่อน เราจะดำเนินการปรับแต่งทั้งหมดด้วยการกำหนดค่าเซิร์ฟเวอร์
หากคุณต้องการให้ลูกค้าของคุณ "เห็น" กัน เช่น สามารถแลกเปลี่ยนข้อมูลได้ แล้วเข้าไปที่ config
ลูกค้าต่อลูกค้า.
หากจำเป็นให้ลูกค้าต้องได้รับ ที่อยู่แบบคงที่จากนั้นในโฟลเดอร์ config ให้สร้างไฟล์ ip.txt และป้อนลงใน config
ifconfig-พูล-คงอยู่ ip.txt
ไม่ต้องการสร้างใบรับรองสำหรับทุกคนใช่ไหม จากนั้นเราก็เขียน ซ้ำ-cnแต่โปรดทราบว่า ifconfig-pool-persist ใช้ไม่ได้กับตัวเลือกนี้
ตอนนี้เกี่ยวกับการกำหนดค่าไคลเอนต์ คุณไม่สามารถถ่ายโอนไฟล์ใบรับรองได้ แต่ป้อนไฟล์เหล่านั้นลงในการกำหนดค่าโดยตรง แต่จะเป็นการดีกว่าถ้าทำเช่นนี้ไม่ใช่จากแผ่นจดบันทึก แต่จาก AkelPad หรือ Notepad++ เป็นต้น เปิด ca.crt และเลือกจาก ——BEGIN CERTIFICATE—— ถึง ——END CERTIFICATE—— การกำหนดค่าจะมีลักษณะดังนี้:


——เริ่มใบรับรอง——
ใบรับรอง
——ใบรับรองจบ——


——เริ่มใบรับรอง——
ใบรับรอง
——ใบรับรองจบ——


——เริ่มต้นคีย์ส่วนตัว——
สำคัญ
——สิ้นสุดคีย์ส่วนตัว——

เราเผยแพร่อินเทอร์เน็ต

หากต้องการทำสิ่งนี้ ให้เข้าสู่การกำหนดค่าเซิร์ฟเวอร์:
กด "เปลี่ยนเส้นทางเกตเวย์ def1"
กด "dhcp-option DNS 8.8.8.8"
กด "dhcp-option DNS 8.8.4.4"

เราแทนที่ที่อยู่ DNS ที่ให้ไว้ในการตั้งค่า คุณสามารถดูได้โดยไปที่แผงควบคุม การเชื่อมต่อการจัดการเครือข่ายโดยดับเบิลคลิกบนอะแดปเตอร์ที่ค้นหาอินเทอร์เน็ต สำหรับแผงควบคุม Win7 - เครือข่ายและศูนย์เครือข่ายอินเทอร์เน็ตและการแบ่งปัน - เปลี่ยนการตั้งค่าอะแดปเตอร์ จากนั้น ไปที่คุณสมบัติของอะแดปเตอร์เดียวกัน แท็บการเข้าถึง ทำเครื่องหมายที่ช่องถัดจาก “อนุญาตผู้ใช้เครือข่ายอื่น…” และในรายการแบบเลื่อนลง หากมี ให้เลือกอะแดปเตอร์ VPN เสมือน จากนั้นไปที่คุณสมบัติของอะแดปเตอร์ VPN คุณสมบัติของ ipv4 และตั้งค่า IP ที่ได้รับและ DNS โดยอัตโนมัติ ขอบคุณสำหรับความสนใจของคุณ!

เราเตอร์ซีรีส์ RTU มีความสามารถในการใช้การเชื่อมต่อที่ปลอดภัยผ่านทางส่วนตัว เครือข่ายเสมือน, เรียกว่า โอเพ่น VPN

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

การกำหนดค่าเกือบทั้งหมดสามารถทำได้ผ่านอินเทอร์เฟซเว็บ แต่องค์ประกอบบางอย่างยังต้องทำผ่านคอนโซล!

OpenVPN คืออะไรและเหตุใดจึงมีความจำเป็นสามารถพบได้ในบทความ Wikipedia: OpenVPN

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

1. การสร้างใบรับรองและคีย์บน Windows

หากต้องการสร้างใบรับรองและคีย์การเข้ารหัสบน Windows OS คุณต้องติดตั้งแอปพลิเคชันเอง โอเพ่น VPN

หลังจากดาวน์โหลดและติดตั้งในโฟลเดอร์ที่คุณระบุ มันจะมีรายการไฟล์ สำหรับฉันนี่คือโฟลเดอร์ C:\Program Files\OpenVPN\

เราจำเป็นต้องไปที่โฟลเดอร์ ง่าย-rsa

จำเป็นต้องเปิด คอนโซลวินโดวส์(สำหรับ Windows Vista/7/8/8.1/10 คุณต้องเรียกใช้ในฐานะผู้ดูแลระบบ)

คุณสามารถดูวิธีเปิดบรรทัดคำสั่ง (คอนโซล) ในฐานะผู้ดูแลระบบได้โดยพิมพ์วลีในเครื่องมือค้นหา (Yandex, Google, Mail ฯลฯ ): " วิธีเรียกใช้พรอมต์คำสั่งในฐานะผู้ดูแลระบบ"

ไปที่โฟลเดอร์ ง่าย-rsaตามเส้นทางการติดตั้งด้วยคำสั่ง ซีดี

ตัวอย่างเช่น:

cd C:\Program Files\OpenVPN\easy-rsa

1.1 เรียกใช้ไฟล์ init-config.bat

C:\Program Files\OpenVPN\easy-rsa>init-config.bat
C:\Program Files\OpenVPN\easy-rsa>คัดลอก vars.bat.sample vars.bat
ไฟล์ที่คัดลอก: 1.

ไฟล์จะปรากฏในโฟลเดอร์ vars.batเปิดมัน โปรแกรมแก้ไขข้อความเราสนใจบรรทัดที่อยู่ท้ายสุดต้องกรอก

เราได้ตั้งค่าพารามิเตอร์ของเราแล้ว พารามิเตอร์ของคุณจะแตกต่างออกไป

ชุด KEY_COUNTRY= รัสเซีย
ตั้ง KEY_PROVINCE= มอสโก
ตั้ง KEY_CITY= มอสโก
ตั้งค่า KEY_ORG= เทเลโอฟิส
ตั้งค่า KEY_EMAIL= [ป้องกันอีเมล]
ตั้งค่า KEY_CN= เซิร์ฟเวอร์
ตั้งค่า KEY_NAME= เซิร์ฟเวอร์
ตั้งค่า KEY_OU= เซิร์ฟเวอร์
ตั้งค่าเซิร์ฟเวอร์ PKCS11_MODULE_PATH=
ตั้ง PKCS11_PIN= 12345

ที่มันบอกว่าเซิร์ฟเวอร์อย่าแตะต้องมัน บันทึกไฟล์.

ค้นหาบรรทัด default_days 365 และแทนที่หมายเลข 365 ด้วย 3650 การทำเช่นนี้จะทำให้ใบรับรองของเรามีอายุการใช้งานยาวนานขึ้นอีก 10 ปี

บันทึกและปิด

1.3 การสร้างคีย์

เราเขียนคำสั่งไปยังคอนโซล

วาร์ส

ทำความสะอาดทั้งหมด

คำตอบควรจะมา

ไฟล์ที่คัดลอก: 1.
ไฟล์ที่คัดลอก: 1.

ถ้าเราเห็นแบบนี้แล้วทุกอย่างจะดีเราก็ไปต่อ...

การสร้างคีย์ Diffie-Hellman

สร้าง-dh

สร้างใบรับรองหลัก

สร้าง-แคลิฟอร์เนีย

เมื่อสร้างใบรับรองหลัก คำถามจะแสดงขึ้นในคอนโซล เพียงกด Enter เพราะ... เราป้อนพารามิเตอร์เหล่านี้ทั้งหมดในไฟล์ vars.bat

กด Enter จนกระทั่งบรรทัดพร้อมท์ปรากฏขึ้น

C:\Program Files\OpenVPN\easy-rsa

สร้างคีย์เซิร์ฟเวอร์

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

ลงนามใบรับรอง?

เราตอบ Y ทั้งสองคำถามนี้

ตอนนี้เราสร้างใบรับรองและรหัสไคลเอนต์:

ไคลเอนต์คีย์บิลด์

เรายังใช้เวลากับคำตอบทันทีที่เราเห็นเส้น " ชื่อสามัญ (เช่น ชื่อของคุณหรือชื่อโฮสต์ของเซิร์ฟเวอร์ของคุณ)“จำเป็นต้องได้รับคำตอบ ลูกค้า

ในตอนท้ายสุดจะมีคำถามสองข้อ เราก็ตอบ Y ด้วย

ยิ่งไปกว่านั้น: สำหรับลูกค้าแต่ละราย คุณจะต้องสร้างคีย์แยกกันและตั้งชื่อ ลูกค้า1, ลูกค้า2หรืออย่างอื่น ทุกอย่างขึ้นอยู่กับจินตนาการของคุณ อย่าลืมป้อนชื่อเหล่านี้เมื่อได้รับแจ้ง ชื่อสามัญ

ตัวอย่างเช่น:

ไคลเอนต์คีย์บิลด์1

สร้างสำนักงานที่สำคัญ1

ไฟล์ทั้งหมดจะอยู่ในโฟลเดอร์ C:\Program Files\OpenVPN\easy-rsa\keys\

จากโฟลเดอร์นี้เราจะนำ:

dh1024.pem(หรือ dh2048.pem)

server.crt

เซิร์ฟเวอร์.คีย์

2. การสร้างใบรับรองและคีย์บน Linux

เราจะสร้างตัวอย่างการสร้างใบรับรองและคีย์บนระบบปฏิบัติการ อูบุนตู ลินุกซ์ 16.04 น

สำหรับระบบอื่นๆบน บนพื้นฐานลินุกซ์คำสั่งบางคำสั่งอาจแตกต่างกันไป!

เปิดคอนโซลระบบปฏิบัติการและติดตั้งแพ็คเกจขนาดเล็ก ง่าย-rsa

sudo apt-get ติดตั้ง easy-rsa

ไปที่ไดเร็กทอรีที่ติดตั้งแพ็คเกจการสร้างใบรับรอง

ซีดี /usr/share/easy-rsa/

สิ่งเดียวคือโฟลเดอร์นี้เขียนได้โดย superuser เท่านั้น เพื่อที่เราจะได้ไม่มีปัญหาในอนาคตเราจะเปลี่ยนเจ้าของ (อย่าพลาดจุดท้ายคำสั่ง!!!)

sudo chown -R เทเลโอฟิส:เทเลโอฟิส

ตอนนี้เรามากำหนดค่าข้อมูลเกี่ยวกับใบรับรองที่จะสร้างกัน

นาโนวาร์

เราพบประเด็นเหล่านี้แล้วปรับเปลี่ยนให้เหมาะกับตัวเราเอง

ส่งออก KEY_SIZE=1024 // ความยาวคีย์
ส่งออก CA_EXPIRE=3650 // ระยะเวลาความถูกต้องของคีย์หลักเป็นวัน
ส่งออก KEY_EXPIRE=3650 // ระยะเวลาความถูกต้องของใบรับรองเป็นวัน
ส่งออก KEY_COUNTRY="RU" // ประเทศ
ส่งออก KEY_PROVINCE="มอสโก" // ภูมิภาค
ส่งออก KEY_CITY="มอสโก" // เมือง
ส่งออก KEY_ORG="TELEOFIS" // องค์กร
ส่งออก KEY_EMAIL=" [ป้องกันอีเมล]" // อีเมล
ส่งออก KEY_OU="เซิร์ฟเวอร์" // แผนก
ส่งออก KEY_NAME="เซิร์ฟเวอร์"//ชื่อคีย์

หลังจากแก้ไขแล้วให้บันทึกไฟล์

สำเนา เวอร์ชันล่าสุดการกำหนดค่า OpenSSL เป็นไฟล์ openssl.cnf

ซีพี openssl-1.0.0.cnf openssl.cnf

กำลังโหลดตัวแปร

ที่มา ./vars

เผื่อว่ามาทำความสะอาดถังขยะกันเถอะ

./ทำความสะอาดทั้งหมด

สร้างใบรับรองเซิร์ฟเวอร์

./build-ca

สำหรับคำถามทั้งหมด ให้กด Enter เราได้แก้ไขพารามิเตอร์เหล่านี้ทั้งหมดล่วงหน้าในไฟล์ วาร์ส


.........................................++++++
.......................................................................................++++++
เขียนคีย์ส่วนตัวใหม่ไปที่ "ca.key"
-----






-----





ชื่อสามัญ (เช่น ชื่อของคุณหรือชื่อโฮสต์ของเซิร์ฟเวอร์ของคุณ):
ชื่อ:
ที่อยู่อีเมล:

สร้างรหัสเซิร์ฟเวอร์

./build-key-เซิร์ฟเวอร์เซิร์ฟเวอร์

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

สำหรับการสอบถามเช่นกัน

ลงนามใบรับรอง?

คำขอใบรับรอง 1 ใน 1 ได้รับการรับรอง ยอมรับหรือไม่

เราตอบ Y

การสร้างคีย์ส่วนตัว RSA 1024 บิต
..............................++++++
.....................++++++
เขียนคีย์ส่วนตัวใหม่ไปที่ "server.key"
-----
คุณกำลังจะถูกขอให้ป้อนข้อมูลที่จะรวมไว้
ลงในคำขอใบรับรองของคุณ
สิ่งที่คุณกำลังจะป้อนคือสิ่งที่เรียกว่า Distinguished Name หรือ DN
มีค่อนข้างน้อยแต่ คุณสามารถเว้นว่างไว้บ้าง
สำหรับบางฟิลด์จะมีค่าเริ่มต้น
หากคุณป้อน "." ช่องจะเว้นว่างไว้
-----
ชื่อประเทศ (รหัส 2 ตัวอักษร) :
ชื่อรัฐหรือจังหวัด (ชื่อเต็ม) :
ชื่อสถานที่ (เช่น เมือง) :
ชื่อองค์กร (เช่น บริษัท) :
ชื่อหน่วยองค์กร (เช่น ส่วน) :
ชื่อสามัญ (เช่น ชื่อของคุณหรือชื่อโฮสต์ของเซิร์ฟเวอร์ของคุณ):
ชื่อ:
ที่อยู่อีเมล:

โปรดป้อนแอตทริบิวต์ "พิเศษ" ต่อไปนี้
จะถูกส่งไปพร้อมกับคำขอใบรับรองของคุณ
รหัสผ่านท้าทาย:
ชื่อบริษัทที่เป็นทางเลือก:
ใช้การกำหนดค่าจาก /usr/share/easy-rsa/openssl-1.0.0.cnf
ตรวจสอบว่าคำขอตรงกับลายเซ็น
ลายเซ็นโอเค
ชื่อเฉพาะของเรื่องมีดังนี้
ชื่อประเทศ:พิมพ์ได้:"RU"
stateOrProvinceName:พิมพ์ได้:"มอสโก"
ชื่อท้องถิ่น:พิมพ์ได้:"มอสโก"
ชื่อองค์กร:พิมพ์ได้:"TELEOFIS"
ชื่อหน่วยงานองค์กร: พิมพ์ได้: "เซิร์ฟเวอร์"
ชื่อสามัญ:พิมพ์ได้:"เซิร์ฟเวอร์"
ชื่อ:พิมพ์ได้:"เซิร์ฟเวอร์"
อีเมล์ที่อยู่: IA5STRING:" [ป้องกันอีเมล]"
ใบรับรองจะได้รับการรับรองจนถึงวันที่ 20 ธันวาคม 13:25:10 2026 GMT (3650 วัน)
ลงนามใบรับรอง? :y

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

การสร้างคีย์ Diffie-Hellman

./build-dh

ความสนใจ!!! สามารถสร้างไฟล์ได้ เวลานานเรารอการสิ้นสุดของรุ่น

กำลังสร้างพารามิเตอร์ DH, ไพรม์ปลอดภัยแบบยาว 1,024 บิต, ตัวสร้าง 2
เรื่องนี้จะใช้เวลานาน
.......+................+.............+.............................................................................+................+........................+...........................................+...............................................................................................................................................+....................+........................................+...................................................................................+....................................................................................................................+.+...................................++*++*++*

เราสร้างคีย์ไคลเอนต์ในลักษณะเดียวกัน

./build-key ไคลเอ็นต์1

./build-key rtu968

เราตอบทุกคำถามด้วย Enter แต่ระวังในตอนท้ายจะมีการร้องขอเพิ่มเติม

ลงนามใบรับรอง?

คำขอใบรับรอง 1 ใน 1 ได้รับการรับรอง ยอมรับหรือไม่

เราตอบพวกเขาว่า Y

การดำเนินการสร้างใบรับรองและไฟล์คีย์จะเสร็จสมบูรณ์

ในโฟลเดอร์ /usr/share/easy-rsa/keys/ใบรับรองและกุญแจของเราจะอยู่ที่นั่น

dh1024.pem(หรือ dh2048.pem)

server.crt

เซิร์ฟเวอร์.คีย์

3. ตัวเลือกเพิ่มเติม

นอกจากนี้ยังมีคีย์และวิธีการเพิ่มเติมเพื่อเพิ่มความปลอดภัยของการเชื่อมต่อ

3.1 คีย์สำหรับการตรวจสอบความถูกต้อง TLS

สร้างโดยคำสั่ง:

openvpn --genkey --secret %KEY_DIR%\ta.key-หน้าต่าง

สำหรับ Linux คุณต้องมีแพ็คเกจ OpenVPN แบบเต็ม เฉพาะแพ็คเกจเท่านั้น ง่าย-rsaจะไม่พอ!

ติดตั้ง แพคเกจที่สมบูรณ์ OpenVPN สามารถทำได้ด้วยคำสั่ง

sudo apt-get ติดตั้ง openvpn

openvpn --genkey --secret /usr/share/easy-rsa/keys/ta.key- ลินุกซ์

3.2 การตรวจสอบและการเพิกถอนใบรับรอง

เรายังสามารถสร้าง ไฟล์เพิ่มเติม crl.pemซึ่งใบรับรองจะถูกตรวจสอบและเพิกถอน

คุณไม่จำเป็นต้องใช้ไฟล์นี้ จะไม่มีอะไรเลวร้ายเกิดขึ้น

หากต้องการใช้งาน ให้สร้างใบรับรองผู้ใช้:

crlsert คีย์บิลด์ - Windows

./build-key crlsert - Linux

เราตอบทุกคำถามโดยกด Enter ยกเว้น ชื่อสามัญและ ชื่อ

สำหรับฟิลด์เหล่านี้ เราจะระบุชื่อของใบรับรองเอง

และสุดท้ายตามคำขอ ลงนามใบรับรอง? - คำขอใบรับรอง 1 ใน 1 ได้รับการรับรอง ยอมรับหรือไม่เราตอบ Y

หลังจากนั้นเราก็รันคำสั่ง เพิกถอนเต็มเธอมีหน้าที่รับผิดชอบในการเพิกถอนใบรับรองและการสร้างไฟล์ในภายหลัง crl.pem

เพิกถอน crlsert เต็ม - Windows

./revoid-full crlsert - Linux

ไฟล์ใบรับรองนั้นเอง clsertสามารถลบได้ เมื่อเพิกถอนแล้ว สิ่งเหล่านี้จะไม่ถูกลบออกจากโฟลเดอร์โดยอัตโนมัติ

เป็นอันเสร็จสิ้นการสร้างคีย์

เรามาดูบทความถัดไปกันดีกว่า:

ข้อมูลเพิ่มเติม