IIS 7 vẫn phục vụ chứng chỉ SSL cũ


27

Tôi đã cài đặt chứng chỉ SSL mới vào IIS7, xóa chứng chỉ cũ và thiết lập các ràng buộc cho chứng chỉ mới - vì vậy https hiện chỉ bị ràng buộc với chứng chỉ mới.

Tôi đã khởi động lại IIS7 (và chính Windows 2008 Server) và kiểm tra chứng chỉ bằng các lệnh:

netsh http show sslcert

Điều này chỉ cho thấy chứng chỉ mới, như tôi mong đợi

certutil -store MY

Điều này cũng chỉ hiển thị chứng chỉ mới chứ không phải chứng chỉ cũ, như tôi mong đợi

Tôi cũng đã mở mmc và kiểm tra các chứng chỉ ở đó và tôi chỉ thấy cái mới chứ không phải cái cũ.

Tôi cũng đang sử dụng tài khoản với đặc quyền Quản trị viên.

Tuy nhiên - khi tôi mở trình duyệt (từ bất kỳ máy tính nào) và truy cập trang web https thì nó vẫn đang sử dụng chứng chỉ cũ. Ngay cả khi tôi xóa chứng chỉ cũ khỏi trình duyệt, nó vẫn được gửi chứng chỉ cũ chứ không phải chứng chỉ mới.

Bất cứ ai có thể giúp tôi làm việc mà tôi đang đi sai? Làm thế nào tôi có thể trừ tà chứng chỉ ảo cũ?

Câu trả lời:


28

Đầu tiên một vài điểm có lẽ giống nhau cho bạn

  • Tôi đã cố cập nhật một chứng chỉ vì nó đã hết hạn.
  • Tôi có nhiều tên miền ràng buộc với cùng một IP. Chúng tình cờ là một chứng chỉ SAN nhưng điều đó có lẽ không liên quan.
  • Tôi đã cố gắng sử dụng các cửa hàng chứng chỉ tập trung. Một lần nữa tôi nghĩ rằng điều này không liên quan đến hầu hết câu trả lời của tôi.
  • Tôi đã cố cập nhật chứng chỉ nhưng nó không hiển thị ngày mới.
  • Bạn có thể đang hoảng loạn ngay bây giờ nếu chứng chỉ cũ của bạn đã hết hạn. Hít thật sâu ...

Trước tiên tôi khuyên bạn nên truy cập https://www.digicert.com/help/và tải xuống công cụ DigiCert của họ. Bạn cũng có thể sử dụng nó trực tuyến.

Nhập vào trang web của bạn https://example.comvà nó sẽ hiển thị cho bạn ngày hết hạn và dấu vân tay (cái mà MS gọi là băm chứng chỉ). Nó thực hiện tra cứu theo thời gian thực, do đó bạn không phải lo lắng liệu trình duyệt của mình (hoặc máy chủ trung gian) có lưu vào bộ nhớ cache hay không.

Nếu bạn đang sử dụng cửa hàng chứng chỉ tập trung, bạn sẽ muốn chắc chắn 100% tệp .pfx là phiên bản mới nhất, vì vậy hãy truy cập thư mục cửa hàng của bạn và chạy lệnh này:

C:\WEBSITES\SSL> certutil -dump www.example.com.pfx

Điều này sẽ cho bạn thấy ngày hết hạn và hàm băm / vân tay. Rõ ràng nếu ngày hết hạn này là sai, bạn có thể đã xuất chứng nhận sai sang hệ thống tập tin, vì vậy hãy đi và sửa nó trước.

Nếu bạn đang sử dụng CCS thì giả sử lệnh certutil này cung cấp cho bạn ngày hết hạn dự kiến ​​(của chứng chỉ được cập nhật của bạn), bạn có thể tiếp tục.

Chạy lệnh:

netsh http show sslcert > c:\temp\certlog.txt
notepad c:\temp\certlog.txt

Bạn có thể có rất nhiều thứ ở đây để mở nó trong trình soạn thảo văn bản dễ dàng hơn.

Bạn sẽ muốn tìm kiếm tệp này cho hàm băm digicert.comSAU mà bạn nhận được (hoặc dấu vân tay bạn nhận được từ Màu sắc).

Đối với tôi điều này mang lại sau đây. Bạn sẽ thấy nó bị ràng buộc với một IP chứ không phải tên miền dự kiến ​​của tôi. Đây là vấn đề. Có vẻ như điều này (vì bất kỳ lý do gì tôi không chắc chắn) được ưu tiên hơn so với tập ràng buộc trong IIS mà tôi vừa cập nhật example.com.

IP:port                      : 10.0.0.1:443
Certificate Hash             : d4a17e3b57e48c1166f18394a819edf770459ac8
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check                  : Enabled
Revocation Freshness Time    : 0
URL Retrieval Timeout        : 0
Ctl Identifier               : (null)
Ctl Store Name               : (null)
DS Mapper Usage              : Disabled
Negotiate Client Certificate : Disabled

Tôi thậm chí không biết ràng buộc này đến từ đâu - Tôi thậm chí không có bất kỳ ràng buộc SSL nào trên trang web mặc định của mình nhưng máy chủ này đã được vài năm và tôi nghĩ rằng một cái gì đó đã bị hỏng và bị mắc kẹt.

Vì vậy, bạn sẽ muốn xóa nó.

Để đảm bảo an toàn, trước tiên bạn sẽ muốn chạy comand sau để chắc chắn rằng bạn chỉ xóa một mục này:

C:\Windows\system32>netsh http show sslcert ipport=10.0.0.1:443

SSL Certificate bindings:
-------------------------

IP:port                      : 10.0.0.1:443
Certificate Hash             : d4a17e3b57e48c1166f18394a819edf770459ac8
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check                  : Enabled
Revocation Freshness Time    : 0
URL Retrieval Timeout        : 0
Ctl Identifier               : (null)
Ctl Store Name               : (null)
DS Mapper Usage              : Disabled
Negotiate Client Certificate : Disabled

Bây giờ chúng tôi đã xác minh đây là dấu vân tay 'xấu' và bản ghi duy nhất dự kiến ​​chúng tôi có thể xóa nó bằng lệnh này:

C:\Windows\system32>netsh http delete sslcert ipport=10.0.0.1:443

SSL Certificate successfully deleted

Hy vọng nếu bây giờ bạn quay lại Digicert và chạy lại lệnh, nó sẽ cung cấp cho bạn dấu vân tay chứng chỉ dự kiến. Bạn nên kiểm tra tất cả các tên SAN nếu bạn có bất kỳ chỉ để chắc chắn.

Có lẽ muốn IISRESET ở đây để chắc chắn không có bất ngờ nào về sau.

Lưu ý cuối cùng: Nếu bạn đang sử dụng cửa hàng chứng chỉ tập trung và bạn đang thấy hành vi thất thường đang cố gắng xác định xem liệu nó có lấy chứng chỉ của bạn từ đó hay không, đừng lo lắng - đó không phải là lỗi của bạn. Có vẻ như đôi khi nhận các tệp mới ngay lập tức, nhưng lưu trữ các tệp cũ. Mở và lưu lại ràng buộc SSL sau khi thực hiện bất kỳ loại thay đổi nào dường như đặt lại nó nhưng không phải 100% thời gian.

Chúc may mắn :-)


3
Bạn là một Simon trong số Simons. Trong trường hợp của chúng tôi, hóa ra máy chủ của chúng tôi đã 'lưu trữ' chứng chỉ đã hết hạn [::1]:443trong khi cập nhật chứng chỉ trong IIS chỉ cập nhật bản ghi cho 0.0.0.0:443. Cảm ơn bạn!
tuespetre

1
Điều này đã giải quyết vấn đề của tôi với nhiều tên miền trên cùng một IP; không sử dụng cửa hàng chứng nhận tập trung.
Chris F Carroll

1
Tôi đã phải sử dụng điều này một vài lần. Phần mềm quản lý lưu trữ web PLESK đôi khi làm rối các ràng buộc chứng chỉ và cuối cùng tôi cần các lệnh Netsh ở trên để loại bỏ ràng buộc vi phạm. Không chắc chắn tất cả các phiên bản bị ảnh hưởng, nhưng tôi đang sử dụng phiên bản hiện tại của PLESK Onyx trên Windows Server 2016.
BenSwayne

Trong trường hợp của tôi, đó là bởi tên máy chủ và cổng. Vì vậy, để lọc và xóa theo tên máy chủ, các lệnh sẽ là: "Netsh http show sslcert hostnameport = www.example.com: 443" và "Netsh http xóa sslcert hostnameport = www.example.com: 443"
Karthik Jayapal

14

Kiểm tra chứng chỉ được liên kết với trang web trong IIS. Bạn có thể nhấp chuột phải vào trang web và chọn chỉnh sửa các ràng buộc. Trong đó, bạn sẽ thấy một ràng buộc cho cổng 443 được liên kết với chứng chỉ SSL. Điều đó vẫn có thể được chỉ vào cái cũ.


Tôi đã kiểm tra và chứng chỉ trong các ràng buộc cho cổng 443 là chứng chỉ mới, không phải chứng chỉ cũ. Cảm ơn lời đề nghị của bạn.
joechip

1
Thật kỳ lạ, tôi chưa bao giờ có chuyện này xảy ra. Mặc dù tôi không bao giờ loại bỏ các chứng chỉ cũ. Làm thế nào bạn chắc chắn bạn vẫn nhận được chứng chỉ cũ? Có phải nó cho thấy nó đã hết hạn?
Tatas

Có, trong trình duyệt, bạn có thể kiểm tra chi tiết của chứng chỉ (ngày hết hạn, v.v.) và thông tin cũ mà IIS7 đang phục vụ.
joechip

1
Tôi đã thấy điều này với - Chrome. Chrome lưu trữ chứng chỉ cũ và hiển thị cho người dùng.
TomTom

3

Tôi chỉ làm việc đó ra. Máy chủ thực sự đang ngồi sau một máy chủ ISA, vì vậy chúng tôi cũng phải cài đặt chứng chỉ SSL mới cho máy chủ ISA.


3

Tôi đã có cùng một vấn đề và kiểm tra các ràng buộc cũng. Tôi đã cài đặt 2 ứng dụng trong IIS, một ứng dụng đang sử dụng chứng chỉ mới, một ứng dụng cũ.

Để khắc phục, tôi phải xóa hoàn toàn chứng chỉ khỏi máy chủ (sau đó có thể là khởi động lại).

Từ Trình quản lý IIS -> (gốc cây IIS) -> biểu tượng Chứng chỉ máy chủ, chọn chứng chỉ cũ và nhấp vào Xóa trong ngăn Hành động.


1
Tương tự như vậy, chúng tôi thực sự có một trang STOPPED bổ sung tham chiếu chứng chỉ cũ và khi chúng tôi cập nhật trang đó để sử dụng trang mới, trang trực tiếp thực tế bắt đầu hiển thị chứng chỉ mới!
Hành động Dan

1

Tôi đã trải nghiệm điều này trong quá trình nâng cấp IPv6. Tôi đã có IIS cung cấp chuyển hướng trong trường hợp ai đó cố gắng truy cập dịch vụ qua HTTP mà thực tế không phải là dịch vụ dựa trên máy chủ web. Tôi đã cập nhật dịch vụ thực tế (một máy chủ thoại) thành IPv6, tuy nhiên tôi đã không cập nhật các ràng buộc cho chuyển hướng để bao gồm các địa chỉ IPv6.

Điều này dẫn đến các nghị quyết không thành công trên toàn cầu bắt tất cả các trang web có chứng chỉ lỗi thời trên đó. Vì tất cả chỉ đơn giản là 404, nên có vẻ như trang web không hoạt động, trong thực tế, nó đã đánh sai trang web.


0

Trong trường hợp ai đó vẫn vấp phải vấn đề này. Của tôi đã được giải quyết bằng cách đi đến

C:\inetpub\wwwroot

Sau đó, bạn sẽ tìm thấy tệp web.config, mở tệp bằng notepad và xóa dòng bằng

<httpRedirect enabled="true" destination="http://foo.company.org" />

Lưu và thử lại để truy cập localhost hoặc trang gốc của máy chủ IIS của bạn.

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.