จาก ติดตั้ง Apache SSL Web Server หากเราต้องการสร้าง self-signed SSL Certificate ขึ้นมาใช้เอง เช่นภายในบริษัท อาจต้องการใส่ข้อมูลบางอย่างลงไป เพื่อให้ผู้ใช้งานดูได้เบื้องต้น สามารถทำได้โดยใช้คำสั่ง openssl
ข้อมูลที่กรอกในคำสั่ง openssl นี้จะถูกเก็บไว้ใน Certificate ที่สร้างขึ้น โดยผู้ใช้สามารถดูได้ใน Browser
[root@fc16-64 ~]# openssl req -new -x509 -nodes -out my-web.crt -keyout my-web.key Generating a 2048 bit RSA private key ........+++ ...........................+++ writing new private key to 'my-web.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:TH State or Province Name (full name) []:Bangkok Locality Name (eg, city) [Default City]:Bangkapi Organization Name (eg, company) [Default Company Ltd]:SpaLinux Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:fc16-64.example.com Email Address []:info@example.com
จากการรันคำสั่ง openssl จะได้มาสองไฟล์
- my-web.key ไฟล์ private key
- my-web.crt ไฟล์ certificate
copy สองไฟล์นี้ไปไว้ใน ไดเร็คทอรีคอนฟิก ของ apache
[root@fc16-64 ~]# cp my-web.crt my-web.key /etc/httpd/conf
เปลี่ยน permission ของไฟล์ my-web.key เป็น 400
[root@fc16-64 ~]# cd /etc/httpd/conf [root@fc16-64 conf]# chmod 400 my-web.key [root@fc16-64 conf]# ls -l my-web.* -rw-r--r--. 1 root root 1436 Feb 25 17:52 my-web.crt -r--------. 1 root root 1704 Feb 25 17:52 my-web.key
แก้ไขไฟล์ ssl.conf เพื่อให้ชี้มายังไฟล์ private key และ certificate ใหม่
[root@fc16-64 conf]# cat /etc/httpd/conf.d/ssl.conf ... # Server Certificate: # Point SSLCertificateFile at a PEM encoded certificate. If # the certificate is encrypted, then you will be prompted for a # pass phrase. Note that a kill -HUP will prompt again. A new # certificate can be generated using the genkey(1) command. #SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateFile /etc/httpd/conf/my-web.crt # Server Private Key: # If the key is not combined with the certificate, use this # directive to point at the key file. Keep in mind that if # you've both a RSA and a DSA private key you can configure # both in parallel (to also allow the use of DSA ciphers, etc.) #SSLCertificateKeyFile /etc/pki/tls/private/localhost.key SSLCertificateKeyFile /etc/httpd/conf/my-web.key ...
ใช้คำสั่ง service เพื่อรีโหลด Apache Web Server
[root@fc16-64 conf]# service httpd reload Reloading httpd configuration (via systemctl): [ OK ]
ทดลองใช้ Firefox เปิดหน้าเว็บ https นี้อีกครั้ง จะมีหน้าขึ้นเตือนว่า Untrusted Connection เหมือนเดิม
แต่ลองกดเข้าไปเพื่อ View ข้อมูล Certificate จะแสดงข้อมูลที่ระบุลงไปตอนรันคำสั่ง openssl
ข้อมูลอ้างอิง