Membuat sertifikat yang ditandatangani sendiri untuk nama host itu mudah, namun akan menjadi lebih rumit jika Anda ingin melakukan hal yang sama untuk alamat IP.
Meskipun tidak terlalu umum, penerbitan sertifikat untuk alamat IP dimungkinkan.
Ekstensi Nama Alternatif Subjek
Ekstensi Nama Alternatif Subjek merupakan perpanjangan dari spesifikasi X.509 yang dijelaskan dalam RFC 5280, bagian 4.2.1.6 sebagai berikut:
Ekstensi nama alternatif subjek memungkinkan identitas terikat
pada subjek sertifikat. Identitas-identitas ini dapat dicantumkan
sebagai tambahan atau sebagai pengganti identitas pada bidang subjek
sertifikat. Opsi yang ditentukan mencakup alamat surat elektronik Internet, nama DNS, alamat IP, dan Uniform Resource Identifier
(URI).
Misalnya, inilah cara Microsoft menggunakannya:
SAN dapat digunakan untuk menerbitkan sertifikat tidak hanya untuk beberapa nama host, tetapi juga untuk alamat IP.
Menghasilkan sertifikat yang ditandatangani sendiri dengan OpenSSL
Untuk menghasilkan sertifikat dengan ekstensi SAN menggunakan OpenSSL, kita perlu membuat konfigurasi terlebih dahulu. Berikut tampilannya:
[persyaratan] default_bits = 2048 nama_dibedakan = req_distinguished_name req_extensions = req_ext x509_extensions = v3_req prompt = tidak[req_distinguished_name] countryName = XX stateOrProvinceName = N/A localityName = N/A OrganizationName = Sertifikat yang ditandatangani sendiri commonName = 120.0.0.1: Sertifikat yang ditandatangani sendiri[req_ext] subjectAltName = @alt_names[v3_req] subjectAltName = @alt_names[nama_alt] IP.1 = 127.0.0.1
Bagian penting di sini adalah yang terakhir, di mana alamat IP diatur. Dimungkinkan juga untuk menambahkan alamat IP dan nama host tambahan di bagian ini.
Simpan konfigurasi ini sebagai san.cnf
dan teruskan ke OpenSSL:
openssl req -x509 -node -hari 730 -kunci baru rsa:2048 -keyout key.pem -out cert.pem -config san.cnf
Ini akan membuat sertifikat dengan kunci pribadi. Mari kita periksa:
openssl x509 -di cert.pem -teks -noout
Outputnya harus berisi alamat IP dari konfigurasi:
Sertifikat: Data: Versi: 3 (0x2) Nomor Seri: 12776076004935403308 (0xb14dbd6f9991072c) Algoritma Tanda Tangan: sha256WithRSAEncryption Penerbit: C=XX, ST=N/A, L=N/A, O=Sertifikat yang ditandatangani sendiri, CN=127.0.0.1: Sertifikat yang ditandatangani sendiri Validitas ... Perihal: C=XX, ST=N/A, L=N/A, O=Sertifikat yang ditandatangani sendiri, CN=127.0.0.1: Sertifikat yang ditandatangani sendiri Info Kunci Publik Subjek: ... Ekstensi X509v3: Nama Alternatif Subjek X509v3: Alamat IP:127.0.0.1 Algoritma Tanda Tangan: sha256DenganRSAEnkripsi ...
Menggunakan sertifikat
Sekarang Anda dapat menginstal dan menggunakan sertifikat dengan cara yang sama seperti Anda menggunakan sertifikat SSL lainnya, misalnya, cara mudah untuk menyajikan file statis adalah menggunakan paket http-server npm:
npx http-server --ssl
Bunyinya cert.pem
dan key.pem
secara otomatis jika --ssl
opsi ditentukan.
Untuk menghindari penambahan pengecualian keamanan di browser, Anda dapat mempercayai sertifikat tersebut. Di macOS, sertifikatnya terlihat seperti ini:
Jika sertifikat dipercaya di Rantai Kunci, Chrome dan Safari tidak akan mengeluhkannya. Firefox menampilkan peringatan tambahan tentang sertifikat yang ditandatangani sendiri:
Jika Anda mencoba memuat situs web dengan sertifikat yang sama dari IP lain, Anda akan mendapatkan kesalahan seperti ini:
Menyatukan semuanya
Untuk mempermudah pembuatan sertifikat untuk alamat IP, saya menggabungkan semuanya dalam satu skrip yang dapat ditemukan di GitHub . Ini akan membuat konfigurasi, memasukkan alamat IP Anda di sana, dan menghasilkan sertifikat dengan kunci pribadi untuk Anda:
curl -sS https://raw.githubusercontent.com/antelle/generate-ip-cert/master/generate-ip-cert.sh | pesta -s 127.0.0.1
Referensi
Jika Anda penasaran tentang SAN, artikel berikut dapat memberikan beberapa informasi mendasar tentangnya:
Sertifikat SAN: Nama Alternatif Subjek – Multi-Domain (SAN)
Bidang Nama Alternatif Subjek memungkinkan Anda menentukan nama host tambahan (situs, alamat IP, nama umum, dll.) untuk…
www.digicert.com
Apa Nama Alternatif Subjek (SAN)? – Bantuan DNSsederhana
Nama Alternatif Subjek (SAN) adalah ekstensi dari spesifikasi X.509 yang memungkinkan pengguna menentukan…
dukungan.dnsimple.com
Ketahui tentang Sertifikat SAN dan Cara Membuat Dengan OpenSSL
Pemindai kerentanan berbasis cloud yang kuat yang menemukan kelemahan keamanan di lingkungan digital Anda, menjelaskan risiko &…
geekflare.com