Làm cách nào tôi có thể tạo chứng chỉ tự ký mạnh hơn SHA-1?


8

Đối với môi trường phát triển, tôi có thể tạo chứng chỉ tự tạo trong IIS7.5. Nhưng chứng chỉ đó là SHA-1 và gần đây các trình duyệt đang phàn nàn về nó. Khi tôi mở FireBug, tôi thấy các cảnh báo sau:

"Trang web này sử dụng Chứng chỉ SHA-1; bạn nên sử dụng chứng chỉ có thuật toán chữ ký sử dụng hàm băm mạnh hơn SHA-1."

Vì vậy, câu hỏi của tôi là:

1) Có cách nào để tạo chứng chỉ tự ký mạnh hơn SHA-1 không?

2) Nếu không, có cách nào để yêu cầu trình duyệt ngừng hiển thị các cảnh báo này không?

CẬP NHẬT

Tôi đã kết thúc bằng cách sử dụng câu trả lời @vcsjones, nhưng điều đó chỉ cho đến nay. Có một vài vấn đề tôi phải giải quyết trước khi nó hoạt động.

1) Vì một số lý do tôi không thể nhập chứng chỉ bằng mật khẩu. Vì vậy, tôi đã kết thúc việc tạo ra nó mà không có.

2) Khi tôi nhập chứng chỉ .pfx qua IIS, tôi vẫn nhận được "Phiên đăng nhập được chỉ định không tồn tại" khi tôi cố gắng áp dụng chứng chỉ mới trong Chỉnh sửa ràng buộc. Vì vậy, tôi đã làm ít nghiên cứu và thấy câu trả lời SO này hữu ích, cụ thể là câu trả lời của Mike L.

Một điều nữa tôi muốn nói thêm là khi bạn đang nhập chứng chỉ, hãy nhớ chọn chứng chỉ .pfx. Lựa chọn mặc định của trình hướng dẫn nhập là * .cer mà bạn có thể nhập (lỗi tôi đã làm), nhưng sau đó tôi không thể thấy chứng chỉ trong Chứng chỉ máy chủ IIS. Khi tôi nhìn gần hơn, nó bị thiếu chìa khóa nhỏ trong biểu tượng. Bây giờ, tôi đã nghiên cứu về việc tôi có thể sửa chữa nó thông qua bài viết KB-889651 . Vì vậy, hãy chắc chắn rằng bạn nhập .pfx và nó sẽ hoạt động mà không cần sửa chữa.

Một lưu ý khác, nếu bạn đang gặp vấn đề về niềm tin với chứng chỉ này, hãy nhập nó vào "Cơ quan cấp chứng chỉ gốc đáng tin cậy".

Câu trả lời:


8

Chắc chắn rồi. Các makecerttiện ích là một phần của Windows SDK có thể làm điều đó:

makecert -len 2048 -r -a sha256 -sv private.pvk -n CN=localhost cert.cer

Các -athông số thiết lập thuật toán băm. Điều này tạo ra một tệp PVK và DER .cer. Tất nhiên bạn cũng có thể thay đổi tên chung thành bất cứ thứ gì bạn thích, tôi chỉ sử dụng localhost làm ví dụ. Bạn có thể kết hợp những thứ này vào một PFX (những gì IIS thích sử dụng khi nhập chứng chỉ) bằng cách sử dụng pvk2pfx(cũng là một phần của SDK):

pvk2pfx -spc cert.cer -pvk private.pvk -pfx out.pfx

Điều này chỉ cần lấy hai tệp makecertđược tạo và kết hợp chúng thành tệp PKCS12 .pfx.

Với tệp PFX kết quả, bạn sẽ mở IIS và nhập nó dưới Chứng chỉ máy chủ, sau đó thay đổi các ràng buộc trang web của bạn để sử dụng chứng chỉ mới.


tôi đã tạo ra nó, nhưng tôi tìm cert.cer và out.pfx ở đâu?
peter

1
@peter đó là bất cứ thư mục làm việc nào của giao diện điều khiển. Bạn sẽ thấy một cái gì đó giống như C:\Path\ToADirectory>trong dấu nhắc lệnh. Đó là thư mục làm việc của bạn.
vcsjones 13/07/2015

Khi tôi cố gắng nhập out.pfx trong iis, nó đã hỏi một mật khẩu. Tôi đã nhập mật khẩu mà tôi đã đặt trong khi tạo chứng nhận bằng cách sử dụng nhận xét của mình. Nhưng nó không thành công, bạn có biết lý do không?
peter

vcsjones tôi đã cài đặt chứng chỉ trong hệ thống và sau đó tôi đặt binind trong IIS, khi tôi duyệt trong firefox thì nó không mở, nhưng trong IE tôi tiếp tục nhắc lỗi và có thể thấy trang web, nhưng nó hiển thị biểu tượng giống như chứng chỉ không đáng tin cậy cơ quan cấp chứng chỉ
peter

1
Một điểm cần lưu ý là makecert hiện không được dùng nữa. Đối với Windows 8.1 / Windows Server 2012 R2 trở lên, thay vào đó, bạn có thể sử dụng lệnh Powershell được mô tả tại đây: stackoverflow.com/a/19446469/914490
Mike

6

Tôi đang sử dụng máy tính Windows 7 Enterprise bị khóa tại nơi làm việc và do đó tôi không thể cài đặt Windows SDK để có quyền truy cập makecert. Đây là cách tôi tạo chứng chỉ tự ký sha256 của mình (lấy từ https://core.telegram.org/bots/elf-sign ):

  1. Quyết định thư mục nào bạn muốn lưu chứng chỉ của mình vào
  2. Tạo một tệp văn bản trong thư mục đó được gọi template.txtvới nội dung sau:

    [NewRequest]
    
    ; At least one value must be set in this section
    Subject = "CN={your.domain.com}"
    KeyLength = 2048
    KeyAlgorithm = RSA
    HashAlgorithm = sha256
    ;MachineKeySet = true
    RequestType = Cert
    UseExistingKeySet=false ;generates a new private key (for export)
    Exportable = true ;makes the private key exportable with the PFX
    
  3. Thay thế {your.domain.com}bằng địa chỉ bạn sẽ sử dụng để truy cập trang web của mình, vd"CN=localhost"

  4. Mở một dấu nhắc lệnh và thay đổi thư mục chứng chỉ của bạn
  5. Chạy certreq -new template.txt RequestFileOut
  6. Bạn sẽ cần biết số sê-ri, vì vậy hãy chạy certutil -store -user myđể có một bãi chứa bao gồm số sê-ri
  7. Thay thế {SERIALNUMBER}bằng số sê-ri trong bãi chứa và {YOURDER}.crtbằng tên của tệp đầu ra:certutil -user -store -split my {SERIALNUMBER} {YOURDER}.crt
  8. Thay thế {YOURDER}.crtbằng tên của tệp đầu vào và {YOURPEM}.cerbằng tên của tệp đầu ra:certutil -encode {YOURDER}.crt {YOURPEM}.cer
  9. Thay thế {your.domain.com}bằng tên miền (thử nghiệm) thực tế của bạn và {YOURPKCS}.pfxbằng tên của tệp đầu ra:certutil -exportpfx -user {your.domain.com} {YOURPKCS}.pfx NoChain

Sau đó, tôi đã đi đến Trình quản lý IIS, Trang web -> {tên trang web} -> Ràng buộc ... (trong phần "Chỉnh sửa trang web"). Sau đó, tôi đã nhấp vào https / 443 vì tôi đã thiết lập nó, Chỉnh sửa ... và chọn chứng chỉ mới từ danh sách.

Firefox phàn nàn rằng trang web của tôi đang sử dụng chứng chỉ tự ký nên tôi chỉ thêm nó vào như một ngoại lệ và voilà! nó đã làm việc!


Đây là ví dụ hoạt động tốt nhất mà không cần cài đặt, đôi khi không thể thực hiện được trên máy chủ prod.
đóiMind

Tôi không thể làm việc này trên hộp windows 7 của mình, nhưng nó hoạt động rất tốt trên máy chủ 2012. Như một ghi chú bên cạnh {yourpem} .cer và {yourpkcs.pfx} được tạo bởi hai lệnh mà chúng được liệt kê trong. You ' có lẽ sẽ muốn sử dụng cùng tên với {yourder} .crt. Vì vậy, để đơn giản, {yourcert} .crt, {yourcert} .cer, {yourcert} .pfx
DaBlue

0

Vâng, tôi đã nhận được rằng "Một phiên đăng nhập được chỉ định không tồn tại" thông báo lỗi / cảnh báo.

Tôi chỉ cần nhấp vào OK lần thứ hai và nó đã chấp nhận 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.