Tôi đã phải giải đố theo cách của mình thông qua các chứng chỉ tự ký trên Windows bằng cách kết hợp các bit và các mảnh từ các câu trả lời đã cho và các tài nguyên khác. Đây là hướng dẫn riêng của tôi (và hy vọng hoàn thành). Hy vọng nó sẽ dành cho bạn một số đường cong học tập đau đớn của riêng tôi. Nó cũng chứa infos về các chủ đề liên quan sẽ sớm xuất hiện khi bạn tạo certs của riêng mình.
Tạo chứng chỉ tự ký trên Windows 10 trở xuống
Đừng sử dụng makecert.exe. Nó đã bị Microsoft phản đối.
Cách hiện đại sử dụng lệnh Powershell.
Windows 10:
Mở Powershell với đặc quyền Quản trị viên:
New-SelfSignedCertificate -DnsName "*.dev.local", "dev.local", "localhost" -CertStoreLocation cert:\LocalMachine\My -FriendlyName "Dev Cert *.dev.local, dev.local, localhost" -NotAfter (Get-Date).AddYears(15)
Windows 8, Windows Server 2012 R2:
Trong Powershell trên các hệ thống này, các tham số -FriendlyName và -NotAfter không tồn tại. Đơn giản chỉ cần loại bỏ chúng khỏi dòng lệnh trên.
Mở Powershell với đặc quyền Quản trị viên:
New-SelfSignedCertificate -DnsName "*.dev.local", "dev.local", "localhost" -CertStoreLocation cert:\LocalMachine\My
Một cách khác là sử dụng phương pháp cho phiên bản Windows cũ hơn bên dưới, cho phép bạn sử dụng tất cả các tính năng của Win 10 để tạo chứng chỉ ...
Các phiên bản Windows cũ hơn:
Đề xuất của tôi cho các phiên bản Windows cũ hơn là tạo chứng chỉ trên máy Win 10, xuất tệp đó sang tệp .PFX bằng cách sử dụng ví dụ mmc (xem "Tin cậy chứng chỉ" bên dưới) và nhập chứng chỉ vào kho lưu trữ chứng chỉ trên máy đích với HĐH Windows cũ. Để nhập chứng chỉ KHÔNG nhấp chuột phải vào nó. Mặc dù có một mục "Chứng chỉ nhập" trong menu ngữ cảnh, nhưng nó đã thất bại trong tất cả các thử nghiệm của tôi để sử dụng nó trên Win Server 2008. Thay vào đó, hãy mở một phiên bản mmc khác trên máy đích, điều hướng đến "Chứng chỉ (Máy tính cục bộ) / Cá nhân / Chứng chỉ" , nhấp chuột phải vào khung giữa và chọn Tất cả tác vụ → Nhập.
Giấy chứng nhận kết quả
Cả hai lệnh trên tạo một chứng chỉ cho các miền localhost
và *.dev.local
.
Phiên bản Win10 cũng có thời gian hoạt động là 15 năm và tên hiển thị có thể đọc được là "Dev Cert * .dev.local, dev.local, localhost".
Cập nhật: Nếu bạn cung cấp nhiều mục nhập tên máy chủ trong tham số -DnsName
(như được hiển thị ở trên), mục nhập đầu tiên trong số này sẽ trở thành Chủ đề của tên miền (Tên chung AKA). Danh sách đầy đủ của tất cả các mục nhập tên máy chủ sẽ được lưu trữ trong trường Tên thay thế chủ đề (SAN) của chứng chỉ. (Cảm ơn @BenSewards đã chỉ ra điều đó.)
Sau khi tạo, chứng chỉ sẽ có sẵn ngay lập tức trong mọi ràng buộc HTTPS của IIS (hướng dẫn bên dưới).
Tin tưởng vào chứng chỉ
Chứng chỉ mới không phải là một phần của bất kỳ chuỗi tin cậy nào và do đó không được coi là đáng tin cậy bởi bất kỳ trình duyệt nào. Để thay đổi điều đó, chúng tôi sẽ sao chép chứng chỉ vào kho chứng chỉ cho CA gốc đáng tin cậy trên máy của bạn:
Mở mmc.exe, Tệp → Thêm / Xóa Snap-In → chọn "Chứng chỉ" ở cột bên trái → Thêm → chọn "Tài khoản máy tính" → Tiếp theo → "Máy tính cục bộ ..." → Kết thúc → OK
Trong cột bên trái, chọn "Chứng chỉ (Máy tính cục bộ) / Cá nhân / Chứng chỉ".
Tìm chứng chỉ mới được tạo (trong Win 10, cột "Tên thân thiện" có thể giúp).
Chọn chứng chỉ này và nhấn Ctrl-C để sao chép nó vào clipboard.
Trong cột bên trái, chọn "Chứng chỉ (Máy tính cục bộ) / CA gốc đáng tin cậy / Chứng chỉ".
Nhấn Ctrl-V để dán chứng chỉ của bạn vào cửa hàng này.
Chứng chỉ sẽ xuất hiện trong danh sách Các nhà chức trách gốc đáng tin cậy và hiện được coi là đáng tin cậy.
Sử dụng trong IIS
Bây giờ bạn có thể truy cập IIS Manager, chọn các ràng buộc của trang web cục bộ → Thêm → https → nhập tên máy chủ của biểu mẫu myname.dev.local
(chứng chỉ của bạn chỉ hợp lệ cho *.dev.local
) và chọn chứng chỉ mới → OK.
Thêm vào máy chủ
Đồng thời thêm tên máy chủ của bạn vào C: \ Windows \ System32 \ driver \ etc \ hosts:
127.0.0.1 myname.dev.local
Vui mừng
Bây giờ Chrome và IE nên coi chứng chỉ là đáng tin cậy và tải trang web của bạn khi bạn mở https://myname.dev.local
.
Firefox duy trì cửa hàng chứng chỉ của riêng mình. Để thêm chứng chỉ của bạn ở đây, bạn phải mở trang web của mình trong FF và thêm nó vào các trường hợp ngoại lệ khi FF cảnh báo bạn về chứng chỉ.
Đối với trình duyệt Edge, có thể cần thêm hành động (xem thêm ở dưới).
Kiểm tra giấy chứng nhận
Để kiểm tra certs của bạn, Firefox là sự lựa chọn tốt nhất của bạn. (Tin tôi đi, bản thân tôi là một fan-boy Chrome, nhưng FF thì tốt hơn trong trường hợp này.)
Dưới đây là những lý do:
- Firefox sử dụng bộ đệm SSL riêng của mình, được thanh lọc khi tải lại shift. Vì vậy, bất kỳ thay đổi nào đối với các trang web của trang web địa phương của bạn sẽ phản ánh ngay lập tức trong các cảnh báo của FF, trong khi các trình duyệt khác có thể cần khởi động lại hoặc xóa thủ công bộ đệm SSL của Windows.
- Ngoài ra FF cung cấp cho bạn một số gợi ý có giá trị để kiểm tra tính hợp lệ của chứng chỉ của bạn: Nhấp vào Nâng cao khi FF hiển thị cảnh báo chứng chỉ. FF sẽ hiển thị cho bạn một khối văn bản ngắn với một hoặc nhiều cảnh báo có thể có trong các dòng trung tâm của khối văn bản:
Giấy chứng nhận không đáng tin cậy vì nó là tự ký.
Cảnh báo này là chính xác! Như đã lưu ý ở trên, Firefox không sử dụng kho chứng chỉ Windows và sẽ chỉ tin tưởng chứng chỉ này, nếu bạn thêm một ngoại lệ cho nó. Nút để làm điều này là ngay bên dưới các cảnh báo.
Chứng chỉ không hợp lệ cho tên ...
Cảnh báo này cho thấy, bạn đã làm gì đó sai. Tên miền (ký tự đại diện) của chứng chỉ của bạn không khớp với tên miền của trang web của bạn. Vấn đề phải được giải quyết bằng cách thay đổi tên miền (phụ) của trang web của bạn hoặc bằng cách cấp chứng chỉ mới phù hợp. Trong thực tế, bạn có thể thêm một ngoại lệ trong FF ngay cả khi chứng chỉ không khớp, nhưng bạn sẽ không bao giờ có biểu tượng ổ khóa màu xanh lá cây trong Chrome với sự kết hợp như vậy.
Firefox có thể hiển thị nhiều cảnh báo chứng nhận tốt đẹp và dễ hiểu khác tại nơi này, như certs đã hết hạn, certs với thuật toán ký kết lỗi thời, v.v. Tôi không tìm thấy trình duyệt nào khác cung cấp cho tôi mức độ phản hồi để khắc phục mọi vấn đề.
Tôi nên chọn mẫu miền nào (phụ) để phát triển?
Trong lệnh New-SelfSignCertert ở trên, chúng tôi đã sử dụng miền ký tự đại diện *.dev.local
.
Bạn có thể nghĩ: Tại sao không sử dụng *.local
?
Lý do đơn giản: Nó là bất hợp pháp như một miền ký tự đại diện.
Chứng chỉ ký tự đại diện phải chứa ít nhất một tên miền cấp hai.
Vì vậy, các tên miền của biểu mẫu *.local
rất hay để phát triển các trang web HTTP. Nhưng không nhiều cho HTTPS, bởi vì bạn sẽ buộc phải cấp chứng chỉ phù hợp mới cho mỗi dự án mới mà bạn bắt đầu.
Ghi chú bên quan trọng:
- Các miền máy chủ hợp lệ CHỈ có thể chứa các chữ cái máng z, chữ số, dấu gạch nối và dấu chấm. Không cho phép gạch dưới! Một số trình duyệt thực sự kén chọn về chi tiết này và có thể khiến bạn gặp khó khăn khi họ ngoan cố từ chối kết hợp tên miền
motör_head.dev.local
của bạn với mẫu ký tự đại diện của bạn *.dev.local
. Họ sẽ tuân thủ khi bạn chuyển sang motoer-head.dev.local
.
- Ký tự đại diện trong chứng chỉ sẽ chỉ khớp MỘT nhãn (= phần giữa hai dấu chấm) trong một miền, không bao giờ hơn.
*.dev.local
phù hợp myname.dev.local
nhưng KHÔNG other.myname.dev.local
!
- Ký tự đại diện đa cấp (
*.*.dev.local
) KHÔNG thể có trong chứng chỉ. Vì vậy, other.myname.dev.local
chỉ có thể được bao phủ bởi một ký tự đại diện của mẫu *.myname.dev.local
. Do đó, tốt nhất là không sử dụng một phần tên miền cấp. Đặt tất cả các biến thể của bạn vào phần cấp ba. Bằng cách này, bạn sẽ có được cùng với một chứng chỉ duy nhất cho tất cả các trang web dev của bạn.
Vấn đề với Edge
Đây không thực sự là về chứng chỉ tự ký, nhưng vẫn liên quan đến toàn bộ quá trình:
Sau khi làm theo các bước trên, Edge có thể không hiển thị bất kỳ nội dung nào khi bạn mở lên myname.dev.local
.
Lý do là một tính năng đặc trưng của quản lý mạng của Windows 10 cho Ứng dụng hiện đại, được gọi là "Cách ly mạng".
Để giải quyết vấn đề đó, hãy mở một dấu nhắc lệnh với đặc quyền Quản trị viên và nhập lệnh sau một lần:
CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
Có thể tìm thấy thêm thông tin về cách ly Edge và Network tại đây:
https://bloss.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/
makecert.exe
đi theo con đường của mình. Đối với các chứng chỉ tôi nghĩ tôi sẽ an toàn hơn và sử dụng-a SHA512 -len 8192
- phải mất mãi mãi để tạo. Và như tôi nghi ngờ, nó không ảnh hưởng đến mức độ mã hóa IIS được sử dụng. Theo mặc định IIS sử dụng 128 bit, bạn phải thực hiện các công cụ chính sách nhóm để thay đổi điều này. Lưu ý thêm cho những độc giả khác: đừng thay đổi số ma thuật sau-eku
, chúng bắt buộc phải có.