IIS7: tidak dapat menetapkan nama host di situs dengan cert SSL dan port 443

47

Pertimbangkan mesin Win 2008 SP2 dengan IIS7. Tugasnya adalah untuk menerapkan sertifikat dan nama host ke satu-satunya Situs di mesin ini. Header host situs harusabc.123.example.com

Langkah pertama adalah menginstal .pfx ke Personal Store, yang berhasil.

IIS7 menemukan sertifikat sebagai tersedia, tetapi tidak akan mengizinkan entri nama host. Kotak teks nama host SELALU dinonaktifkan / diklik, bahkan sebelum memilih sertifikat saya. Saya bahkan telah menghapus port default 80 yang mengikat.

Ikatan Situs

Pertanyaan: bagaimana saya bisa menetapkan nama host untuk situs ini? Apakah masalah sertifikat ini menjadi sertifikat wildcard? Saya mengerti bahwa permintaan SSL masuk ke server web, dan header host dalam paket dienkripsi. Lalu mengapa IIS6 memungkinkan header host ditentukan, tetapi IIS7 tidak?

Pembaruan: Sertifikat ini bukan bagian dari masalah. Saya telah membuat Situs baru di mesin, dan ketika memilih https mengikat, kotak teks nama host dinonaktifkan.

p.campbell
sumber

Jawaban:

32

Anda tidak dapat melakukannya dari UI, Anda harus melakukannya dari baris perintah. Inilah langkah-langkah proses yang bagus:

http://www.sslshopper.com/article-ssl-host-headers-in-iis-7.html

joeqwerty
sumber
33
trik praktis, beri sertifikat nama yang bersahabat dimulai dengan '*' IIS tidak akan menghapus
russau
1
Saya tahu ini sudah tua, dan hanya dalam komentar, tetapi trik yang berguna ini menyelamatkan saya dari frustrasi. Terima kasih!
bpursley
45

Ini berfungsi di GUI ...

Pastikan 'nama ramah' dari sertifikat yang Anda pasang sama dengan nama domain multi yang Anda buat untuk sertifikat tersebut.

yaitu. * .companydomain.com

jika Anda memasukkan 'Nice friendly name' untuk * .companydoman.com cert, saat memasang cert ke IIS, itu akan menghapus kotak header nama host.

Jika Anda menggunakan * .companyname.com sebagai nama yang ramah, berarti Anda adalah orang emas.

Ledakan.

Lindsay Rex
sumber
14
Terima kasih atas tip ini! Jika ada orang lain yang tidak dapat mengganti nama sertifikat dari IIS (dapatkah ada orang?) Anda dapat mengganti nama sertifikat dalam snap-in MMC untuk Sertifikat. Cukup muat MMC, tambahkan snap-in Sertifikat, pilih Akun Komputer, Komputer Lokal. Setelah Anda memasukkan snap-in Sertifikat, Anda dapat menjelajah ke Sertifikat (Komputer Lokal)> Pribadi> Sertifikat dan klik kanan untuk memilih Properti pada sertifikat Anda. Ubah bidang Nama friendly ke * .yoursite.com dan muat ulang snap-in manajer IIS
Garrett
4
Friendlyname sepertinya hanya perlu dimulai dengan "*" tetapi dapat berisi nama lain apa pun yang Anda inginkan setelah itu. Dalam kasus saya, saya memiliki sertifikat yang valid untuk beberapa domain berbeda yang tidak memiliki akar yang sama dengan * .com dan memberikannya sebagai nama yang ramah tampaknya aneh. Jadi, saya akhirnya memanggilnya * -saya-deskriptif-nama-di sini sebagai gantinya. Dan terima kasih @Garrett untuk tip rename!
wojtow
Ini jawaban yang sebenarnya. Bagus
Joe Phillips
@ Garrett Apakah ini berarti bahwa jika saya telah menggunakan nama yang ramah seperti 'My Domain SSL', semuanya akan tetap berfungsi, meskipun bidang nama host kosong. Itu benar-benar membuat saya takut ketika saya kehilangan nama host saya, tetapi 4 domain wildcard saya tampaknya bekerja dengan baik dengan SSL yang diterbitkan kembali? Jelas menggunakan '* .mydomain.com' sebagai nama yang ramah hanya memungkinkan Anda untuk melihat nama host, tetapi di bawah tenda, kedua opsi harus bekerja. Kalau tidak, IIS harus secara eksplisit memberitahu kita untuk menggunakan nama domain yang memenuhi syarat & bukan nama yang ramah?
Charles Robertson
10

Jawaban singkatnya adalah bahwa setiap IP hanya dapat memiliki satu sertifikat yang terikat padanya, sehingga pengikatan sertifikat akan berlaku tidak peduli nama host apa pun yang diarahkan ke alamat IP tersebut. Mampu menentukan nama host akan menyiratkan bahwa Anda dapat memiliki beberapa nama host dan kombinasi sertifikat pada alamat dan port IP yang sama (seperti yang Anda bisa dengan entri non-SSL), tetapi ini tidak terjadi, sehingga bidang tidak tersedia.

Penjelasan yang lebih lengkap adalah bahwa SSL mengenkripsi lalu lintas Anda, dan bagian dari lalu lintas itu adalah tajuk HTTP yang dikirim oleh peramban ke server. Salah satu tajuk tersebut adalah tajuk "Tuan Rumah" yang digunakan IIS untuk menentukan situs mana yang akan diisi dengan permintaan. Karena sertifikat perlu dimuat untuk membangun koneksi yang aman SEBELUM header permintaan dikirim, IIS harus memilih sertifikat hanya berdasarkan alamat IP dan nomor port, meninggalkan header "Host" dalam keadaan dingin sebagai faktor dalam menentukan situs mana yang akan dimuat, sehingga mereka tidak membiarkan Anda memasukkannya.

Berikut ini adalah artikel yang menguraikan cara kerja bagian dalam koneksi SSL secara lebih rinci.

Justin Scott
sumber
Terima kasih atas jawaban ini, Justin. Saya masih tidak yakin mengapa IIS7 tidak membiarkan saya menentukan header host, bahkan ketika saya memilih salah satu alamat IP dalam daftar. IIS6 tidak tanpa masalah. Seperti yang disebutkan, ini adalah satu-satunya situs di mesin.
p.campbell
2
Header host dapat bekerja dengan sertifikat wildcard, atau sertifikat multi-domain "UC": sslshopper.com/unified-communications-uc-ssl-certificates.html . Dalam hal ini server hanya memiliki 1 cert untuk melayani walaupun ada beberapa nama host.
russau
Penjelasannya sangat jelas. +1
Dan Solovay
7

Jawaban SSLShopper tidak berfungsi untuk saya karena meninggalkan ikatan tanpa header host, dan Anda tidak dapat menghapus ikatan itu tanpa memutus koneksi ke sertifikat. Berikut adalah metode yang saya gunakan untuk membuatnya bekerja:

Harap perhatikan bahwa jawaban ini mengasumsikan bahwa sertifikat Anda telah dibuat, ditambahkan ke toko sertifikat, dan ditambahkan ke IIS. Ini juga mengasumsikan Anda tidak ingin ada ikatan lainnya ke situs web Anda selain yang SSL.

Pertama, kita perlu mengumpulkan beberapa informasi. Kami membutuhkan hash, ID aplikasi dan nama host.

Langkah

  1. Buka IIS, pilih server Anda dan klik dua kali pada "Sertifikat Server" di bagian bawah. Catat alamat "Diterbitkan untuk". Ini adalah nama tuan rumah kami. Simpan ini.
  2. Pilih situs Anda
  3. Bind situs Anda ke port 80 menggunakan protokol http
  4. Hapus semua binding lainnya
  5. Bind situs Anda ke port 443 menggunakan protokol https
  6. Buka prompt perintah

    netsh http show sslcert
    
  7. Simpan Sertifikat Hash dan ID Aplikasi

  8. Hapus ikatan https di situs Anda
  9. Pada prompt perintah:

    netsh http add sslcert ipport=0.0.0.0:443 certstorename=my certhash=<put Certificate Hash here> appid={<put Application ID here>}
    
    appcmd set site /site.name:"<put site name here>" /+bindings.[protocol='https',bindingInformation='*:443:<put host name here>']
    

Catatan: Appcmd.exe dapat ditemukan di c: \ windows \ system32 \ insetsrv. Anda mungkin perlu berada di folder itu agar perintah ini berfungsi.

  1. Hapus pengikat http dari situs Anda
Slogmeister Luar Biasa
sumber
Terima kasih! Ini akhirnya membantu saya membuat situs saya berfungsi di HTTPS. Saya mengoreksi kesalahan ketik di salah satu perintah, tetapi saya harus menambahkan judul Langkah untuk melewati persyaratan panjang minimum. Jangan ragu untuk menghapusnya - jawaban awal Anda mudah diikuti. Tepuk tangan!
potatopeelings
Ini bekerja untuk saya dengan sertifikat dengan 6 SAN (bukan sertifikat wildcard) dengan sedikit variasi karena saya punya beberapa situs. Saya harus melakukan langkah 1 hingga 7 sekali. Langkah 8 harus dilakukan di setiap situs. Perintah pertama dari langkah 9 harus dilakukan sekali dan perintah kedua dari langkah 9 harus dilakukan sekali per situs.
Steve Kaye
4

Jawaban yang diterima di sini membingungkan dan saya pikir itu tidak benar untuk pertanyaan itu. Itu seharusnya bukan jawaban yang diterima.

Masalah

Anda memiliki wildcard SSL seperti *.ipsum.comdan sertifikat diinstal tetapi Anda tidak dapat memilih nama host untuk situs di IIS ketika Anda mencoba menambahkan HTTPS mengikat karena kotak teks berwarna abu-abu.

Solusinya

SSL wildcard Anda dapat digunakan dengan subdomain apa pun, Anda hanya perlu memastikan Anda memulai Nama Ramah sertifikat *. Saya lebih suka menggunakan nama ramah yang sama dengan domain wildcard, mis. *.ipsum.comTetapi Anda bisa menyebutnya apa saja yang ada di asterix:*foo

Saya memberi sertifikat saya nama Friendly yang salah, tolong!

Sejak Windows 8 atau Server 2012, Anda dapat mengetik certlm.mscdi menu mulai untuk mengelola sertifikat untuk mesin lokal. Pada versi windows sebelumnya Anda perlu melakukan sesuatu yang sedikit lebih berbelit-belit:

  1. Lari mmc.exedari awal
  2. Buka Filemenu dan pilih Add/Remove Snap-in...atau tekan(Ctrl-M)
  3. Sorot Certificatessnap-in dan tekan Add >kemudian pilih Computer Accountdiikuti oleh Local Computerdi dialog berikutnya lalu tekan Finishdiikuti oleh OKuntuk menutup jendela Snap-in

Di jendela utama, memperluas Certificates (Local Computer)maka Personalkemudian Certificatesdan Anda akan dapat klik-kanan sertifikat, memukul Propertiesdi mana Anda dapat memperbarui nama ramah.

Tutup dan buka IIS Manager dan Anda kemudian dapat menetapkan nama host Anda.

Zac
sumber
1
Itu berhasil!
Kreker
1
@ Zak Luar Biasa. Luar biasa. Luar biasa. Meskipun saya tidak benar-benar berpikir itu penting jika bidang nama host kosong, itu memberi saya lebih banyak ketenangan pikiran. Harap diingat, bahwa saya menerbitkan kembali sertifikat saya. Jadi nama host saya sudah ada di kolom nama host sebelum kosong. SSL wildcard saya sepertinya berfungsi dengan nama yang ramah atau. * Mydomain.com name type. Saya pikir IIS menyimpan catatan internal nama host, setelah bidang nama host menjadi kosong. Saya pikir saya harus menyebutkan ini, kalau-kalau orang takut!
Charles Robertson
1
@ Zak Oh. Dan solusi ini berfungsi pada server dinosaurus seperti Windows 2008R2 ...
Charles Robertson
@CharlesRobertson sangat senang ini membantu, dan terima kasih telah menambahkan info tambahan itu!
Zac
2

Sebenarnya, Anda dapat menambahkan header host melalui gui, tetapi itu tergantung pada bagaimana sertifikat tersebut dinamai ... jika saya memberikan nama * * .xyz.com yang ramah ke sertifikat wildcard saya, dan pilih sertifikat itu, maka saya bisa menggunakan gui. jika nama yang bersahabat adalah sesuatu seperti xyzwildcard, dan saya memilih itu, maka itu keluar dari bidang hostheader ...

Aneh aneh

Tialen
sumber
1

Beberapa mesin tidak akan membiarkan Anda mengedit nama host jika protokol diubah menjadi https atau setelah menambahkan sertifikat SSL. IIS kadang-kadang bisa menjadi pemarah.

Perintah Windows ini akan membuat ikatan baru dengan protokol "https", pada port "443", nama host "subdomain.domain.com", nama situs "nama situs". Ubah nilai-nilai itu (dalam tanda kutip) untuk memenuhi persyaratan Anda. Anda kemudian perlu menghapus ikatan lama jika menggunakan port 443.

Run Windows Command Prompt as Administrator

C:>cd C:\Windows\System32\inetsrv

C: \ Windows \ System32 \ inetsrv>appcmd set site /site.name:"site_name" /+bindings.[protocol='https',bindingInformation='*:443:subdomain.domain.com']

MacGyver
sumber
0

Hostname dapat ditambahkan hanya ketika nama friedlyn dari Sertifikat yang dipilih akan seperti nama host * .xyz.com dan Anda dapat mengubah nama nama ramah sertifikat menjadi * .xyz.com dari mmc (Snap-in).

Umer Khan
sumber
-1

Saya pikir artikel KB ini akan menjelaskan masalah ini. Singkatnya, header host HTTP 1.1 tidak didukung ketika Anda menggunakan SSL.

Apa yang mungkin akan mencapai apa yang Anda inginkan adalah menggunakan kunci metabase SecureBindings. Misalnya cscript.exe adsutil.vbs set / w3svc / websiteID / SecureBindings "ip.ip.ip.ip: 443: abc.123.mysite.com

Jim B
sumber
Tidak berlaku untuk IIS 7.
davidcl
itu aneh karena itu berhasil ketika kita melakukannya ...
Jim B
-1

Mengapa MS mengeluarkan GUI ini di luar jangkauan saya, karena, jika Anda memiliki aplikasi ASP.NET yang menggunakan file lisensi (licx), situs Anda tidak akan berfungsi karena muncul sebagai alamat IP alih-alih nama domain. . Mereka harus BERHENTI BERTANGGUNG JAWAB pada setiap rilis baru perangkat lunak mereka - Orang TI tidak perlu diasuh oleh Microsoft! Ya ampun!


sumber
-2
  1. Saya membuat sertifikat yang ditandatangani sendiri dengan * .testcompany.com, saya memilih yang baru dibuat (dimulai dengan *) di drop-down Edit Sertifikat SSL mengikat, saya mengaktifkan kotak teks nama host, membuat nama host sebagai 'webapi.b2c .com ',

  2. Saya memperbarui file host di C: \ Windows \ System32 \ drivers \ etc 127.0.0.1 webapi.b2c.com

Sekarang saya dapat menjelajahi situs sebagai ' https://webapp.b2c.com/ '

Sivalingaamorthy
sumber