Làm cách nào tôi có thể tạo chứng chỉ tự ký cho localhost?


133

Tôi đã trải qua các bước chi tiết trong Cách bạn sử dụng https / SSL trên localhost? nhưng điều này sẽ thiết lập một chứng chỉ tự ký cho tên máy của tôi và khi duyệt qua https: // localhost, tôi nhận được cảnh báo IE.

Có cách nào để tạo chứng chỉ tự ký cho "localhost" để tránh cảnh báo này không?


Bạn đã cài đặt chứng chỉ như một CA?
vcsjones

Tôi đã làm theo quy trình để cài đặt chứng chỉ tự ký vào IIS trong Win7. Nhưng điều đó tạo ra chứng chỉ cho "mymachinename" và tôi cần một chứng chỉ cho "localhost".
chris

1
Chào! Hãy xem xét đặt câu trả lời của Auri là câu trả lời chính vì makecert không được dùng nữa. Liên kết đến câu trả lời: stackoverflow.com/a/44164653/1461602
Tormod Haugene 16/07/17

Câu trả lời:


81

Mặc dù bài đăng này là bài đăng được gắn thẻ cho Windows, nhưng đó là câu hỏi có liên quan trên OS X mà tôi chưa thấy câu trả lời cho nơi khác. Dưới đây là các bước để tạo chứng chỉ tự ký cho localhost trên OS X :

# Use 'localhost' for the 'Common name'
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout localhost.key -out localhost.crt

# Add the cert to your keychain
open localhost.crt

Trong Keychain Access, nhấp đúp chuột vào chứng chỉ localhost mới này. Mở rộng mũi tên bên cạnh "Tin cậy" và chọn "Luôn tin tưởng". Chrome và Safari nên tin tưởng chứng chỉ này. Ví dụ: nếu bạn muốn sử dụng chứng chỉ này với node.js:

var options = {
    key: fs.readFileSync('/path/to/localhost.key').toString(),
    cert: fs.readFileSync('/path/to/localhost.crt').toString(),
    ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
    honorCipherOrder: true,
    secureProtocol: 'TLSv1_2_method'
};

var server = require('https').createServer(options, app);

2
Lệnh đầu tiên, ssh-keygenkhông cần thiết vì lệnh openssl cũng đang tạo một khóa mới (và ghi đè lên lệnh được tạo bởi ssh).
Félix Saparelli

7
Ngoài ra, bạn có thể tự động hóa quá trình hoàn toàn bằng cách thêm -subj '/CN=localhost'vào các opensslđối số.
Félix Saparelli

8
Để OS X tin tưởng nó từ dòng lệnh thay vì nhấp chuột xung quanh, bạn có thể làm:sudo security add-trusted-cert -p ssl -d -r trustRoot -k ~/Library/Keychains/login.keychain localhost.crt
philfreo

1
Cũng liên quan đến linux. Cảm ơn rất nhiều.
Marcel

1
Tôi đã làm theo tất cả các bước này và tôi nhận được ERR_SSL_VERSION_OR_CIPHER_MISMATCHtrong Chrome 60 và Safari 10.1.2 cũng không giống như vậy.
styfle

61

Vì câu hỏi này được gắn thẻ IISvà tôi không thể tìm thấy câu trả lời hay về cách nhận chứng chỉ tin cậy, tôi sẽ đưa cho tôi 2 xu về nó:

Trước tiên, sử dụng lệnh từ @AuriRahimzadeh trong PowerShell với tư cách quản trị viên:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Điều này là tốt nhưng chứng chỉ không đáng tin cậy và sẽ dẫn đến lỗi sau. Đó là bởi vì nó không được cài đặt trong Trusted Root Certification Authorities.

nhập mô tả hình ảnh ở đây

Giải quyết điều này bằng cách bắt đầu mmc.exe.

Sau đó đi đến:

Tệp -> Thêm hoặc xóa Snap-in -> Chứng chỉ -> Thêm -> Tài khoản máy tính -> Máy tính cục bộ. Nhấp vào Kết thúc.

Mở rộng Personalthư mục và bạn sẽ thấy localhostchứng chỉ của mình :

nhập mô tả hình ảnh ở đây

Sao chép chứng chỉ vào Trusted Root Certification Authorities - Certificatesthư mục.

Bước cuối cùng là mở Internet Information Services (IIS) Managerhoặc đơn giản inetmgr.exe. Từ đó đi đến trang web của bạn, chọn Bindings...Add...hoặc Edit.... Đặt httpsvà chọn chứng chỉ của bạn từ trình đơn thả xuống.

nhập mô tả hình ảnh ở đây

Chứng chỉ của bạn hiện đáng tin cậy:

nhập mô tả hình ảnh ở đây


9
Đây phải là câu trả lời được chấp nhận! Nó hoạt động! Nếu bạn nhầm lẫn với localhost và chứng chỉ tin cậy. Hãy chắc chắn xóa tất cả các chứng chỉ localhost cũ (thông qua bảng điều khiển mmc và IIS (máy chủ được quản lý hàng đầu)
Tuấn Jinn

Cảm ơn! Có rất nhiều câu trả lời SO và bài đăng trên blog về chủ đề này, nhưng rất ít cuộc nói chuyện về các vấn đề tin cậy chứng chỉ. Mẹo: Có lẽ bạn nên giải thích lý do tại sao bạn không sử dụng cổng SSL mặc định 443? Tôi đoán đó là vì cổng này thường được thực hiện bởi một số quy trình khác.
HoffZ

Câu trả lời thực sự hay và hoạt động tốt trên IIS vào năm 2020. Cảm ơn rất nhiều!
alessandrocb

Cũng hoạt động cho các bí danh trong tệp máy chủ
Zef

52

Bạn có thể sử dụng PowerShell để tạo chứng chỉ tự ký với lệnh ghép ngắn tự ký tự mới:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Lưu ý: makecert.exe không dùng nữa.

Tham khảo Cmdlet: https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-'msigncertert


Đây sẽ là câu trả lời vào năm 2017.
Tormod Haugene 16/07/17

1
Đối với những người theo dõi và không biết cách cài đặt chứng chỉ kết quả, hãy làm theo các bước trong video này, nó hiệu quả với tôi! youtube.com/watch?v=y4uKPUFmSZ0
Eric Brown - Cal

6
nơi mà các tập tin key và crt được lưu trữ?
woojoo666

1
@ woojoo666 với -KeyLocationcờ bạn có thể chỉ định vị trí.
hamid

46

Sau khi dành một khoảng thời gian tốt cho vấn đề này, tôi thấy bất cứ khi nào tôi làm theo các đề xuất về việc sử dụng IIS để tạo chứng chỉ tự ký, tôi thấy rằng Việc phát hành và phát hành là không chính xác. SelfSSL.exe là chìa khóa để giải quyết vấn đề này. Trang web sau đây không chỉ cung cấp cách tiếp cận từng bước để tạo chứng chỉ tự ký, mà còn giải quyết vấn đề Phát hành và Vấn đề. Đây là giải pháp tốt nhất tôi tìm thấy để làm chứng chỉ tự ký. Nếu bạn muốn xem hướng dẫn tương tự ở dạng video bấm vào đây .

Một mẫu sử dụng SelfSSL sẽ trông giống như sau:

SelfSSL /N:CN=YourWebsite.com / V: 1000 / S: 2

SelfSSL /? sẽ cung cấp một danh sách các tham số với lời giải thích.


Bài viết của RobBagby.com đã làm việc hoàn hảo cho tôi. Tốt tìm Henry.
cymorg

SIÊU CẤP! Video đó có chất lượng kém nhưng có mọi thứ cần thiết.
tonco

2
Liên kết đến trang web robbagby đã chết. Xem câu trả lời của tôi cho 2 hướng dẫn youtube chất lượng cao của CodeCowboyOrg
Moses Machua 24/03/18

Chỉnh sửa câu trả lời để liên kết đến kho lưu trữ Wayback của bài viết trên robbagby.com.
Prometheus

23

Nếu bạn đang cố gắng tạo một chứng chỉ tự ký cho phép bạn đi http://localhost/mysite thì đây là một cách để tạo chứng chỉ

makecert -r -n "CN=localhost" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 -sv localhost.pvk localhost.cer
cert2spc localhost.cer localhost.spc
pvk2pfx -pvk localhost.pvk -spc localhost.spc -pfx localhost.pfx

Từ http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/32bc5a61-1f7b-4545-a514-a11652f11200


2
Chứng chỉ của tôi đã đi đâu: o nó không ở C: \ Windows \ system32
EaterOfCode

2
Nhân tiện, công cụ makecert.exe được sử dụng thông qua dấu nhắc Lệnh của Visual Studio cho những người đọc trong tương lai. Bạn cũng có thể sử dụng Công cụ Bộ tài nguyên Dịch vụ Thông tin Internet (IIS) và cài đặt SelfSSL 1.0. microsoft.com/doads/en/ từ
atconway

3
Mặc dù câu trả lời nhanh là rất tốt, nhưng không phải lúc nào chúng cũng có ích. "Chứng chỉ không thể được sử dụng làm chứng chỉ máy chủ SSL" là lỗi tôi thấy trong IIS7. Op cũng đã đề cập đến các cảnh báo của trình duyệt & không phải "Làm cách nào để tạo chứng chỉ"?
cmroanirgo

Bạn có thể bỏ qua bước cert2spc do tham số pvk2pfx -spc chấp nhận cả .spc và .cer
abatishchev

1
@EaterOfCode Mine đã ở C: \ Windows \ SysWOW64
Bay Sola

10

Tôi sẽ giới thiệu công cụ của Pluralsight để tạo các certs tự ký: http://blog.pluralsight.com/elfcert-create-a-elf-sign-cert ve-interivelyively-gui-or-programmatically-in-net

Tạo chứng chỉ của bạn dưới dạng .pfx và nhập nó vào IIS. Và thêm nó như là một cơ quan chứng nhận gốc đáng tin cậy.


1
Sau khi vỗ xung quanh với việc thử tất cả các loại "ma thuật" PowerShell và những thứ khác không hoạt động - Công cụ của Pluralsight đã tạo ra một kịch bản hoạt động cho tôi trong 30 giây và bao gồm cả thời gian để ăn pizza (+ tải xuống và giải nén công cụ, ý tôi là). Vì tôi vẫn đang chạy Windows 7 trên máy tính xách tay cũ này - đây là giải pháp hoàn hảo cho tôi, cảm ơn!
Ade

1

Có và không. Chứng chỉ tự ký dẫn đến thông báo cảnh báo đó vì chứng chỉ không được ký bởi Cơ quan chứng nhận tin cậy. Có một vài tùy chọn mà bạn có thể xem xét để xóa cảnh báo này trên máy cục bộ của mình. Xem câu trả lời được xếp hạng cao nhất cho câu hỏi này để biết chi tiết:

Tôi cần làm gì để Internet Explorer 8 chấp nhận chứng chỉ tự ký?

Hi vọng điêu nay co ich!


BIÊN TẬP:

Xin lỗi, ban đầu tôi không biết rằng bạn bị hạn chế với localhost. Bạn có thể cố gắng làm theo các hướng dẫn trên liên kết bên dưới để "Tạo chứng chỉ tự ký với tên chung chính xác".

http://www.sslshopper.com/article-how-to-create-a-elf-sign-cert ve-in-iis-7.html


Không, thông báo cảnh báo là có vì URL ( localhost ) không khớp với tên chứng chỉ, được phát hành dưới tên máy. Nếu tôi chuyển sang tên mymachinename thì tôi không gặp lỗi. Thật không may, tôi phải sử dụng localhost chứ không phải tên máy vì những lý do không ảnh hưởng đến câu hỏi.
chris


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.