Sijil Elektronik Disahkan Sendiri


Artikel ini di Internet

http://www.mysig.org.my/sig/tech_article.asp?cat=LNX&id=100
http://www.mtusempoi.com/phpbb2/cms_view_article.php?aid=35

Tujuan nota ini adalah sebagai panduan ringkas untuk menghasilkan sijil elektronik SSL yang ditandatangan sendiri. Dengan ini, sijil yang dihasilkan itu tidak perlu dihantar kepada syarikat pengesahan sijil dan membuat bayaran. Ini akan memudahkan hubungan dengan perisian yang menggunakan  protokol https seperti Apache dan Webmin.

Pastikan

(1) Perisian OpenSSL telah sedia dipasang
(2) Perisian untuk komunikasi https sudah dipasang seperti Apache atau Webmin.
(3) Sudah biasa dengan baris arahan.

(A) Ubahsuai fail konfigurasi OpenSSL (openssl.cnf)

Pastikan dimana fail konfigurasi OpenSSL berada. Bagi Distribusi Mandrake fail konfigurasi openssl.cnf berada di /usr/lib/ssl dan bagi distribusi Red Hat ia berada di /usr/share/ssl. Bagi nota ini distribusi Fedora Core 2 akan digunakan.

(1) Ubah fail openssl.cnf. Cari bahagian [ CA_default ].
Pada baris

dir             = /usr/share/ssl        # Where everything is kept

Tukarkan kepada direktori dimana openssl.cnf berada.
Juga pada baris-baris ini

certificate     = $dir/certs/ca.cer   # The CA certificate
private_key     = $dir/private/ca.key # The private key

Keluar daripada editor.

(2) Sediakan fail-fail yang diperlukan. Perlu merujuk bahagian [ CA_default ]. Fail perlu berada di dalam direktori yang dimasukkan diatas.

(i) Fail untuk Index pangkalan data.

touch /usr/share/ssl/index.txt

(ii) Fail untuk simpanan nombor serial

echo "01" > /usr/share/ssl/serial

(iii) Buat direktori /usr/share/ssl/newcerts

mkdir /usr/share/ssl/newcerts


(B) Menyediakan Certificate Authority (CA)


(1) Sediakan kunci peribadi untuk CA

(i) Sila berada di direktori dimana openssl.cnf berada. Semua arahan akan dijalankan daripada direktori itu.

cd /usr/share/ssl

(ii) Jalankan arahan dibawah
openssl genrsa -des3 -out private/ca.key 1024

Generating RSA private key, 1024 bit long modulus
...........................++++++
..............++++++
e is 65537 (0x10001)
Enter pass phrase for private/ca.key:
Verifying - Enter pass phrase for private/ca.key:

Jangan lupa katalaluan yang dimasukkan. Katalaluan diperlukan untuk sebarang urusan melibatkan sijil elektronik ini.

(2) Dengan kunci peribadi ini kita akan membuat sijil yang diperlukan

(i) Gunakan arahan dibawah ini.

openssl req -config openssl.cnf -new -x509 -days 1001 -key private/ca.key -out certs/ca.cer

Enter pass phrase for private/ca.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) [GB]:MY
State or Province Name (full name) [Berkshire]:WP
Locality Name (eg, city) [Newbury]:KL
Organization Name (eg, company) [My Company Ltd]:MYSIG
Organizational Unit Name (eg, section) []:Linux
Common Name (eg, your name or your server's hostname) []:server1.mysig.org.my
Email Address []:secretariat@mysiig.org.my

Masukkan pertanyaan diatas dengan maklumat yang sesuai. Bagi maklumat hostname pastikan ia sama dengan nama server.

Sijil elektronik CA akan berada di /usr/share/ssl/certs/ca.cer

(3) Sebagai pilihan kita boleh export sijil ini ke format PKCS12 untuk membolehkan pengguna Windows memasukkan sijil ini untuk dipercayai (Trusted Root Store). Dengan ini amaran tidak dikeluarkan apabila pengguna melawat tapak laman.

openssl pkcs12 -export -in certs/ca.cer -inkey private/ca.key -out certs/ca.p12

Enter pass phrase for private/ca.key:
Enter Export Password:
Verifying - Enter Export Password:

Masukkan katalaluan untuk CA dan masukkan katalaluan untuk Export. Untuk katalaluan Export boleh tekan enter sahaja. Ini akan memudahkan kerja-kerja Export.


(C) Sediakan sijil untuk server pula


(i) Janakan kunci peribadi untuk server

openssl genrsa -out private/host.key 1024

(ii) Janakan fail permintaan untuk sijil

openssl req -new -out host.req -key private/host.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) [GB]:MY
State or Province Name (full name) [Berkshire]:WP
Locality Name (eg, city) [Newbury]:KL
Organization Name (eg, company) [My Company Ltd]:MYSIG
Organizational Unit Name (eg, section) []:Linux
Common Name (eg, your name or your server's hostname) []:server1.mysig.org.my
Email Address []:secretariat@mysiig.org.my
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Untuk menghasilkan sijil tanpa katalaluan hanya perlu tekan Enter pada "challenge password []:"


(D) Luluskan sijil server dengan CA


openssl ca -policy policy_anything -config openssl.cnf -cert certs/ca.cer -in host.req -keyfile private/ca.key -days 360 -out certs/server.cer

(Satu arahan yang panjang dan bersambung)

Using configuration from openssl.cnf
Enter pass phrase for private/ca.key:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Aug  4 05:31:12 2004 GMT
            Not After : Jul 30 05:31:12 2005 GMT
        Subject:
            countryName               = MY
            stateOrProvinceName       = KL
            localityName              = KL
            organizationName          = MYSIG
            organizationalUnitName    = Linux
            commonName                = server1.mysig.org.my
            emailAddress              = secretariat@mysig.org.my
        X509v3 extensions:
            X509v3 Basic Constraints:
            CA:FALSE
            Netscape Comment:
            OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
            79:D3:CD:22:59:D0:69:60:D4:0B:3F:4B:1E:E1:FC:C4:9E:E1:61:13
            X509v3 Authority Key Identifier:
            keyid:2A:DC:01:65:2C:40:6E:42:9A:41:91:85:18:ED:3E:1B:75:7C:4E:65
            DirName:/C=MY/ST=WP/L=KL/O=MYSIG/OU=Linux/CN=server1.mysig.org.my/emailAddress=secretariat@mysig.org.my
            serial:00
 
Certificate is to be certified until Jul 30 05:31:12 2005 GMT (360 days)
Sign the certificate? [y/n]:y
 
 
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated



(E) Salin host.key dan server.cer (Berada dalam direktori /usr/share/ssl/certs) ke tempat yang sesuai dengan perisian yang hendak digunakan atau ubah konfigurasi kepada kedudukan fail-fail tersebut.

Untuk Apache

(i) Ubah fail /etc/httpd/conf.d/ssl.conf

Sijil Elektronik
SSLCertificateFile /usr/share/ssl/certs/server.cer

Kunci Peribadi
SSLCertificateKeyFile /usr/share/ssl/private/host.key

Untuk Webmin

(i) Ubah fail /etc/webmin/miniserv.conf seperti dibawah ini.

keyfile=/usr/share/ssl/private/host.key
certfile=/usr/share/ssl/certs/server.cer

Sila rujuk laman Webmin http://www.webmin.com/ untuk keterangan lanjut. Modul Perl SSL Net::SSLeay perlu dipasang.


Diharapkan panduan ini membantu untuk menghasilkan tapak laman Internet dan intranet dengan protokol https tanpa perlu keluarkan belanja untuk pendaftaran sijil. Namun untuk tapak laman di Internet dan melibatkan pembayaran adalah penting mempunyai sijil elektronik yang disahkan oleh CA yang rasmi.

Rujukan

http://www.dylanbeattie.net/docs/openssl_iis_ssl_howto.html
http://sial.org/howto/openssl/self-signed/

Sebarang masalah sila rujuk di forum IT Malaysia di

http://www.ittutor.net/
http://www.mysig.org.my/
http://www.mtusempoi.com/

Perbincangan mengenai nota ini boleh dibuat di
http://www.mtusempoi.com/phpbb2/viewtopic.php?t=3090

Pertanyaan boleh dibuat melalui YM dengan nick linuxmalaysia atau email kepada linuxmalaysia at gmail.com

Nota ini sebahagian daripada nota khusus Linux Pertengahan MYSIG untuk Rangkaian Internet
http://www.mysig.org.my/module/module.asp?id=76

Harisfazillah Bin Jamel
linuxmalaysia
hafnie
V 1.0 04AUG2004

Hakcipta Harisfazillah Jamel 2003 2004
http://creativecommons.org/licenses/by-nc-sa/1.0/

http://www.geocities.com/linuxmalaysia
http://hafnie.blogspot.com/