สร้าง self-signed SSL Certificate

จาก ติดตั้ง 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

 

ข้อมูลอ้างอิง

 

Leave a Reply

Your email address will not be published.