代码之家  ›  专栏  ›  技术社区  ›  SecretIndividual

无法检查签名:没有公钥[重复]

  •  0
  • SecretIndividual  · 技术社区  · 3 年前

    我尝试使用以下命令解密文件:

    gpg --output file.txt --decrypt file.pgp
    

    文件已成功解密,但我收到一个错误:

    “gpg:无法检查签名:找不到公钥”

    知道我为什么会犯这个错误吗?

    0 回复  |  直到 12 年前
        1
  •  66
  •   user3553031    8 年前

    您收到该错误是因为您没有签署邮件的人的公钥。

    gpg 应该给你一条包含用于签名的密钥ID的消息。从加密文件的人那里获取公钥,并将其导入你的密钥环( gpg2 --import key.asc );之后您应该能够验证签名。

    如果发送者将其公钥提交给密钥服务器(例如, https://pgp.mit.edu/ ),则可以直接从密钥服务器导入密钥:

    gpg2 --keyserver https://pgp.mit.edu/ --search-keys <sender_name_or_address>
    
        2
  •  41
  •   Community Mohan Dere    9 年前

    您需要gpg密钥环中的公钥。要将公钥导入公钥环,请将公钥块放在扩展名为.gpg的文本文件中,然后发出以下命令:

    gpg --import <your-file>.gpg
    

    加密文件的实体应该为您提供这样的块。例如 ftp://ftp.gnu.org/gnu/gnu-keyring.gpg 拥有gnu.org的块。

    有关更深入的解释,请参阅 Verifying files with GPG, without a .sig or .asc file?

        3
  •  33
  •   livejq    7 年前

    还有一个类似的问题,那就是tomcat数字签名。

    $ gpg --verify apache-tomcat-9.0.16-windows-x64.zip.asc apache-tomcat-9.0.16-windows- 
    x64.zip
    gpg: Signature made 2019年02月 5日  0:32:50
    gpg:                using RSA key A9C5DF4D22E99998D9875A5110C01C5A2F6059E7
    gpg: Can't check signature: No public key
    

    但随后我使用它提供的RSA密钥来接收公钥以进行验证。

    $ gpg --receive-keys A9C5DF4D22E99998D9875A5110C01C5A2F6059E7
    gpg: key 10C01C5A2F6059E7: 38 signatures not checked due to missing keys
    gpg: key 10C01C5A2F6059E7: public key "Mark E D Thomas <markt@apache.org>" imported
    gpg: no ultimately trusted keys found
    gpg: Total number processed: 1
    gpg:               imported: 1
    

    然后成功了。

    $ gpg --verify apache-tomcat-9.0.16-windows-x64.zip.asc
    gpg: assuming signed data in 'apache-tomcat-9.0.16-windows-x64.zip'
    gpg: Signature made 2019年02月 5日  0:32:50
    gpg:                using RSA key A9C5DF4D22E99998D9875A5110C01C5A2F6059E7
    gpg: Good signature from "Mark E D Thomas <markt@apache.org>" [unknown]
    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: A9C5 DF4D 22E9 9998 D987  5A51 10C0 1C5A 2F60 59E7
    
        4
  •  1
  •   Abhilash Reddy    8 年前

    我收到了同样的消息,但我的文件按预期解密了。如果您能看到输出文件文件,请检查您的目标路径。

        5
  •  0
  •   Martin Braun    4 年前

    如果你知道你的签名是正确的,你可以绕过 gpg 并手动测试:

    我用过这里 sha256sum 验证我的debian live ISO:

    $% sha256sum debian-live-11.2.0-amd64-standard.iso | grep dd0dbffdb9c53ee8a35f869e95111a50e231a1800977dfd1604b64a0525709c9
    dd0dbffdb9c53ee8a35f869e95111a50e231a1800977dfd1604b64a0525709c9  debian-live-11.2.0-amd64-standard.iso
    
        6
  •  0
  •   Vittore Marcas    4 年前

    如果您使用Debian,请尝试:

    sudo apt-get install debian-keyring debian-archive-keyring
    
    sudo apt-key update
    
    sudo apt-get update
    

    然后,做你的事:

    gpg --output file.txt --decrypt file.pgp
    
        7
  •  0
  •   lacostenycoder    3 年前

    您可能需要导入公钥才能进行验证。在这种情况下,我从开源下载了这两个文件。在这里,我的变量表示各自的文件名 .tar.gz 和 tar.tz.asc

    # get the public key from asc file
    rsa_key=$(gpg $driver_asc 2>&1 | grep RSA | awk '{print $5}')  
    
    # import the public key
    gpg --import $rsa
    
    # verify valid signature
    VERIFIED=$(gpg --verify $driver_asc $driver_filename 2>&1 | grep 'Good signature')
    
    # handle results
    if [[ $VERIFIED ]]; then
        echo "gpg key verified. Installing..."
        # do stuff with file, gunzip etc.
    else
        echo "gpg key cannot be verified. Aborting installation"
        exit 1
    fi  
    
        8
  •  -1
  •   Jeya Ravichandran    5 年前

    我在回购初始时面对这个问题, 我不得不更新我的linux机器中的路径变量,这就解决了这个问题。

    路径=~/bin:$PATH

    推荐文章