ขั้นตอนการสร้างใบรับรอง SSL/TLS เป็นงานทั่วไปสำหรับผู้ดูแลระบบ Linux จำนวนมาก โชคดีที่แม้ว่าคุณจะไม่ใช่ผู้ดูแลระบบ แต่ก็ทำได้ง่ายโดยใช้ OpenSSL ซึ่งเป็นเครื่องมือโอเพนซอร์ซที่ติดตั้งตามค่าเริ่มต้นบนลีนุกซ์รุ่นต่างๆ ในที่นี้ เราจะอธิบายว่า OpenSSL คืออะไร วิธีติดตั้ง และที่สำคัญที่สุดคือ วิธีใช้งานเพื่อสร้างใบรับรอง SSL และ TLS ในระบบของคุณ
OpenSSL คืออะไร
OpenSSL เป็นไลบรารี่ที่พัฒนาโดย OpenSSL Project เพื่อให้บริการโอเพ่นซอร์ส SSL และ TLS สำหรับการเข้ารหัสการรับส่งข้อมูลเครือข่าย มันพร้อมใช้งานสำหรับการกระจายบน Unix ที่หลากหลาย และสามารถใช้เพื่อสร้างใบรับรอง คีย์ส่วนตัว RSA และทำงานที่เกี่ยวข้องกับการเข้ารหัสทั่วไป
ข้อจำกัดของใบรับรอง SSL แบบลงนามเอง
เมื่อคุณใช้ OpenSSL เพื่อสร้างใบรับรอง SSL จะถือว่า "ลงชื่อเอง" หมายความว่าใบรับรอง SSL ถูกเซ็นชื่อด้วยรหัสส่วนตัว ไม่ใช่จากผู้ออกใบรับรอง (CA)
ด้วยเหตุนี้ ใบรับรอง SSL จึงไม่สามารถ "เชื่อถือได้" และไม่ควรใช้สำหรับไซต์สาธารณะใดๆ หากใช้ ผู้ใช้มักจะเห็นคำเตือนจากเบราว์เซอร์เกี่ยวกับใบรับรอง
ใบรับรองที่ลงนามเองมีประโยชน์สำหรับการพัฒนาในพื้นที่หรือแอปที่ทำงานอยู่เบื้องหลังที่ไม่ได้เชื่อมต่อกับอินเทอร์เน็ต
หรือคุณสามารถใช้ LetsEncrypt หรือขอรับใบรับรองที่ตรวจสอบโดยหน่วยงานที่เชื่อถือได้ เช่น Comodo CA
การติดตั้ง
ลีนุกซ์ส่วนใหญ่มีเวอร์ชั่นของ OpenSSL ในตัวอยู่แล้วโดยปริยาย. หากไม่เป็นเช่นนั้น คุณสามารถติดตั้งได้อย่างง่ายดาย
คุณสามารถติดตั้งบน Ubuntu และ Debian ได้โดยใช้ apt
คำสั่ง:
sudo apt install openssl
บน CentOS (หรือทางเลือกอื่น) คุณสามารถติดตั้งได้โดยใช้ yum
คำสั่ง:
sudo yum install openssl
คุณยังสามารถดาวน์โหลดได้จากเว็บไซต์เป็นไฟล์ “.tar.gz” อย่างง่ายดาย
การใช้งานพื้นฐาน
เมื่อคุณได้ติดตั้ง OpenSSL แล้ว เราสามารถดูฟังก์ชันพื้นฐานบางอย่างที่โปรแกรมมีให้
คุณสามารถเริ่มต้นด้วยการดูเวอร์ชันและข้อมูลอื่นๆ ที่เกี่ยวข้องเกี่ยวกับการติดตั้ง OpenSSL ของคุณ:
openssl version -a
คุณสามารถตรวจสอบคู่มือที่ให้มา:
openssl help
การสร้างใบรับรองโดยใช้ไฟล์กำหนดค่า
การสร้างใบรับรองโดยใช้ OpenSSL สามารถทำได้หลายวิธี หนึ่งในนั้นคือการใช้ไฟล์กำหนดค่าซึ่งจะระบุรายละเอียดเกี่ยวกับองค์กร
ในการเริ่มต้น คุณสามารถสร้างไฟล์การกำหนดค่าชื่อ “config.conf” และแก้ไขโดยใช้ Nano:
sudo nano example.conf
นี่คือตัวอย่างเนื้อหาของไฟล์การกำหนดค่า:
[req] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext x509_extensions= v3_ca distinguished_name = dn [dn] C = US ST = California L = Los Angeles O = Org OU = Sales emailAddress = [email protected] CN = www.org.test.com [ v3_ca ] subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer:always basicConstraints = CA:true [req_ext] subjectAltName = @alt_names [alt_names] DNS.1 = test.example.com
คุณเพียงแค่คัดลอกและวางสิ่งนี้ลงในไฟล์ และทำการเปลี่ยนแปลงที่จำเป็นเพื่อแสดงข้อมูลขององค์กรของคุณ
ถัดไป คุณต้องสร้างคีย์ส่วนตัว RSA ซึ่งจะใช้เพื่อสร้างใบรับรองหลัก -:
openssl genrsa -out example.key 2048
-out
ในกรณีนี้จะใช้แฟล็กเพื่อระบุชื่อของคีย์ที่จะสร้าง นอกจากนี้ยังระบุขนาดคีย์ 2048 บิต ซึ่งเป็นค่าเริ่มต้นสำหรับคีย์ RSA
คุณจะต้องสร้างคำขอลงนามใบรับรอง (CSR):
openssl req -new -key example.key -out example.csr -config example.conf
ในกรณีนี้ -key
แฟล็กใช้เพื่อระบุคีย์ RSA, -out
flag ระบุชื่อไฟล์ CSR และ -config
แฟล็กใช้เพื่อระบุชื่อไฟล์ปรับแต่ง
หลังจากนี้ คุณสามารถสร้างใบรับรองหลัก ซึ่งใช้ในการสร้างใบรับรองขั้นสุดท้ายของเรา:
openssl req -x509 -sha256 -nodes -new -key example.key -out example.crt -config example.conf
ในกระบวนการสร้างใบรับรองหลักนี้ -sha256
แฟล็กใช้เพื่อระบุ SHA256 เป็นข้อความย่อย
สำหรับขั้นตอนสุดท้าย ในที่สุด เราก็สามารถพิมพ์ข้อความต่อไปนี้เพื่อสร้างใบรับรองของเรา:
openssl x509 -sha256 -CAcreateserial -req -days 30 -in example.csr -extfile example.conf -CA example.crt -CAkey example.key -out final.crt
-CA
ธงระบุใบรับรองหลัก -CAkey
ธงระบุคีย์ส่วนตัวและ -extfile
ระบุชื่อของไฟล์การกำหนดค่า ไฟล์ “final.crt” จะเป็นใบรับรอง SSL ที่คุณต้องการ
การสร้างใบรับรองโดยไม่มีไฟล์กำหนดค่า
หรือคุณสามารถสร้างใบรับรองโดยใช้ OpenSSL โดยไม่ต้องมีไฟล์กำหนดค่า
คุณสามารถเริ่มต้นด้วยการสร้างคีย์ส่วนตัว RSA:
openssl genrsa -out example.key 2048
ต่อไป คุณจะต้องสร้าง CSR:
openssl req -new -key example.key -out example.csr
เมื่อสร้าง CSR คุณจะได้รับแจ้งให้ตอบคำถามเกี่ยวกับองค์กรของคุณ
สุดท้าย เราสามารถสร้างใบรับรองได้เอง:
openssl x509 -req -days 30 -in example.csr -signkey example.key -out example.crt
การตรวจสอบคีย์และใบรับรอง
ตรวจสอบและยืนยันคีย์และใบรับรองได้ง่ายๆ โดยใช้ OpenSSL ด้วย -check
ธง:
openssl rsa -check -in example.key
คุณสามารถตรวจสอบคำขอลงนามใบรับรอง:
openssl req -text -noout -in example.csr
และใบรับรองอีกด้วย:
openssl x509 -text -noout -in example.crt
คำถามที่พบบ่อย
1. ฉันยังต้องกังวลเกี่ยวกับ Heartbleed หรือไม่
Heartbleed (CVE-2014-0160) เป็นช่องโหว่เก่าที่พบใน OpenSSL ในปี 2014 ทั้งเซิร์ฟเวอร์ TLS และไคลเอ็นต์ที่ใช้ OpenSSL ได้รับผลกระทบทั้งคู่ แพตช์ได้รับการเผยแพร่อย่างรวดเร็วภายในไม่กี่วันหลังจากการค้นพบ และช่องโหว่นี้ไม่ใช่สิ่งที่ต้องกังวลในปี 2022 ตราบใดที่คุณใช้ OpenSSL เวอร์ชันที่ทันสมัยและทันสมัย
หากคุณกำลังใช้ OpenSSL กับระบบที่ใช้ Debian และ Ubuntu คุณสามารถอัปเดตได้ตลอดเวลาโดยใช้คำสั่งต่อไปนี้:
sudo apt update && sudo apt upgrade openssl
2. ใบรับรอง SSL มีอายุการใช้งานนานเท่าใดก่อนที่จะหมดอายุ
ขึ้นอยู่กับค่าที่คุณเลือกเมื่อสร้างใบรับรอง ระบุได้โดยใช้ -days
ตั้งค่าสถานะเมื่อสร้างใบรับรอง