Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีสร้างใบรับรอง SSL บน Linux โดยใช้ OpenSSL

วิธีสร้างใบรับรอง SSL บน Linux โดยใช้ OpenSSL

ขั้นตอนการสร้างใบรับรอง 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
วิธีสร้างใบรับรอง SSL บน Linux โดยใช้ OpenSSL

คุณสามารถตรวจสอบคู่มือที่ให้มา:

openssl help
วิธีสร้างใบรับรอง SSL บน Linux โดยใช้ OpenSSL

การสร้างใบรับรองโดยใช้ไฟล์กำหนดค่า

การสร้างใบรับรองโดยใช้ 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 = test@test.com
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

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

วิธีสร้างใบรับรอง SSL บน Linux โดยใช้ OpenSSL

ถัดไป คุณต้องสร้างคีย์ส่วนตัว RSA ซึ่งจะใช้เพื่อสร้างใบรับรองหลัก -:

openssl genrsa -out example.key 2048

-out ในกรณีนี้จะใช้แฟล็กเพื่อระบุชื่อของคีย์ที่จะสร้าง นอกจากนี้ยังระบุขนาดคีย์ 2048 บิต ซึ่งเป็นค่าเริ่มต้นสำหรับคีย์ RSA

วิธีสร้างใบรับรอง SSL บน Linux โดยใช้ OpenSSL

คุณจะต้องสร้างคำขอลงนามใบรับรอง (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 ที่คุณต้องการ

วิธีสร้างใบรับรอง SSL บน Linux โดยใช้ OpenSSL

การสร้างใบรับรองโดยไม่มีไฟล์กำหนดค่า

หรือคุณสามารถสร้างใบรับรองโดยใช้ OpenSSL โดยไม่ต้องมีไฟล์กำหนดค่า

คุณสามารถเริ่มต้นด้วยการสร้างคีย์ส่วนตัว RSA:

openssl genrsa -out example.key 2048

ต่อไป คุณจะต้องสร้าง CSR:

openssl req -new -key example.key -out example.csr

เมื่อสร้าง CSR คุณจะได้รับแจ้งให้ตอบคำถามเกี่ยวกับองค์กรของคุณ

วิธีสร้างใบรับรอง SSL บน Linux โดยใช้ OpenSSL

สุดท้าย เราสามารถสร้างใบรับรองได้เอง:

openssl x509 -req -days 30 -in example.csr -signkey example.key -out example.crt
วิธีสร้างใบรับรอง SSL บน Linux โดยใช้ OpenSSL

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

ตรวจสอบและยืนยันคีย์และใบรับรองได้ง่ายๆ โดยใช้ OpenSSL ด้วย -check ธง:

openssl rsa -check -in example.key
วิธีสร้างใบรับรอง SSL บน Linux โดยใช้ OpenSSL

คุณสามารถตรวจสอบคำขอลงนามใบรับรอง:

openssl req -text -noout -in example.csr

และใบรับรองอีกด้วย:

openssl x509 -text -noout -in example.crt
วิธีสร้างใบรับรอง SSL บน Linux โดยใช้ OpenSSL

คำถามที่พบบ่อย

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 ตั้งค่าสถานะเมื่อสร้างใบรับรอง