Setting IIS Express untuk SSL(HTTPS)
Soeleman 22 Agustus 2017
Website ataupun Web Aplikasi sekarang ini mensyaratkan jalur komunikasi yang tersandi, lagipula memang kita akan mengarah ke HTTP/2 juga. Itu juga akan berefek ketika kita sedang membuatnya, terutama yang berhubungan dengan protocol auth. Walaupun itu jalur tersandi bukan berarti sudah aman. Itu hanya jalur tersendiri antara client(browser) dan server(Web Server). Dalam tulisan ini kita akan melihat bagaimana menyiapkan itu dalam lingkungan kerja.
Aplikasi
Kita buat sebuah projek ASP.NET Core. Dan seperti pada gambar dibawah, ia berjalan normal. Tapi secara default itu dikonfigurasi dengan HTTP.
Visual Studio 2017
Dalam Visual Studio kita buka property dari projeknya. Kita buka tab Debug.
Untuk mengaktifkan SSL cukup kita check Enable SSL. Dan duplikasi alamat HTTPS-nya ke textbox App URL.
Semudah itu kah? Tampaknya ini hanya salah satu bagian saja. Perubahan ini hanya berlaku ditingkat projek saja.
Karena umumnya kita akan mendapatkan pesan dibawah ketika kita menjalankan ini pertama kali. Pesan itu menunjukkan bahwa ada bagian lain yang perlu di ubah.
Microsoft Management Console (MMC)
Biasanya yang melakukan ini adalah orang DevOps atau IT server. Sesuai dengan tuntutan untuk HTTPS ini, mau tidak mau programmer juga mesti tahu.
Snap Certificates
Pertama kita buka Microsoft Management Console(MMC) seperti pada gambar.
Biasanya MMC-nya akan kosong. Oleh karena itu kita perlu menambahkan sendiri snap yang diperlukan. Caranya dari File >> Add/Remove Snap-in....
Local Computer
Akan muncul window Add or Remove Snap-ins. Karena kita berhubungan dengan SSL yang membutuhkan Certificate maka pilihannya adalah snap-in Certificates.
Dari tombol Add, kita akan dihadapkan pilihan seperti pada gambar. Pertama kita perlu tambahankan Certificate untuk Computer account setelah itu kita tekan tombol Next.
Disini kita menggunakan pilihan Local computer dan selesai kita menambahkan snap-in Certificates untuk tingkat computer-nya.
Seperti yang terlihat digambar. Ada Certificates (Local Computer), yang bisa membantu kita untuk mengelola certificate pada tingkat computer.
User
Yang kita tambahkan diatas untuk tingkat computer-nya. Kita juga perlu menambahkan lagi snap-in Certificates untuk tingkat user-nya.
Caranya hampir sama, yang berbeda setelah kita tekan tombol Add. Pilih _My user account.
Hasilnya kita bisa lihat, ada dua pengelolaan certificates ditingkat yang berbeda.
Export Cert
Yang kita perlu lakukan dengan ini adalah menyamakan certificate dari tingkat computer ke tingkat user-nya.
IIS Express menggunakan certificate localhost untuk menjalankan SSL. Sedangkan browser menggunakan certificate yang ada ditingkat user.
Untuk itu kita perlu menambahkan itu ke tingkat user dengan cara di-export.
Wizard-nya akan membimbing kita melakukan ini.
Karena kita hanya ingin tingkat computer mengenali certificate ini, kita tidak perlu meng-export private key.
Pilihan DER encoded binary X.509(.CER) sudah cukup untuk tujuan ini.
Selanjutnya kita berikan dimana lokasi hasil dari export ini.
Dan selesai sudah kita meng-export localhost certificate ini.
Import Cert
Sekarang kita tinggal meng-import kedalam Trusted Root Certification Authorities dengan mengklik kanan lalu pilih All Tasks kemudian Import.
Kembali Wizard muncul dan kita hanya perlu melanjutkan dengan tombol Next.
Kita berikan lokasi dimana certifacate-nya berada.
Disini kita memberitahukan kepada wizard dimana kita akan menaruh certificate itu.
Ini adalah kesimpulannya wizard sebelum menjalankan proses import ini.
Ada peringatan tentang certificate ini dan kita bisa yakin atas certificate ini(karena kita yang buat sendiri lewat export).
Sekadar info saja bahwa prosesnya berhasil.
Kita akan melihat certificate itu ada dalam koleksi dari user certificates.
Browser
Kita sekarang sudah memiliki certificate localhost dalam tingkat user. Dengan begitu ketika browser akan mengakses local IIS Express. Certificate yang digunakan oleh IIS akan dianggap sebagai certificate yang bisa dipercaya.
Chrome
Umumnya ini sudah bisa menjalankan HTTPS. Tapi beberapa browser kadang melakukan perlindungan lebih. Contohnya Google Chrome, mulai dari versi 58 keatas. Kebijaksaan soal localhost certificate berubah. Bila itu tidak sesuai dengan itu maka akan muncul seperti dibawah.
Kalau muncul seperti itu, kita perlu melakukan pergantian certificate untuk Google Chrome. Dan ini hanya dilakukan apa bila muncul pesan seperti diatas!.
Jalankan powershell script UpdateIISExpressCertificate.ps1 sebagai Administrator.
Setelah itu restart browser dan kita buka halaman web-nya. Sudah HTTPS loh.
Firefox
Lain Firefox lain Google Chrome. Kebijaksaan Firefox untuk ini sedikit mudah untuk diselesaikan. Cukup kita beritahu ke Firefox untuk membuat pengecualian lewat tombol Add Exception.
Setelah itu kita bisa menikmati HTTPS pada IIS Express dengan icon yang menyatakan ini adalah pengecualian.
Penutup
Tidak sulit juga untuk mengaktifkan HTTPS pada IIS Express dalam lingkungan development. Yang penting tahu rangkaian bagaimana bekerjanya SSL dalam lingkup tersebut. Dari ujung ke ujung harus sinkron yang dalam hal ini adalah certificate-nya.
Referensi
- Wikipedia: HTTPS
- Wikipedia: Hypertext Transfer Protocol
- Wikipedia: HTTP/2
- Wikipedia: Transport Layer Security
- Gist: UpdateIISExpressCertificate.ps1
Perhatian! Code yang ditampilkan dalam tulisan ini merupakan ilustrasi dari yang ingin dipaparkan dan bukan production ready code. Sudah banyak kejadian karena asal meng-copy-and-paste tanpa mengerti code yang diambil itu ke dalam production. Selain itu perlu ada tambahan code dan test sebelum siap untuk digunakan secara utuh.