Difference between revisions of "OpenSSL: Membuat RootCA di Ubuntu"

From OnnoWiki
Jump to navigation Jump to search
Line 167: Line 167:
 
==Root CA==
 
==Root CA==
  
Hal pertama yang harus kita lakukan adalah membuat root CA. Ini terdiri dari kunci pribadi dan root certificate. Kedua item ini adalah "identitas" CA kita.
+
Membuat private key & root CA certificate. Ini adalah identitas CA.
  
Mari beralih ke pengguna root:
+
Lakukan,
  
  $ sudo su
+
  sudo su
 +
mkdir -p /root/ca
 +
cd /root/ca
 +
mkdir -p newcerts certs crl private requests
 +
touch index.txt
 +
echo 1 > serial
  
Kami akan membuat folder baru yang menyimpan semua kunci dan sertifikat:
+
CA pertama yang akan di tanda tangan adalah no 1.
  
# mkdir /root/ca
+
===Buat private key===
  
Di folder baru ini kita harus membuat beberapa sub-folder tambahan:
+
cd /root/ca
 +
openssl genrsa -aes256 -out private/cakey.pem 4096
  
# cd /root/ca
+
Output:
# mkdir newcerts certs crl private requests
 
 
 
Kami juga membutuhkan dua file. Yang pertama disebut "index.txt". Di sinilah OpenSSL melacak semua sertifikat yang ditandatangani:
 
 
 
# touch index.txt
 
 
 
File kedua disebut "serial". Setiap sertifikat yang ditandatangani akan memiliki nomor seri. Saya akan mulai dengan nomor 1234:
 
 
 
# echo '1234' > serial
 
 
 
Semua folder dan file ada di tempat. Mari buat private key root:
 
 
 
# openssl genrsa -aes256 -out private/cakey.pem 4096
 
  
 
  Generating RSA private key, 4096 bit long modulus
 
  Generating RSA private key, 4096 bit long modulus
Line 201: Line 194:
 
  Verifying - Enter pass phrase for private/cakey.pem:
 
  Verifying - Enter pass phrase for private/cakey.pem:
  
Kunci privat root yang saya hasilkan adalah 4096 bit dan menggunakan enkripsi AES 256 bit. Ini disimpan dalam folder private menggunakan nama file "cakey.pem".
+
Masukan password & INGAT! Jangan sampai LUPA! untuk belajar, pakai password 123456 saja.
 +
 
 +
Private key adalah 4096 bit dengan enkripsi AES 256 bit, di simpan dalam folder /root/ca/private dengan nama "cakey.pem". Jangan sampai hilang, jangan sampai pindah tangan. Simpan file ini dengan aman, selamanya!
  
Siapa pun yang memiliki private key root akan dapat membuat sertifikat yang bisa dipercaya. Simpan file ini dengan aman!
+
===Buat CA Certificate===
  
Sekarang kita bisa menggunakan root private key untuk membuat sertifikat root:
+
openssl req -new -x509 -key /root/ca/private/cakey.pem -out cacert.pem -days 3650 -set_serial 0
  
# openssl req -new -x509 -key /root/ca/private/cakey.pem -out cacert.pem -days 3650 -set_serial 0
+
Output:
  
 
  Enter pass phrase for /root/ca/private/cakey.pem:
 
  Enter pass phrase for /root/ca/private/cakey.pem:
Line 217: Line 212:
 
  If you enter '.', the field will be left blank.
 
  If you enter '.', the field will be left blank.
 
  -----
 
  -----
  Country Name (2 letter code) [AU]:NL
+
  Country Name (2 letter code) [AU]:'''ID'''
  State or Province Name (full name) [Some-State]:North-Brabant
+
  State or Province Name (full name) [Some-State]:'''DKI'''
  Locality Name (eg, city) []:Tilburg
+
  Locality Name (eg, city) []:'''Jakarta'''
  Organization Name (eg, company) [Internet Widgits Pty Ltd]:Networklessons
+
  Organization Name (eg, company) [Internet Widgits Pty Ltd]:'''XecureIT'''
  Organizational Unit Name (eg, section) []:
+
  Organizational Unit Name (eg, section) []:'''RND'''
  Common Name (e.g. server FQDN or YOUR name) []:CA.networklessons.local
+
  Common Name (e.g. server FQDN or YOUR name) []:'''refserver.onnocenter.or.id'''
  Email Address []:admin@networklessons.local
+
  Email Address []:'''onno@indo.net.id'''
  
Sertifikat root akan disimpan sebagai nama file "cacert.pem" dan berlaku selama 10 tahun.
+
Root CA Certificate akan di simpan di /root/ca dengan nama "cacert.pem" dan berlaku selama 10 tahun.
  
 
==Membuat Certificate==
 
==Membuat Certificate==

Revision as of 06:14, 16 June 2017

sumber: https://networklessons.com/uncategorized/openssl-certification-authority-ca-ubuntu-server/

Overview

OpenSSL adalah perpustakaan open-source gratis yang dapat Anda gunakan untuk sertifikat digital. Salah satu hal yang dapat Anda lakukan adalah membangun CA Anda sendiri (Certificate Authority).

Selain situs web dan HTTPS, ada beberapa aplikasi / layanan lain yang bisa menggunakan sertifikat digital. Sebagai contoh:

  • VPNs: di samping menggunakan kunci pra-berbagi anda dapat menggunakan sertifikat digital untuk otentikasi.
  • Wireless: WPA 2 enterprise menggunakan sertifikat digital untuk otentikasi klien dan / atau otentikasi server menggunakan PEAP atau EAP-TLS.

Daripada membayar perusahaan seperti Verisign untuk semua sertifikat digital Anda. Ini bisa berguna untuk membangun CA Anda sendiri untuk beberapa aplikasi anda. Dalam pelajaran ini, Anda akan belajar bagaimana membuat CA anda sendiri.

Prerequisites

Sebelum mengkonfigurasi OpenSSL, kita perlu mengkonfigurasi secara benar,

  • hostname
  • FQDN secara
  • waktu (time)
  • tanggal (date)
  • timezone adalah benar.

hostname & FQDN

Cek hostname

hostname

Contoh Output:

refserver

Cek FQDN:

hostname -f

Contoh Output yang perlu di benarkan

refserver

Perbaiki FQDN

vi /etc/hosts 

Tambahkan pada kalimat

192.168.0.100   refserver

Menjadi

192.168.0.100   refserver refserver.onnocenter.or.id

Restart mesin

shutdown -r now

Verifikasi hostname & FQDN lagi

hostname

Output:

refserver

Cek FQDN

hostname -f

Output:

refserver.onnocenter.or.id


time

Instalasi

sudo locale-gen id_ID.UTF-8
apt install ntpdate

Sinkronkan waktu

ntpdate id.pool.ntp.org

Sinkronkan waktu secara periodik

apt install ntp

Secara default Ubuntu server akan menggunakan NTP server pool berikut

cat /etc/ntp.conf | grep ubuntu
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst
pool ntp.ubuntu.com

Kita dapat memverifikasi server mana yang saat ini digunakan menggunakan perintah,

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
#ntp.uii.net.id  103.1.106.69     2 u   21   64    3   13.424   -0.628   1.944
#mirror2.wowrack 118.143.17.82    2 u   18   64    3    3.371  -33.589   1.009
+182.253.66.202  103.31.225.225   3 u   17   64    3   17.023   -3.330   1.233
-resolv1.axarva. 203.160.128.66   2 u   18   64    3    3.756   -4.204   1.294
+182.253.66.203  203.89.31.13     3 u   13   64    3   18.064   -4.059   1.210
-119.82.243.189  118.143.17.82    2 u   18   64    3   16.169   -2.724   1.366
+203.114.224.31  203.114.224.252  3 u   17   64    3   16.154   -3.313   0.817
#203.114.225.252 203.160.128.66   2 u   16   64    3   15.646   -4.964   1.326
-ns5.datautama.n 203.160.128.66   2 u   16   64    3   16.146   -2.133   1.266
-202.65.114.202  203.160.128.66   2 u   14   64    3   11.969   -0.768   0.573
-45.114.118.90   103.20.91.62     3 u   14   64    3    4.283   -3.204   1.246
*ns1.matrixgloba 203.123.48.219   2 u   15   64    3    3.266   -2.688   0.788
+suro.ubaya.ac.i 203.160.128.66   2 u   14   64    3   17.985   -4.148   1.142
#golem.canonical 17.253.34.125    2 u   18   64    3  272.523   26.441   1.351


Konfigurasi OpenSSL

Edit konfigurasi OpenSSL,

vi /usr/lib/ssl/openssl.cnf

Carilah bagian berikut ini:

[ CA_default ]
dir		= ./demoCA

Ubah, menjadi

[ CA_default ]                                                                                  
dir             = /root/ca

Folder "/root/ca" menjadi tempat menyimpan kunci pribadi dan sertifikat dari CA yang kita buat.

Bagian [policy_match]

[ policy_match ]
countryName             = match
stateOrProvinceName     = match
organizationName        = match
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

Untuk lingkungan percobaan isa dibuat lebih relax, menjadi misalnya,

[ policy_match ]
countryName             = match
stateOrProvinceName     = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

Hanya nama negara saja yang harus cocok

Root CA

Membuat private key & root CA certificate. Ini adalah identitas CA.

Lakukan,

sudo su
mkdir -p /root/ca
cd /root/ca
mkdir -p newcerts certs crl private requests
touch index.txt
echo 1 > serial

CA pertama yang akan di tanda tangan adalah no 1.

Buat private key

cd /root/ca
openssl genrsa -aes256 -out private/cakey.pem 4096

Output:

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

Masukan password & INGAT! Jangan sampai LUPA! untuk belajar, pakai password 123456 saja.

Private key adalah 4096 bit dengan enkripsi AES 256 bit, di simpan dalam folder /root/ca/private dengan nama "cakey.pem". Jangan sampai hilang, jangan sampai pindah tangan. Simpan file ini dengan aman, selamanya!

Buat CA Certificate

openssl req -new -x509 -key /root/ca/private/cakey.pem -out cacert.pem -days 3650 -set_serial 0

Output:

Enter pass phrase for /root/ca/private/cakey.pem:
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) [AU]:ID
State or Province Name (full name) [Some-State]:DKI
Locality Name (eg, city) []:Jakarta
Organization Name (eg, company) [Internet Widgits Pty Ltd]:XecureIT
Organizational Unit Name (eg, section) []:RND
Common Name (e.g. server FQDN or YOUR name) []:refserver.onnocenter.or.id
Email Address []:onno@indo.net.id

Root CA Certificate akan di simpan di /root/ca dengan nama "cacert.pem" dan berlaku selama 10 tahun.

Membuat Certificate

Root CA kita sekarang aktif dan berjalan. Biasanya saat anda ingin memasang sertifikat pada perangkat (server web misalnya), maka perangkat akan menghasilkan CSR (Certificate Signing Request). CSR ini dibuat dengan menggunakan private key perangkat.

Di CA kami, kami kemudian dapat menandatangani CSR dan membuat sertifikat digital untuk perangkat tersebut.

Pilihan lainnya adalah kita bisa melakukan segala hal di CA kita. Kita bisa menghasilkan private key, CSR dan kemudian menandatangani sertifikat ... semuanya "atas nama" perangkat.

Itulah yang akan saya lakukan dalam contoh ini; Ini adalah cara yang bagus untuk menguji apakah CA anda bekerja seperti yang diharapkan.

Saya akan membuat kunci privat, CSR dan sertifikat untuk "server web imajiner".

Mari gunakan folder requests untuk ini:

# cd /root/ca/requests/

Pertama, kita harus menghasilkan private key:

# openssl genrsa -aes256 -out some_serverkey.pem 2048
Generating RSA private key, 2048 bit long modulus
..............................+++
....+++
e is 65537 (0x10001)
Enter pass phrase for some_server.pem:
Verifying - Enter pass phrase for some_server.pem:

Private key-nya adalah 2048 bit dan menggunakan enkripsi AES 256 bit. Dengan private key, kita bisa membuat CSR:

root@ca:~/ca/requests# openssl req -new -key some_serverkey.pem -out some_server.csr
Enter pass phrase for some_serverkey.pem:
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) [AU]:NL
State or Province Name (full name) [Some-State]:North-Brabant
Locality Name (eg, city) []:Tilburg
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Networklessons
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:some_server.networklessons.local
Email Address []:admin@networklessons.local

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Sekarang kita bisa menandatangani CSR yang baru saja kita buat:

# openssl ca -in some_server.csr -out some_server.pem
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for /root/ca/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 4660 (0x1234)
        Validity
            Not Before: Apr  1 09:08:59 2016 GMT
            Not After : Apr  1 09:08:59 2017 GMT
        Subject:
            countryName               = NL
            stateOrProvinceName       = North-Brabant
            organizationName          = Networklessons
            commonName                = some_server.networklessons.local
            emailAddress              = admin@networklessons.local
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                57:A7:7A:41:3E:3F:B3:EE:0D:CF:46:D0:A7:A5:9B:46:92:D1:F0:AD
            X509v3 Authority Key Identifier: 
                keyid:1B:38:B6:9F:82:46:72:5A:04:07:76:C2:DA:A5:5D:EB:95:83:81:30

Certificate is to be certified until Apr  1 09:08:59 2017 GMT (365 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

Itu saja yang perlu dilakukan. File "some_server.pem" adalah sertifikat digital yang ditandatangani untuk server web kami. Jika anda mau, anda dapat menghapus CSR, pindahkan kunci pribadi ke folder "private", dan pindahkan sertifikat baru ke folder "certs":

# rm some_server.csr
# mv some_serverkey.pem /root/ca/private/
# mv some_server.pem /root/ca/certs/

Sertifikat "some_server.pem" sekarang dapat diinstal di server web anda.

Security

Melindungi CA anda penting. Siapa pun yang memiliki akses ke kunci pribadi CA akan dapat membuat sertifikat yang bisa dipercaya.

Salah satu hal yang harus anda lakukan adalah mengurangi hak akses pada folder keseluruhan /root/ca sehingga hanya pengguna root kami yang dapat mengaksesnya:

# chmod -R 600 /root/ca

Dalam contoh ini, kami menggunakan root CA untuk menandatangani sertifikat server web imajiner secara langsung. Ini bagus untuk lingkungan laboratorium tapi untuk jaringan produksi, anda harus menggunakan CA perantara.

Intermediate CA, server lain yang menanda tangan certificate a/n root CA.

Root CA menandatangani sertifikat CA perantara. Anda kemudian dapat mengambil root CA offline yang mengurangi kemungkinan ada orang yang mendapatkan private key root anda.

Verifikasi

Kami membuat beberapa private key dan menghasilkan beberapa sertifikat. Mari kita lihat lebih dekat beberapa pekerjaan kita.

Ini adalah file index.txt:

# cat /root/ca/index.txt
V       170401090859Z           1234    unknown /C=NL/ST=North-Brabant/O=Networklessons/CN=some_server.networklessons.local/emailAddress=admin@networklessons.local

Di atas Anda bisa melihat sertifikat yang kami buat untuk server web kami. Ini juga menunjukkan nomor seri yang saya simpan di file serial. Sertifikat berikutnya yang kami tanda tangani akan mendapatkan nomor lain:

# cat /root/ca/serial
1235

Mari kita lihat lebih dekat sertifikatnya. Kami dapat memverifikasinya dengan OpenSSL, tapi mungkin bagus untuk melihatnya di komputer Anda.



Windows doesn’t recognize the .PEM file extension so you might want to rename your certificates to .CRT.

Here’s the root certificate:

OpenSSL Root Certificate

Above you can see the name of our root CA and the validity (10 years). If we want to trust certificates that are signed by our root CA, then we’ll have to install this certificate. Here’s how:

OpenSSL install root certificate

Hit the Install Certificate button and you will see this wizard:

openssl user or machine

It’s up to you if you want to install it for your current user or the entire computer. Click Next to continue:

openssl trusted root certificate store

Make sure you select the Trusted Root Certification Authorities store and click Next and Finish:

openssl finish install root certificate

Windows will give you one more big security warning, click Yes to continue:

openssl root certificate security warning

The root certificate is now installed and trusted. Now open the certificate that we assigned to “some server”:

openssl server certificate trusted

Above you can see that it was issued by our root CA, it’s valid for one year. When you look at the certification path then you can see that Windows trusts the certificate:

openssl server certification path

This is looking good. If a web server would present this certificate to your computer, then it will trust it from now on.

Referensi