IIS7: không thể đặt tên máy chủ trên trang web với chứng chỉ SSL và cổng 443


47

Hãy xem xét một máy Win 2008 SP2 với IIS7. Nhiệm vụ là áp dụng chứng chỉ và tên máy chủ cho Trang web duy nhất và duy nhất trên máy này. Các tiêu đề máy chủ của trang web cần phải đượcabc.123.example.com

Bước đầu tiên là cài đặt .pfx vào Cửa hàng cá nhân, đã thành công.

IIS7 tìm thấy chứng chỉ là có sẵn, nhưng sẽ không cho phép nhập tên máy chủ. Hộp văn bản tên máy chủ LUÔN LUÔN bị vô hiệu hóa / bị mờ đi, ngay cả trước khi chọn chứng chỉ của tôi. Tôi thậm chí đã xóa cổng ràng buộc 80 mặc định.

Ràng buộc trang web

Câu hỏi: làm thế nào tôi có thể đặt tên máy chủ cho trang web này? Đây có phải là vấn đề của chứng chỉ này là chứng chỉ ký tự đại diện không? Tôi hiểu rằng yêu cầu SSL đến máy chủ web và tiêu đề máy chủ trong gói được mã hóa. Tại sao sau đó IIS6 sẽ cho phép tiêu đề máy chủ được chỉ định, nhưng IIS7 thì không?

Cập nhật: Chứng chỉ không phải là một phần của vấn đề. Tôi đã tạo một Trang web mới trên máy và khi chọn liên kết https, hộp văn bản tên máy chủ bị tắt.

Câu trả lời:


32

Bạn không thể làm điều đó từ UI, bạn phải làm điều đó từ dòng lệnh. Đây là một bước đi tốt đẹp trong suốt quá trình:

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


33
Thủ thuật tiện dụng, cung cấp cho chứng chỉ một tên thân thiện bắt đầu bằng '*' một IIS sẽ không chuyển sang hộp tiêu đề máy chủ: blog.armgasys.com/?p=80
russau

1
Tôi biết điều này là cũ, và nó chỉ trong một bình luận, nhưng thủ thuật tiện dụng này đã tiết kiệm cho tôi một số thất vọng. Cảm ơn bạn!
bpursley

45

Nó không hoạt động trong GUI ...

Chỉ cần đảm bảo 'tên thân thiện' của chứng chỉ bạn đang cài đặt giống với tên miền đa tên bạn đã tạo cho chứng chỉ.

I E. * .companydomain.com

nếu bạn đặt 'Tên thân thiện dễ thương' cho chứng chỉ * .companydoman.com, khi cài đặt chứng chỉ vào IIS, nó sẽ chuyển sang hộp tiêu đề tên máy chủ.

Nếu bạn sử dụng * .companyname.com làm tên thân thiện, bạn sẽ là vàng.

Bùng nổ.


14
Cảm ơn vì món tiền boa này! Trong trường hợp bất kỳ ai khác không thể đổi tên một chứng chỉ từ IIS (ai cũng có thể?), Bạn có thể đổi tên chứng chỉ trong phần đính kèm MMC cho Chứng chỉ. Chỉ cần tải MMC, thêm Chứng chỉ đính vào, chọn Tài khoản máy tính, Máy tính cục bộ. Khi bạn đã tải Chứng chỉ đính vào, bạn có thể duyệt đến Chứng chỉ (Máy tính cục bộ)> Cá nhân> Chứng chỉ và nhấp chuột phải để chọn Thuộc tính trên chứng chỉ của bạn. Thay đổi trường Tên thân thiện thành * .yoursite.com và tải lại phần đính vào trình quản lý IIS
Garrett

4
Tên thân thiện dường như chỉ cần bắt đầu bằng "*" nhưng có thể chứa bất kỳ tên nào khác bạn muốn cho nó sau đó. Trong trường hợp của tôi, tôi đã có một chứng chỉ hợp lệ cho một số tên miền khác nhau không có gốc chung khác ngoài * .com và cho rằng tên thân thiện có vẻ kỳ lạ. Vì vậy, cuối cùng tôi đã gọi nó là * -my-miêu tả-tên-ở đây. Và cảm ơn @Garrett về mẹo đổi tên!
wojtow 7/10/2015

Đây là câu trả lời thực sự. Nice
Joe Phillips

@Garrett Điều này có nghĩa là nếu tôi đã sử dụng một tên thân thiện như 'SSL tên miền của tôi', mọi thứ sẽ vẫn hoạt động, mặc dù trường tên máy chủ trống. Nó thực sự làm tôi bối rối khi tôi mất tên máy chủ của mình, nhưng 4 tên miền phụ ký tự đại diện của tôi dường như hoạt động tốt với SSL được phát hành lại? Rõ ràng bằng cách sử dụng '* .mydomain.com' làm tên thân thiện chỉ cho phép bạn xem tên máy chủ, nhưng dưới mui xe, cả hai tùy chọn sẽ hoạt động. Nếu không, IIS nên nói rõ ràng cho chúng tôi sử dụng một tên miền đủ điều kiện & không phải là một tên thân thiện?
Charles Robertson

10

Câu trả lời ngắn gọn là mỗi IP chỉ có thể có một chứng chỉ được liên kết với nó, vì vậy ràng buộc chứng chỉ sẽ được áp dụng cho dù tên máy chủ nào được hướng đến địa chỉ IP đó. Có thể chỉ định tên máy chủ sẽ ngụ ý rằng bạn có thể có nhiều kết hợp tên máy chủ và chứng chỉ trên cùng một địa chỉ IP và cổng (như bạn có thể với các mục không phải SSL), nhưng đây không phải là trường hợp, vì vậy trường không có sẵn.

Giải thích đầy đủ hơn là SSL mã hóa lưu lượng của bạn và một phần của lưu lượng đó là các tiêu đề HTTP được trình duyệt gửi đến máy chủ. Một trong những tiêu đề đó sẽ là tiêu đề "Máy chủ" mà IIS sử dụng để xác định trang web nào sẽ tải lên với yêu cầu. Do chứng chỉ cần được tải để thiết lập kết nối an toàn TRƯỚC KHI các tiêu đề yêu cầu được gửi, IIS phải chọn chứng chỉ chỉ dựa trên địa chỉ IP và số cổng, để lại tiêu đề "Máy chủ" trong lạnh trang web nào để tải, vì vậy họ không cho phép bạn nhập một.

Đây là một bài viết phác thảo các hoạt động bên trong của kết nối SSL một cách chi tiết hơn.


Cảm ơn câu trả lời này, Justin. Tôi vẫn không chắc tại sao IIS7 không cho phép tôi chỉ định tiêu đề máy chủ, ngay cả khi tôi chọn một trong các địa chỉ IP trong danh sách. IIS6 không có vấn đề gì. Như đã đề cập, đây là trang web duy nhất và duy nhất trên máy.
p.campbell

2
Các tiêu đề máy chủ có thể hoạt động với chứng chỉ ký tự đại diện hoặc chứng chỉ "UC" đa miền: sslshopper.com/unified-c truyền thông-uc-ssl- cert chứng nhận.html . Trong trường hợp này, máy chủ chỉ có 1 chứng chỉ để phục vụ ngay cả tho có nhiều tên máy chủ.
russau

Giải thích rất rõ ràng. +1
Dan Solovay

7

Câu trả lời SSLShopper không hoạt động với tôi vì nó để lại ràng buộc mà không có tiêu đề máy chủ và bạn không thể xóa ràng buộc đó mà không phá vỡ kết nối với chứng chỉ. Đây là phương pháp tôi đã sử dụng để làm cho nó hoạt động:

Xin lưu ý rằng câu trả lời này giả định rằng chứng chỉ của bạn đã được tạo, thêm vào kho lưu trữ chứng chỉ và được thêm vào IIS. Nó cũng cho rằng bạn không muốn bất kỳ ràng buộc nào khác vào trang web của mình ngoài SSL.

Đầu tiên, chúng ta cần thu thập một số thông tin. Chúng tôi cần băm, ID ứng dụng và tên máy chủ.

Các bước

  1. Mở IIS, chọn máy chủ của bạn và nhấp đúp chuột vào "Chứng chỉ máy chủ" trong phần dưới cùng. Lưu ý địa chỉ "Đã phát hành". Đây là tên máy chủ của chúng tôi. Lưu cái này
  2. Chọn trang web của bạn
  3. Liên kết trang web của bạn với cổng 80 bằng giao thức http
  4. Loại bỏ tất cả các ràng buộc khác
  5. Liên kết trang web của bạn với cổng 443 bằng giao thức https
  6. Mở một dấu nhắc lệnh

    netsh http show sslcert
    
  7. Lưu Hash chứng chỉ và ID ứng dụng

  8. Xóa ràng buộc https trên trang web của bạn
  9. Tại dấu nhắc lệnh:

    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>']
    

Lưu ý: Có thể tìm thấy Appcmd.exe trong c: \ windows \ system32 \ insetsrv. Bạn có thể cần phải ở trong thư mục đó để lệnh này hoạt động.

  1. Xóa liên kết http khỏi trang web của bạn

Cảm ơn! Điều này đã giúp tôi cuối cùng có được trang web của tôi làm việc trong HTTPS. Tôi đã sửa một lỗi đánh máy trong một trong các lệnh, nhưng tôi phải thêm tiêu đề Bước để vượt qua các yêu cầu về độ dài tối thiểu. Hãy thoải mái loại bỏ điều đó - câu trả lời ban đầu của bạn rất dễ thực hiện. Chúc mừng!
potatopeelings

Điều này làm việc cho tôi với một chứng chỉ có 6 SAN (không phải chứng chỉ ký tự đại diện) với một biến thể nhỏ vì tôi có nhiều trang web. Tôi đã phải làm các bước từ 1 đến 7 một lần. Bước 8 phải được thực hiện trên mỗi trang web. Lệnh đầu tiên của bước 9 phải được thực hiện một lần và lệnh thứ hai của bước 9 phải được thực hiện một lần trên mỗi trang.
Steve Kaye

4

Câu trả lời được chấp nhận ở đây là khó hiểu và tôi không nghĩ nó đúng cho câu hỏi. Nó không phải là câu trả lời được chấp nhận.

Vấn đề

Bạn có SSL ký tự đại diện như *.ipsum.comvà chứng chỉ được cài đặt nhưng bạn không thể chọn tên máy chủ cho trang web trong IIS khi bạn cố thêm liên kết HTTPS vì hộp văn bản bị mờ đi.

Giải pháp

SSL ký tự đại diện của bạn có thể được sử dụng với bất kỳ tên miền phụ nào, bạn chỉ cần đảm bảo rằng bạn bắt đầu Tên thân thiện của chứng chỉ với *. Tôi thích sử dụng cùng tên thân thiện với tên miền ký tự đại diện, ví dụ: *.ipsum.comnhưng bạn có thể gọi nó là bất cứ thứ gì mà chúng sinh có dấu hoa thị:*foo

Tôi đã cho giấy chứng nhận của tôi tên sai thân thiện, giúp đỡ!

Kể từ Windows 8 hoặc Server 2012, bạn có thể nhập certlm.mscvào menu bắt đầu để quản lý chứng chỉ cho máy cục bộ. Trên các phiên bản trước của windows, bạn sẽ cần phải làm gì đó phức tạp hơn một chút:

  1. Chạy mmc.exetừ đầu
  2. Vào Filemenu và chọn Add/Remove Snap-in...hoặc nhấn(Ctrl-M)
  3. Đánh dấu Certificatessnap-in và nhấn Add >rồi chọn Computer Accounttheo sau Local Computertrong các hộp thoại tiếp theo rồi nhấn Finishtheo sau OKđể đóng cửa sổ Snap-in

Trong cửa sổ chính, mở rộng Certificates (Local Computer)sau đó Personalsau đó Certificatesvà bạn sẽ có thể kích chuột phải vào giấy chứng nhận, nhấn Propertiesnơi bạn có thể cập nhật tên thân thiện.

Đóng và mở IIS Manager và sau đó bạn có thể đặt tên máy chủ của mình.


1
Nó đã lừa
Kreker

1
@Zac Tuyệt vời. Tuyệt vời. Tuyệt vời. Mặc dù tôi không thực sự nghĩ nó quan trọng nếu trường tên máy chủ trống, nhưng nó giúp tôi yên tâm hơn. Xin lưu ý rằng tôi đã cấp lại chứng chỉ của mình. Vì vậy, tên máy chủ của tôi đã ở trong trường tên máy chủ trước khi nó bị xóa. SSL ký tự đại diện của tôi dường như hoạt động với tên thân thiện hoặc tên loại * mydomain.com. Tôi nghĩ IIS giữ một bản ghi nội bộ của tên máy chủ, sau khi trường tên máy chủ bị trống. Tôi nghĩ tôi nên đề cập đến điều này, trong trường hợp mọi người đang bối rối!
Charles Robertson

1
@Zac ơi. Và giải pháp này hoạt động trên các máy chủ khủng long như Windows 2008R2 ...
Charles Robertson

@CharlesRobertson rất vui vì điều này đã giúp ích, và cảm ơn vì đã thêm thông tin bổ sung đó!
Zac

2

Trên thực tế, bạn có thể thêm tiêu đề máy chủ thông qua gui, nhưng nó phụ thuộc vào cách chứng chỉ được đặt tên ... nếu tôi đặt tên thân thiện * .xyz.com cho chứng chỉ ký tự đại diện của mình và chọn chứng chỉ đó, thì tôi sẽ có thể sử dụng gui. nếu tên thân thiện là một cái gì đó giống như xyzwildcard và tôi chọn nó, thì nó sẽ loại bỏ trường chủ nhà ...

Lạ thật


1

Một số máy sẽ không cho phép bạn chỉnh sửa tên máy chủ nếu giao thức được thay đổi thành https hoặc sau khi thêm chứng chỉ SSL. IIS có thể gắt gỏng nhiều lúc.

Lệnh Windows này sẽ tạo ra một liên kết mới với giao thức "https", trên cổng "443", tên máy chủ "subomain.domain.com", tên trang web "tên trang web". Thay đổi các giá trị (trong dấu ngoặc kép) để đáp ứng yêu cầu của bạn. Sau đó, bạn sẽ cần xóa ràng buộc cũ nếu nó sử dụng cổng 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']


0

Tên máy chủ chỉ có thể được thêm khi Friedlyname của Chứng chỉ được chọn sẽ giống như tên máy chủ * .xyz.com và Bạn có thể đổi tên tên thân thiện của chứng chỉ thành * .xyz.com từ mmc (Snap-in).


-1

Tôi nghĩ rằng bài viết KB này sẽ làm sáng tỏ vấn đề. Tóm lại, các tiêu đề máy chủ HTTP 1.1 không được hỗ trợ khi bạn sử dụng SSL.

Những gì có thể sẽ thực hiện những gì bạn muốn là sử dụng khóa metabase SecureBindings. Ví dụ: cscript.exe adsutil.vbs set / w3svc / websiteID / SecureBindings "ip.ip.ip.ip: 443: abc.123.mysite.com


Không áp dụng cho IIS 7.
davidcl

thật kỳ lạ vì nó hoạt động khi chúng tôi làm điều đó ...
Jim B

-1

Tại sao MS không sử dụng GUI này ngoài tầm với của tôi, vì, nếu bạn có ứng dụng ASP.NET sử dụng tệp giấy phép (Licx), trang web của bạn sẽ không hoạt động vì nó hiển thị dưới dạng địa chỉ IP thay vì tên miền . Họ cần DỪNG ĐÁNH GIÁ trên mỗi bản phát hành phần mềm mới của mình - Người CNTT không cần phải được Microsoft trông nom! Trời ạ!


-2
  1. Tôi đã tạo chứng chỉ tự ký với * .testcompany.com, tôi đã chọn chứng chỉ mới được tạo (bắt đầu bằng *) trong trình đơn Chỉnh sửa Chứng chỉ SSL ràng buộc, tôi đã bật hộp văn bản tên máy chủ, tạo tên máy chủ là 'webapi.b2c .com ',

  2. Tôi đã cập nhật tệp máy chủ trong C: \ Windows \ System32 \ driver \ etc 127.0.0.1 webapi.b2c.com

Bây giờ tôi có thể duyệt trang web dưới dạng ' https://webapp.b2c.com/ '

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.