2012-03-02 35 views
5

Hiện tại tôi tạo trình cài đặt cho một chương trình bằng NSIS trên máy Linux. Các tệp nhị phân NSIS đã được biên dịch cho Ubuntu và việc sử dụng tập lệnh .nsi không có khó khăn gì. Tuy nhiên, kết quả là setup.exe tệp chưa được ký. Điều này dẫn đến cảnh báo đáng sợ cho người dùng của chúng tôi tải xuống trình cài đặt thông qua hầu hết các trình duyệt web phổ biến, cũng như cảnh báo từ chính Windows khi chạy.Đăng nhập trình cài đặt NSIS trên hộp Linux

Chúng tôi muốn tránh những cảnh báo này và trừ khi tôi thiếu một số thứ, yêu cầu sử dụng công cụ Windows để ký tệp setup.exe được tạo. Có cách nào để làm điều này trên một máy không phải Windows? Không may, mỗi trình cài đặt là duy nhất (các tệp khác nhau được đóng gói tùy thuộc vào yêu cầu của khách hàng và ID duy nhất được bao gồm) vì vậy tôi không thể ký trình cài đặt trên máy Windows và sau đó tải nó lên.

Trả lời

1

Tôi phải làm điều đó một vài tuần trước, mà không cần sử dụng rượu vang. Những gì tôi đã làm là nhập tệp pfx vào cửa sổ và sau đó xuất nó với tùy chọn "Bao gồm tất cả chứng chỉ trong đường dẫn chứng chỉ nếu có thể". sau đó tôi làm theo hướng dẫn trên this page.

Sau khi bạn có tất cả các Certs (SPC và các tập tin PVK), bạn nên sử dụng lệnh sau:

signcode -spc [spc file] -v [pvk file] -a sha1 -$ commercial -t http://timestamp.verisign.com/scripts/timstamp.dll -tr 10 [exe file to sign] 

tôi phải cài đặt gói mono-dev:

sudo apt-get install mono-devel 
+0

OpenSSL báo cáo rằng '-pvk-strong' là một tùy chọn không xác định. Tôi đã cố gắng bỏ qua nó, nhưng tôi gặp phải một lỗi khi chạy 'signcode'; nó sẽ nhắc mật khẩu. Tôi cho rằng điều này sẽ giống như tôi đã sử dụng khi xuất chứng chỉ từ Windows, nhưng điều này không hoạt động. Tôi đang đi lạc lối ở đâu? –

+0

Tắt tải xuống phiên bản OpenSSL mới nhất và xây dựng nó đã loại bỏ lỗi đó. Dunno tại sao Ubuntu không có trong apt. :( –

+0

@Tom G: bởi vì họ cố gắng giữ mọi thứ ổn định hơn nữa trên kênh phát hành LTS. Debian thậm chí còn bảo thủ hơn. – 0xC0000022L

0

Việc ký tệp cho Windows sử dụng chữ ký Microsoft Authenticode. Có một công cụ trong SDK có dấu Executables và DLL (signtool.exe). Bạn có thể chạy nó bằng Wine.

Cũng có thể ký các tệp thông qua các cuộc gọi API Windows - các chức năng này có thể được triển khai trong Wine, nhưng tôi nghi ngờ nó vì Authenticode chỉ được Microsoft sử dụng và triển khai (theo như tôi biết).

Tuy nhiên công cụ này không nhiều - về cơ bản nó gắn thêm chứng chỉ và dấu thời gian đã ký ở cuối tệp. Có thể có sự thích ứng với Linux.

Đây là số link cho người nhận được mã hoạt động bằng mã vạch.

6

Lựa chọn tốt nhất của bạn có thể là việc sử dụng: osslsigncode. Được xây dựng dễ dàng cho tôi (đảm bảo có sẵn các tiêu đề OpenSSL). Nó có thể gặp khó khăn với chính sách ký chế độ hạt nhân, mặc dù (nhúng các certs cha lên đến gốc) - vì vậy bạn có thể vẫn phải dùng đến WINE cuối cùng.

+1

osslsigncode làm việc cho tôi. Bây giờ tôi có thể ký exes bằng cách sử dụng một pfx, cảm ơn. –

Các vấn đề liên quan