Làm cách nào để xác minh tệp đã tải xuống bằng tệp .sig?


85

Khi tôi tải xuống GCC, nó cũng có một .sigtệp và tôi nghĩ nó được cung cấp để xác minh tệp đã tải xuống. (Tôi đã tải xuống GCC từ đây ).

Nhưng tôi không thể tìm ra cách tôi nên sử dụng nó. Tôi đã thử gpg, nhưng nó phàn nàn về khóa công khai.

[root@localhost src]# gpg --verify gcc-4.7.2.tar.gz.sig gcc-4.7.2.tar.gz
gpg: Signature made Thu 20 Sep 2012 07:30:44 PM KST using DSA key ID C3C45C06
gpg: Can't check signature: No public key
[root@localhost src]# 

Làm cách nào để xác minh tệp đã tải xuống bằng .sigtệp?

Câu trả lời:


98

Bạn cần nhập khóa công khai: C3C45C06

Có thể được thực hiện trong ba bước.

  1. tìm ID khóa công khai:

    $ gpg gcc-4.7.2.tar.gz.sig gpg: Chữ ký được tạo Čt 20. září 2012, 12:30:44 CEST sử dụng khóa DSA ID C3C45C06 gpg: Không thể kiểm tra chữ ký: Không có khóa công khai

  2. nhập khóa công khai từ máy chủ khóa. Nó thường không cần thiết để chọn máy chủ chính, nhưng nó có thể được thực hiện với --keyserver <server>. Ví dụ về máy chủ khóa.

    $ gpg --recv-key C3C45C06 gpg: yêu cầu khóa C3C45C06 từ khóa máy chủ hkp.gnupg.net gpg: khóa C3C45C06: khóa công khai "Jakub Jelinek jakub@redhat.com" đã nhập gpg: không tìm thấy khóa tin cậy cuối cùng nào gpg: Tổng số đã xử lý : 1 gpg: đã nhập: 1

Nếu lỗi lệnh hết thời gian chờ, có thể bạn đang ở phía sau tường lửa đang chặn cổng gpg mặc định. Hãy thử sử dụng tùy chọn `--keyserver 'với cổng 80 (hầu hết tất cả tường lửa đều cho phép cổng 80 b / c duyệt web):

$ gpg --keyserver hkp://${HOSTNAME}:80 --recv-keys ${KEY_ID}
  1. xác minh chữ ký:

    $ gpg gcc-4.7.2.tar.gz.sig gpg: Chữ ký được thực hiện 20.t 20. září 2012, 12:30:44 CEST sử dụng khóa DSA ID C3C45C06 gpg: Chữ ký hay từ "Jakub Jelinek jakub@redhat.com" [không xác định ] gpg: CẢNH BÁO: Khóa này không được chứng nhận bằng chữ ký đáng tin cậy! gpg: Không có dấu hiệu nào cho thấy chữ ký đó thuộc về chủ sở hữu. Vân tay khóa chính: 33C2 35A3 4C46 AA3F FB29 3709 A328 C3A2 C3C4 5C06

Đầu ra phải là "Chữ ký tốt".


gpg: CẢNH BÁO: Khóa này không được chứng nhận bằng chữ ký đáng tin cậy!

Dành cho một câu hỏi khác;)


8
Giải thích từng bước tuyệt vời!
Matthew Kraus

4
Trong trường hợp tệp yêu cầu xác minh là gnupg (không có trong câu hỏi), tổng số kiểm tra SHA-1 có sẵn trên trang web gnupg để xác minh những người tải xuống gnupg đầu tiên.
10 cls

Trong quá trình xác minh chữ ký, gpg xử lý tệp tarball và tệp .sig tương ứng của nó như một đơn vị. Nếu tarball bị thiếu hoặc bị đổi tên, gpg cung cấp cơ hội để chỉ định tên tarball.
Andrew P.

Tôi đã nhận được một khóa RSA và không hoạt động nếu không có hoặc có --keyservertừ danh sách đó, chỉ có một người nhận được nó nhưng nó có vẻ không đáng tin cậy, thật kỳ lạ vì tôi đang thử nó trên GNU coreutilsđó là một gói được sử dụng rộng rãi.
user10089632

ngoài ra, nếu gpg cảnh báo "không có lệnh nào được cung cấp, hãy đoán ý bạn", hãy sử dụng gpg --verify gcc-4.7.2.tar.gz.sigthay thế.
xdavidliu

23

Lối đi khác này đặc biệt hữu ích để xác minh các dự án GNU (ví dụ: Octave ) vì khóa được yêu cầu bởi chữ ký của họ có thể không được tìm thấy trong bất kỳ máy chủ khóa nào.

Từ http://ftp.gnu.org/README

Ngoài ra còn có các tệp .sig, chứa các chữ ký GPG tách rời của các tệp ở trên, được ký tự động bởi cùng một tập lệnh tạo ra chúng.

Bạn có thể xác minh chữ ký cho các tệp dự án gnu bằng tệp keyring từ:

https://ftp.gnu.org/gnu/gnu-keyring.gpg

Trong thư mục có tệp khóa, tệp nguồn để xác minh và tệp chữ ký , lệnh sử dụng là:

$ gpg --verify --keyring ./gnu-keyring.gpg foo.tar.xz.sig


3
Nhưng nếu chúng ta đang nói về bảo mật thì tốt hơn là sử dụng kết nối HTTPS: https://ftp.gnu.org/gnu/gnu-keyring.gpg
Maxim

3
Thật buồn cười, tôi ở đây một cách rõ ràng để tìm cách xác thực Octave! :)
Ron Jensen - Tất cả chúng ta đều là Monica

Cảm ơn. Tôi không thể tìm thấy khóa của người bảo trì Bash trong bất kỳ máy chủ khóa nào nhưng đây là những gì tôi cần để xác minh chữ ký cho mã nguồn của nó.
Anthony Geoghegan

1
Đối với quãng tám, hãy xem câu trả lời về ứng dụng gpg4win tại đây: superuser.com/questions/1268544/…
Martin

1

Bạn phải tìm kiếm các máy chủ khóa công khai cho id khóa đã cho: trong trường hợp của bạn, ID C3C45C06 Nhập khóa tìm thấy vào kho khóa cục bộ của bạn và sau đó, việc xác minh sẽ được thực hiện. Tôi sử dụng Ubuntu 12.04 và nó đi kèm với phần mềm quản lý khóa Seahorse. Trước khi nhập khóa, tôi đã thấy điều này:

~/Downloads$ gpg --verify --keyring ./gnu-keyring.gpg icecat-31.5.0.en-US.linux-x86_64.tar.bz2.sig icecat-31.5.0.en-US.linux-x86_64.tar.bz2
gpg: Signature made  9.03.2015 (пн) 22,35,52 EET using RSA key ID D7E04784
gpg: Can't check signature: public key not found

Sau khi nhập khóa, tôi thấy điều này:

~/Downloads$ gpg --verify --keyring ./gnu-keyring.gpg icecat-31.5.0.en-US.linux-x86_64.tar.bz2.sig icecat-31.5.0.en-US.linux-x86_64.tar.bz2
gpg: Signature made  9.03.2015 (пн) 22,35,52 EET using RSA key ID D7E04784
gpg: Good signature from "Ruben Rodriguez (GNU IceCat releases key) <ruben@gnu.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: A573 69A8 BABC 2542 B5A0  368C 3C76 EED7 D7E0 4784

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.