Mkcert: sertifikat HTTPS yang valid untuk localhost


Saat ini, penggunaan HTTPS menjadi wajib untuk semua situs dan aplikasi web. Namun dalam proses pengembangan ada masalah pengujian yang benar. Secara alami, Let's Encrypt dan CA lainnya tidak mengeluarkan sertifikat untuk localhost.

Secara tradisional, ada dua solusi.

  1. Sertifikat yang ditandatangani sendiri dihasilkan melalui openssl atau orang lain. Berikut adalah cara termudah untuk menghasilkan kunci pribadi dan sertifikat yang ditandatangani sendiri untuk localhost:

    openssl req -x509 -out localhost.crt -keyout localhost.key \ -newkey rsa:2048 -nodes -sha256 \ -subj '/CN=localhost' -extensions EXT -config <( \ printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth") 

    Tetapi sertifikat semacam itu akan menyebabkan kesalahan kepercayaan pada browser karena tidak ada otoritas sertifikasi yang sesuai di toko tepercaya.
  2. Caranya adalah dengan mendaftarkan domain baru seperti localhost.example.com, yang secara lokal memutuskan untuk 127.0.0.1 (di / etc / hosts), untuk mendapatkan sertifikat yang biasa untuk domain ini. Tetapi penipuan semacam itu dipertanyakan dari sudut pandang keamanan - setidaknya untuk layanan publik, penyelesaian seperti itu sangat tidak dianjurkan karena kemungkinan serangan MiTM dengan perubahan ke alamat IP yang tidak bersahabat. Jika kita membatasi diri hanya untuk mesin lokal, maka ini mungkin merupakan opsi yang sesuai, meskipun ada juga beberapa keraguan. Selain itu, sertifikat semacam itu dapat dicabut. Bagaimanapun, ada opsi yang lebih sederhana dan lebih aman (lihat di bawah).

Ini adalah mkcert , utilitas sederhana untuk menghasilkan sertifikat tepercaya secara lokal dengan otoritas sertifikasinya sendiri . Ini bekerja di bawah semua OS dan tidak memerlukan konfigurasi apa pun.

Versi Linux


Pertama, Anda perlu menginstal certutil .

 sudo apt install libnss3-tools -- sudo yum install nss-tools -- sudo pacman -S nss 

lalu

 brew install mkcert 

atau kompilasi dari sumber:

 go get -u github.com/FiloSottile/mkcert $(go env GOPATH)/bin/mkcert 

Versi MacOS


 brew install mkcert brew install nss # if you use Firefox 

Versi Windows


Di bawah Windows, Anda dapat mengunduh binari yang dikumpulkan atau menggunakan salah satu manajer paket: Chocolatey atau Scoop.

 choco install mkcert -- scoop install mkcert 

Kehadiran otoritas sertifikat lokal adalah perbedaan mendasar yang paling penting antara mkcert dan openssl dan sertifikat yang ditandatangani sendiri, karena ketika Anda menjalankan CA semacam itu, tidak ada kesalahan kepercayaan terjadi secara lokal.

Pada prinsipnya, Anda dapat memulai dan mengkonfigurasi CA Anda sendiri menggunakan cara lain, tetapi ini membutuhkan pengetahuan dan keterampilan non-sepele. Semuanya dilakukan di sini dengan sendirinya, tanpa kunci dan pengaturan tambahan. Cukup instal program - dan secara otomatis membuat otoritas sertifikasi lokal dan memasukkannya ke penyimpanan tepercaya sistem dan penyimpanan tepercaya Firefox.

 $ mkcert -install Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" The local CA is now installed in the system trust store! ️ The local CA is now installed in the Firefox trust store (requires restart)! 

Source: https://habr.com/ru/post/id435476/


All Articles