Saya memiliki subdomain.example.com
yang saya gunakan untuk tujuan pengembangan. Solusi aplikasi web saya berisi API web dll, yang perlu saya panggil dari sistem eksternal, oleh karena itu saya tidak menggunakan localhost.
Sekarang saya perlu menguji SSL dan membutuhkan sertifikat untuk subdomain.example.com
nama domain pengembangan saya .
Saya telah mencoba membuat sertifikat yang ditandatangani sendiri seperti yang dijelaskan di http://technet.microsoft.com/en-us/library/cc753127(v=ws.10).aspx , tetapi sertifikat ini hanya berfungsi untuk localhost. Dapatkah sertifikat ini digunakan untuk tujuan saya atau apakah saya harus membuat tanda tangan mandiri untuk subdomain pengembangan saya? Jika saya harus membuat sertifikasi yang ditandatangani sendiri untuk subdomain pengembangan saya, utilitas atau layanan online apa (Gratis) yang dapat saya gunakan untuk ini?
sumber
makecert.exe
berada di jalur saya. Untuk sertifikat yang menurut saya akan lebih aman dan digunakan-a SHA512 -len 8192
- butuh waktu lama untuk membuatnya. Dan seperti yang saya duga, itu tidak berdampak pada tingkat enkripsi yang digunakan IIS. Secara default IIS menggunakan 128-bit, Anda harus melakukan hal - hal kebijakan grup untuk mengubahnya. Catatan lebih lanjut bagi pembaca lain: jangan ubah angka ajaib setelahnya-eku
, angka itu wajib.sha1
. Gantikan-a sha512
dan pertimbangkan-len 2048
untuk menambahmakecert
doa kedua dan semuanya akan baik-baik saja.Menggunakan PowerShell
Dari Windows 8.1 dan Windows Server 2012 R2 (Windows PowerShell 4.0) dan yang lebih baru, Anda dapat membuat sertifikat yang ditandatangani sendiri menggunakan
New-SelfSignedCertificate
cmdlet baru :Contoh:
Menggunakan Manajer IIS
www.domain.com
atausubdomain.domain.com
sumber
New-SelfSignedCertificate -FriendlyName *.mydomain.local -DnsName *.mydomain.local, localhost -CertStoreLocation Cert:\LocalMachine\My
Ini membuat sertifikat di penyimpanan Pribadi. Kemudian, saya pertama kali mengekspor sertifikat ke file dan kemudian mengimpornya kembali ke IIS melalui Manajer IIS (untuk menggunakannya untuk pengikatan https saya) dan kemudian ke CA Root Tepercaya melalui MMC (untuk menghindari peringatan browser).-NotAfter
pilihan juga berguna untuk menentukan tanggal kedaluwarsa (tanpa itu, default hanya 1 tahun). Contoh yang saya gunakanNew-SelfSignedCertificate -DnsName *.mydomain.com -FriendlyName *.mydomain.com -NotAfter (Get-Date).AddYears(15) -CertStoreLocation cert:\LocalMachine\My
Untuk membuat sertifikat baru untuk domain spesifik Anda:
Buka Powershell ISE sebagai admin, jalankan perintah:
Untuk mempercayai sertifikat baru:
Untuk mengikat sertifikat ke situs Anda:
sumber
Saya harus memecahkan teka-teki melalui sertifikat yang ditandatangani sendiri di Windows dengan menggabungkan potongan-potongan dari jawaban yang diberikan dan sumber daya lebih lanjut. Ini panduan saya sendiri (dan semoga selesai). Semoga ini akan menghindarkan Anda dari kurva belajar saya yang menyakitkan. Ini juga berisi info tentang topik terkait yang akan muncul cepat atau lambat saat Anda membuat sertifikat Anda sendiri.
Buat sertifikat yang ditandatangani sendiri di Windows 10 dan yang lebih lama
Jangan gunakan makecert.exe. Ini sudah tidak digunakan lagi oleh Microsoft.
Cara modern menggunakan perintah Powershell.
Windows 10:
Buka Powershell dengan hak istimewa Administrator:
Windows 8, Windows Server 2012 R2:
Di Powershell pada sistem ini, parameter -FriendlyName dan -NotAfter tidak ada. Hapus saja dari baris perintah di atas.
Buka Powershell dengan hak istimewa Administrator:
Alternatifnya adalah menggunakan metode untuk versi Windows yang lebih lama di bawah ini, yang memungkinkan Anda menggunakan semua fitur Win 10 untuk pembuatan sertifikat ...
Versi Windows yang lebih lama:
Rekomendasi saya untuk versi Windows yang lebih lama adalah membuat sertifikat pada mesin Win 10, mengekspornya ke file .PFX menggunakan contoh mmc (lihat "Percayai sertifikat" di bawah) dan impor ke penyimpanan sertifikat pada mesin target dengan OS Windows lama. Untuk mengimpor sertifikat, JANGAN klik kanan. Meskipun ada item "Impor sertifikat" dalam menu konteks, gagal semua uji coba saya untuk menggunakannya di Win Server 2008. Alih-alih membuka contoh mmc lain di mesin target, arahkan ke "Sertifikat (Komputer Lokal) / Pribadi / Sertifikat" , klik kanan di panel tengah dan pilih Semua tugas → Impor.
Sertifikat yang dihasilkan
Kedua perintah di atas membuat sertifikat untuk domain
localhost
dan*.dev.local
.Versi Win10 juga memiliki waktu hidup 15 tahun dan nama tampilan yang dapat dibaca "Dev Cert * .dev.local, dev.local, localhost".
Pembaruan: Jika Anda memberikan beberapa entri nama host di parameter
-DnsName
(seperti yang ditunjukkan di atas), entri pertama ini akan menjadi Subjek domain (Nama Umum AKA). Daftar lengkap semua entri nama host akan disimpan di bidang Nama Alternatif Subjek (SAN) sertifikat. (Terima kasih kepada @BenSewards karena telah menunjukkannya.)Setelah pembuatan, sertifikat akan segera tersedia di semua pengikatan HTTPS IIS (petunjuk di bawah).
Percayai sertifikatnya
Sertifikat baru bukan bagian dari rantai kepercayaan dan karenanya tidak dianggap dapat dipercaya oleh browser mana pun. Untuk mengubahnya, kami akan menyalin sertifikat ke penyimpanan sertifikat untuk CA Root Terpercaya di komputer Anda:
Buka mmc.exe, File → Add / Remove Snap-In → pilih "Certificates" di kolom kiri → Add → pilih "Computer Account" → Next → "Local Computer ..." → Finish → OK
Di kolom kiri pilih "Sertifikat (Komputer Lokal) / Pribadi / Sertifikat".
Temukan sertifikat yang baru dibuat (di Win 10 kolom "Nama ramah" dapat membantu).
Pilih sertifikat ini dan tekan Ctrl-C untuk menyalinnya ke clipboard.
Di kolom kiri pilih "Certificates (Local Computer) / Trusted Root CAs / Certificates".
Tekan Ctrl-V untuk menempelkan sertifikat Anda ke penyimpanan ini.
Sertifikat akan muncul dalam daftar Trusted Root Authorities dan sekarang dianggap dapat dipercaya.
Gunakan di IIS
Sekarang Anda dapat pergi ke IIS Manager, pilih binding dari situs web lokal → Tambah → https → masukkan nama host formulir
myname.dev.local
(sertifikat Anda hanya berlaku untuk*.dev.local
) dan pilih sertifikat baru → OK.Tambahkan ke host
Tambahkan juga nama host Anda ke C: \ Windows \ System32 \ drivers \ etc \ hosts:
Senang
Sekarang Chrome dan IE harus memperlakukan sertifikat sebagai dapat dipercaya dan memuat situs web Anda saat Anda membuka
https://myname.dev.local
.Firefox memiliki penyimpanan sertifikatnya sendiri. Untuk menambahkan sertifikat Anda di sini, Anda harus membuka situs web Anda di FF dan menambahkannya ke pengecualian saat FF memperingatkan Anda tentang sertifikat tersebut.
Untuk browser Edge mungkin ada lebih banyak tindakan yang diperlukan (lihat lebih jauh di bawah).
Uji sertifikatnya
Untuk menguji sertifikat Anda, Firefox adalah pilihan terbaik Anda. (Percayalah, saya sendiri adalah penggemar Chrome, tetapi FF lebih baik dalam hal ini.)
Berikut alasannya:
Peringatan ini benar! Seperti disebutkan di atas, Firefox tidak menggunakan penyimpanan sertifikat Windows dan hanya akan mempercayai sertifikat ini, jika Anda menambahkan pengecualian untuk itu. Tombol untuk melakukan ini tepat di bawah peringatan.
Peringatan ini menunjukkan, bahwa Anda melakukan sesuatu yang salah. Domain (karakter pengganti) sertifikat Anda tidak cocok dengan domain situs web Anda. Masalahnya harus diselesaikan dengan mengubah (sub-) domain situs web Anda atau dengan menerbitkan sertifikat baru yang cocok. Sebenarnya Anda dapat menambahkan pengecualian di FF meskipun sertifikat tidak cocok, tetapi Anda tidak akan pernah mendapatkan simbol gembok hijau di Chrome dengan kombinasi seperti itu.
Firefox dapat menampilkan banyak peringatan sertifikat bagus dan mudah dipahami lainnya di tempat ini, seperti sertifikat kedaluwarsa, sertifikat dengan algoritme penandatanganan yang kedaluwarsa, dll. Saya tidak menemukan browser lain yang memberi saya tingkat umpan balik untuk mengatasi masalah.
Pola (sub-) domain mana yang harus saya pilih untuk dikembangkan?
Dalam perintah New-SelfSignedCertificate di atas, kami menggunakan domain wildcard
*.dev.local
.Anda mungkin berpikir: Mengapa tidak digunakan
*.local
?Alasan sederhana: Ini ilegal sebagai domain wildcard.
Sertifikat karakter pengganti harus berisi setidaknya nama domain tingkat kedua.
Jadi, bentuk domain
*.local
bagus untuk mengembangkan situs web HTTP. Tetapi tidak terlalu banyak untuk HTTPS, karena Anda akan dipaksa untuk menerbitkan sertifikat baru yang cocok untuk setiap proyek baru yang Anda mulai.Catatan penting:
motör_head.dev.local
Anda dengan pola wildcard Anda*.dev.local
. Mereka akan mematuhi saat Anda beralih kemotoer-head.dev.local
.*.dev.local
cocokmyname.dev.local
tapi TIDAKother.myname.dev.local
!*.*.dev.local
) TIDAK dimungkinkan dalam sertifikat. Jadiother.myname.dev.local
hanya bisa dicakup oleh wildcard berupa*.myname.dev.local
. Akibatnya, yang terbaik adalah tidak menggunakan bagian domain tingkat keempat. Masukkan semua variasi Anda ke bagian tingkat ketiga. Dengan cara ini Anda akan mendapatkan satu sertifikat untuk semua situs dev Anda.Masalah dengan Edge
Ini bukan tentang sertifikat yang ditandatangani sendiri, tetapi masih terkait dengan keseluruhan proses:
Setelah mengikuti langkah-langkah di atas, Edge mungkin tidak menampilkan konten apa pun saat Anda membuka
myname.dev.local
.Alasannya adalah fitur karakteristik dari manajemen jaringan Windows 10 untuk Aplikasi Modern, yang disebut "Isolasi Jaringan".
Untuk mengatasi masalah itu, buka prompt perintah dengan hak istimewa Administrator dan masukkan perintah berikut sekali:
Info lebih lanjut tentang Edge dan Isolasi Jaringan dapat ditemukan di sini: https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/
sumber
appname.dev has a security policy called HTTP Strict Transport Security (HSTS), which means that Firefox can only connect to it securely. You can’t add an exception to visit this site.
yang, seperti yang dinyatakan, tidak mengizinkan Anda untuk menambahkan pengecualian klien, bertentangan dengan instruksi Anda. Apakah ini konfigurasi yang buruk dalam IIS itu sendiri sehubungan dengan Pengaturan SSL, Memerlukan SSL, dan opsi Sertifikat klien?*.mydomain.com
bisa menjadi sertifikat yang validme.mydomain.com
tetapi tidak untukme.at.mydomain.com
.Saya mengalami masalah yang sama ini ketika saya ingin mengaktifkan SSL ke proyek yang dihosting di IIS 8. Akhirnya alat yang saya gunakan adalah OpenSSL , setelah beberapa hari berkelahi dengan perintah makecert. Sertifikat dihasilkan di Debian, tetapi saya dapat mengimpornya dengan mulus ke IIS 7 dan 8.
Unduh OpenSSL yang kompatibel dengan OS Anda dan file konfigurasi ini . Tetapkan file konfigurasi sebagai konfigurasi default OpenSSL.
Pertama, kami akan membuat kunci pribadi dan sertifikat Otoritas Sertifikasi (CA). Sertifikat ini untuk menandatangani permintaan sertifikat (CSR).
Anda harus melengkapi semua bidang yang diperlukan dalam proses ini.
openssl req -new -x509 -days 3650 -extensions v3_ca -keyout root-cakey.pem -out root-cacert.pem -newkey rsa:4096
Anda dapat membuat file konfigurasi dengan pengaturan default seperti ini: Sekarang kami akan membuat permintaan sertifikat, yaitu file yang dikirim ke Otoritas Sertifikasi.
Common Name harus menetapkan domain situs Anda, misalnya: public.organization.com .
openssl req -new -nodes -out server-csr.pem -keyout server-key.pem -newkey rsa:4096
Sekarang permintaan sertifikat ditandatangani dengan sertifikat CA yang dihasilkan.
openssl x509 -req -days 365 -CA root-cacert.pem -CAkey root-cakey.pem -CAcreateserial -in server-csr.pem -out server-cert.pem
Sertifikat yang dihasilkan harus diekspor ke file .pfx yang dapat diimpor ke IIS.
openssl pkcs12 -export -out server-cert.pfx -inkey server-key.pem -in server-cert.pem -certfile root-cacert.pem -name "Self Signed Server Certificate"
Pada langkah ini kami akan mengimpor sertifikat CA.
Di server Anda harus mengimpor sertifikat CA ke Otoritas Sertifikasi Root Terpercaya, agar IIS dapat mempercayai sertifikat yang akan diimpor. Ingatlah bahwa sertifikat yang akan diimpor ke IIS, telah ditandatangani dengan sertifikat CA.
Dengan langkah ini, IIS mempercayai keaslian sertifikat kami.
Pada langkah terakhir kami, kami akan mengimpor sertifikat ke IIS dan menambahkan situs pengikatan.
Sekarang masuk ke situs Anda di IIS Manager dan pilih Bindings ... dan Add a new binding.
Pilih https sebagai jenis pengikatan dan Anda seharusnya dapat melihat sertifikat yang diimpor.
sumber
Opsi lainnya adalah membuat sertifikat yang ditandatangani sendiri yang memungkinkan Anda menentukan nama domain per situs web. Ini berarti Anda dapat menggunakannya di banyak nama domain.
Di Manajer IIS
Sekarang, di situs web Anda di IIS ...
sumber
Cara lain yang mudah untuk menghasilkan sertifikat yang ditandatangani sendiri adalah dengan menggunakan Jexus Manager,
https://www.jexusmanager.com/en/latest/tutorials/self-signed.html
sumber