2012-01-11 32 views
5

Tôi đang sử dụng Windows 7, và muốn chạy script ký từ Powershell, các security-settings của Powershell được thiết lập để "all-signed", và các kịch bản của tôi được ký kết với một valid certificate từ công ty của tôi. Tôi cũng đã thêm .pfx-file vào cửa hàng chứng chỉ địa phương của mình (right-clicked the pfx-file and installed).Làm thế nào để tin tưởng một chứng chỉ trong Windows Powershell

Tuy nhiên, khi tôi bắt đầu một kịch bản ký kết, tôi nhận được một thông báo nói rằng:

"Do you want to run software from this untrusted publisher? 
File Z:\Powershell Signed Scripts\signed.ps1 is published by CN=[MyCompanyName] and is not trusted on your system. Only run scripts from 
trusted publishers. 
[V] Never run [D] Do not run [R] Run once [A] Always run [?] Help 
(default is "D"):" 

Vì tôi muốn tự động gọi cho các kịch bản trên các hệ thống của tôi, tôi muốn thêm giấy chứng nhận nhập khẩu của tôi vào tin cậy liệt kê trên hệ thống của tôi, để tôi không nhận được tin nhắn nữa khi tôi chạy tập lệnh đã ký lần đầu tiên. Làm thế nào tôi có thể làm cho chứng chỉ của tôi trở thành đáng tin cậy?

+0

Bạn có chắc chắn rằng giấy chứng nhận công cộng của cơ quan cấp giấy chứng nhận phát hành chứng chỉ développement của bạn tồn tại trong kho lưu trữ chứng chỉ của bạn không? – JPBlanc

Trả lời

2

Có vẻ như bạn cần xác minh rằng tập lệnh được ký đúng cách và bạn đã cài đặt đúng chứng chỉ trong kho chứng chỉ chính xác.

Sử dụng lệnh ghép ngắn Get-AuthenticodeSignature để nhận thông tin về tập lệnh đã ký.

Cũng xem lại Scott's guide để ký giấy chứng nhận.

+2

Chứng chỉ nên được đặt cụ thể trong vùng chứa Nhà xuất bản đáng tin cậy –

6

Làm thế nào để tin tưởng một chứng chỉ trong Windows Powershell

Thật vậy, bạn có thể làm điều này mà không cần bất kỳ mmc :)

Thứ nhất, kiểm tra vị trí của giấy chứng nhận cá nhân của bạn được đặt tên ví dụ như "Power" :

Get-ChildItem -Recurse cert:\CurrentUser\ |where {$_ -Match "Power"} | Select PSParentPath,Subject,Issuer,HasPrivateKey |ft -AutoSize 

(một này phải để trống :)

gci cert:\CurrentUser\TrustedPublisher 

Build lệnh với đường dẫn đến chứng chỉ của bạn:

$cert = Get-ChildItem Certificate::CurrentUser\My\ABLALAH 

công việc kế tiếp trên certificate store (Ở đây tôi làm việc trên cửa hàng hai giấy chứng nhận: hướng dẫn & máy tính)

$store = New-Object 
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store "TrustedPublisher","LocalMachine" 
$store.Open("ReadWrite") 
$store.Add($cert) 
$store.Close() 

Kiểm tra, bạn nên tìm chứng chỉ của bạn:

ls cert:\CurrentUser\TrustedPublisher 
+0

Trong ví dụ của bạn để lưu trữ chứng chỉ, bạn đang sử dụng '" TrustedPublisher "," LocalMachine "' chỉ có thể truy cập được với quản trị viên. Trong các dòng tiếp theo bạn đang đề cập đến 'CurrentUser \ TrustedPublisher' mà người dùng có thể truy cập. Vì vậy, tôi sẽ đề nghị thay đổi '" LocalMachine "' thành '" CurrentUser "' để nó trở thành một ví dụ làm việc đầy đủ. –