ค้นหาเว็บไซต์

วิธีสร้างใบรับรอง SSL และคีย์ที่ลงนามด้วยตนเองสำหรับ Apache บน RHEL/CentOS 7.0


SSL (Secure Sockets Layer) เป็นโปรโตคอลการเข้ารหัสที่ช่วยให้สามารถรับส่งข้อมูลได้อย่างปลอดภัยระหว่างเซิร์ฟเวอร์และไคลเอ็นต์โดยใช้คีย์สมมาตร/ไม่สมมาตรโดยใช้ใบรับรองดิจิทัลที่ลงนามโดยผู้ออกใบรับรอง (แคลิฟอร์เนีย)

ความต้องการ

  1. การติดตั้ง LAMP ขั้นพื้นฐานบน RHEL/CentOS 7.0

บทช่วยสอนนี้ให้แนวทางในการตั้งค่าโปรโตคอลการเข้ารหัสการสื่อสาร Secure Sockets Layer (SSL) บนเว็บเซิร์ฟเวอร์ Apache ที่ติดตั้งใน Red Hat Enterprise Linux/CentOS 7.0< และสร้างใบรับรองและคีย์ที่ลงนามด้วยตนเองด้วยความช่วยเหลือของสคริปต์ทุบตีซึ่งทำให้กระบวนการทั้งหมดง่ายขึ้นอย่างมาก

ขั้นตอนที่ 1: ติดตั้งและกำหนดค่า Apache SSL

1. หากต้องการเปิดใช้งาน SSL บน Apache HTTP Server ให้ใช้คำสั่งต่อไปนี้เพื่อติดตั้งโมดูล SSL และชุดเครื่องมือ OpenSSL ซึ่งจำเป็นสำหรับการรองรับ SSL/TLS

yum install mod_ssl openssl

2. หลังจากติดตั้งโมดูล SSL แล้ว ให้รีสตาร์ท HTTPD daemon และเพิ่มกฎไฟร์วอลล์ใหม่เพื่อให้แน่ใจว่าพอร์ต SSL – 443 – ถูกเปิดเพื่อ การเชื่อมต่อภายนอกบนเครื่องของคุณในสถานะฟัง

systemctl restart httpd
firewall-cmd --add-service=https   ## On-fly rule

firewall-cmd --permanent  --add-service=https   ## Permanent rule – needs firewalld restart

3. หากต้องการทดสอบการเชื่อมต่อ SSL ให้เปิดเบราว์เซอร์ระยะไกลและนำทางไปยังที่อยู่ IP ของเซิร์ฟเวอร์ของคุณโดยใช้โปรโตคอล HTPS บน https://server_IP

ขั้นตอนที่ 2: สร้างใบรับรอง SSL และคีย์

4. การสื่อสาร SSL ก่อนหน้านี้ระหว่างเซิร์ฟเวอร์และไคลเอนต์เสร็จสิ้นโดยใช้ใบรับรองและคีย์เริ่มต้นที่สร้างขึ้นโดยอัตโนมัติในการติดตั้ง ในการสร้างคีย์ส่วนตัวใหม่และคู่ใบรับรองที่ลงนามด้วยตนเอง ให้สร้างสคริปต์ทุบตีต่อไปนี้บนเส้นทางของระบบที่ปฏิบัติการได้ (` PATH)

สำหรับบทช่วยสอนนี้ /usr/local/bin/ ถูกเลือกไว้ ตรวจสอบให้แน่ใจว่าสคริปต์มีชุดบิตปฏิบัติการ จากนั้นใช้เป็นคำสั่งเพื่อสร้างคู่ SSL ใหม่บน /etc/ httpd/ssl/ เป็นตำแหน่งเริ่มต้นของใบรับรองและคีย์

nano /usr/local/bin/apache_ssl

ใช้เนื้อหาไฟล์ต่อไปนี้

#!/bin/bash
mkdir /etc/httpd/ssl
cd /etc/httpd/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Apache SSL Certificate and Key!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The Certificate and Key for $cert has been generated!\nPlease link it to Apache SSL available website!"
ls -all /etc/httpd/ssl
exit 0

5. ตอนนี้ให้สคริปต์นี้สามารถเรียกใช้งานได้และเปิดใช้งานเพื่อสร้างใบรับรองและคีย์คู่ใหม่สำหรับโฮสต์เสมือน Apache SSL ของคุณ

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

chmod +x /usr/local/bin/apache_ssl
apache_ssl

6. หลังจากที่สร้างใบรับรองและคีย์แล้ว สคริปต์จะแสดงรายการแบบยาวของคู่ Apache SSL ทั้งหมดของคุณที่จัดเก็บไว้ในตำแหน่ง /etc/httpd/ssl/

7. วิธีการอื่นในการสร้างใบรับรอง SSL และคีย์คือการติดตั้งแพ็คเกจ crypto-utils บนระบบของคุณและสร้างคู่โดยใช้คำสั่ง genkey ซึ่งสามารถ ทำให้เกิดปัญหาบางอย่างโดยเฉพาะอย่างยิ่งเมื่อใช้กับหน้าจอเทอร์มินัล สีโป๊ว

ดังนั้นฉันขอแนะนำให้ใช้วิธีนี้เมื่อคุณเชื่อมต่อโดยตรงกับมอนิเตอร์หน้าจอเท่านั้น

yum install crypto-utils
genkey your_FQDN

8. หากต้องการเพิ่มใบรับรองและคีย์ใหม่ลงในเว็บไซต์ SSL ของคุณ ให้เปิดไฟล์การกำหนดค่าเว็บไซต์ของคุณและแทนที่คำสั่ง SSLCertificateFile และ SSLCertificateKeyFile ด้วยคู่ใหม่ ที่ตั้งและชื่อตามนั้น

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

แค่นั้นแหละ! ตอนนี้คุณสามารถใช้ apache_sslเป็นบรรทัดคำสั่งบน RHEL/CentOS 7.0 เพื่อสร้างใบรับรองและคีย์ที่ลงนามด้วยตนเองได้มากเท่าที่คุณต้องการ และทั้งหมดจะถูกเก็บไว้ที่ /etc/httpd/ ssl/ พร้อมไฟล์ Key ที่ป้องกันด้วยสิทธิ์ 700