- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
Question How do I sign git commits using an IDE like IntelliJ on Windows?
.gitconfig
中的电子邮件是相同的。 git config --global commit.gpgsign true
(我使用的是 git 2.12)。我做了一个新的提交并验证它是用 git verify-commit HEAD
gpg: cannot open tty 'no tty'
所以我找到了 IntelliJ fails to commit changes when attempting to sign commit (GPG) 并将 no-tty
添加到我的 0x21318 和重新启动文件中C:\Users\username\.gnupg\gpg.conf
这似乎是合理的,因为我刚刚添加了与没有终端有关的选项。就像 gpg: Sorry, no terminal at all requested - can't get input 说的解决方案是删除 gpg: Sorry, no terminal at all requested - can't get input
我希望它不适用于我的情况。 no-tty
文件中添加 use-agent
,这会导致附加错误 gpg.conf
。啊等等,也许我需要设置gpg-agent。 gpg: gpg-agent is not available in this session
,因此我创建该文件并添加 C:/Users/username/.gnupg/gpg-agent.conf
和 default-cache-ttl 34560000
https://superuser.com/questions/624343/keep-gnupg-credentials-cached-for-entire-user-session max-cache-ttl 34560000
比 gpg-agent --version
新得多,因此 gpg 14141 可以运行 123 123 到 23141 23 gpg --version
我发现它至少没有指向我刚刚下载的 gpg,因为那个显示第二个。所以我用 git config --global gpg.program gpg2
where gpg
。 gpg: skipped "N": secret key not available 中的解决方案是我刚刚做的,所以没有帮助。然后我意识到我用另一个 gpg 设置了一切,而不是用这个。我做了 git config --global gpg.program 'C:\Program Files (x86)\GnuPG\bin\gpg.exe'
,检查了 gpg: skipped "keyid": secret key not available
并再次做了整个事情。实际上我把别名行放在我的 alias gpg="'C:\Program Files (x86)\GnuPG\bin\gpg.exe'"
中,所以我不需要每次都运行它。 gpg --version
时,它立即挂起。不知道为什么,我不认为问题是熵不够,因为旧的 gpg 工作正常,但新版本可能需要更多的熵。无论如何,我在 Internet 上找不到任何遇到相同问题的 Windows 用户。 .bash_profile
错误,这是有道理的,因为正如我所说的 gpg --gen-key
是空的:没有与此 gpg 关联的 key 。 no secret key
的新环境变量,它指向 gpg --list-keys
。该目录存在,但正如 git commit signing failed: secret key not available 的回答中所述,我认为我的新 gpg 使用 GNUPGHOME
,所以我添加了它。我检查了 C:\Users\username\.gnupg
是否正确添加了它(我不得不重新启动)。虽然没有改变任何东西。 C:\Users\username\AppData\Roaming\gnupg
中,我尝试将环境变量指向那里,但没有帮助,printenv GNUPGHOME
仍然是空的。所以我必须找到另一种方式来指出我的 key 在哪里。 C:\Users\username\.gnupg
确实提供了正确的 key ,所以我决定将 gpg --list-keys
添加到我必须创建的 gpg --list-keys --homedir='C:/Users/s156757/.gnupg'
文件中。因为 this bug 。我确认 homedir C:\Users\s156757\.gnupg
归还了我的 key 。仍然是同样的错误,将 C:\Users\username\AppData\Roaming\gnupg\gpg.conf
和 gpg --list-keys
添加到这个 conf 文件没有帮助。 I can now commit from within IntelliJ but not anymore with Git Bash, which results in
skipped "keyid": No secret key
.
no-tty
use-agent
从来没有为 gpg 2 返回任何东西。我后来才发现该命令与 gpg --export [ID] | gpg2 --import &&
gpg --export-secret-keys [ID] | gpg2 --import
不同。 最佳答案
从 git 2.19.1 开始,支持 gpg2!
gpg-agent 现在可以处理自动签名,记住你的密码
这应该可以更容易地使用 gpg 自动签署提交。
确切地说,git 版本 2.19.1 至少有 gpg 2.2.9。
这些说明在 Windows 7、Windows 8.1、Windows 10、Arch Linux 和 Fedora 29 上进行了测试。
配置 git commit 签名的步骤
git --version
git 至少是 2.19.1 和 gpg --version
您正在使用 gpg2。 where gpg
(如果
which gpg
命令不可用,则检查
where
)最顶层的路径是 git 路径。
gpg2
命令而不是 gpg
,因此 gpg2 --version
。如果可行,从现在开始,您将不得不使用 gpg2
而不是 gpg
。 alias gpg="'C:\path\to\Git\usr\bin\gpg.exe'"
放在你的 C:\Users\username\.bash_profile
中,如果它不存在,则创建该文件,然后重新启动 git bash。再次尝试 where gpg
和 gpg --version
。从现在开始,将 gpg
输入到文件中,您应该将其替换为 'C:\path\to\Git\usr\bin\gpg.exe'
。 gpg --version
或(在 Windows 上) /home/username/.gnupg
,请检查 /c/Users/username/.gnupg
的输出。该目录不一定存在。 .bash_profile
中添加了一个别名
alias gpg="gpg --homedir=/c/Users/s156757/.gnupg"
并重新启动 bash,然后再次检查.
gpg --full-generate-key
user.name
就像你的 ~\.gitconfig
一样。 user.email
中来自 ~\.gitconfig
的电子邮件,确保该电子邮件是 GitHub 上经过验证的电子邮件。 gpg --list-secret-keys --keyid-format LONG
。现在就做,然后从输出 key_id
中复制 sec rsa4096/key_id 2018-10-27 [SC] ...
(从现在开始我将命名您的 key )。 gpg --armor --export key_id
打印公钥。 Settings | SSH and GPG keys
并添加公钥块(包括页眉和页脚)。 git config --global user.signingkey key_id
. --homedir
选项,则需要确保git启动gpg时,home也正确更改。创建一个文件 C:\Users\username\start-gpg.sh
并将其放入 gpg --homedir=/c/Users/s156757/.gnupg "$@"
。然后运行 git config --global gpg.program C:\\Users\\username\\start-gpg.sh
告诉 git 使用它。 git commit -S -m "signed commit"
并确认它已在 Github 上验证,当您查看您的提交时,您应该会看到一个小徽章。 git config --global commit.gpgsign true
进行签名。在 IntelliJ 中进行新的提交并验证它是否使用 git verify-commit HEAD
签名。 C:\Users\username\.gnupg\gpg-agent.conf
中:如果文件不存在,则创建文件,添加 default-cache-ttl 34560000
和 max-cache-ttl 34560000
。 gpgconf --kill gpg-agent
Verified
。 Unverified
徽章。问题在这里:
The key whose key-id is in the signature did not sign this commit
C:\Users\username\start-gpg.sh
的所有内容替换为以下代码。如果没有,请使用以下内容创建文件,删除 --homedir
标志并运行 git config --global gpg.program C:\\Users\\username\\start-gpg.sh
。无论如何,重新启动bash。 # Passphrase-file-descriptor is set to 0 (STDIN), to use it --batch must be used
# The --pinentry-mode loopback is required since gpg 2.1.0 for --passphrase-fd
# The "$@" makes sure that whatever git wanted gpg to do, is still done
echo mypassphrase | gpg --homedir=/c/Users/username/.gnupg --passphrase-fd 0 --batch --yes --pinentry-mode loopback "$@"
Verified
。 unverified
:The key whose key-id is in the signature did not sign this commit. Someone may be trying to trick you.
关于此的后续问题是 The key whose key-id is in the signature did not sign this commit .gitconfig
中的姓名和电子邮件相同。git config --global commit.gpgsign true
进行签名。进行新的提交并验证它是否使用 git verify-commit HEAD
签名。where gpg
,你应该看到第二个路径,其中的gpg 2121313121313 .如果没有,请尝试从下载页面单独安装 Gnupg 2。C:\Program Files (x86)\GnuPG\bin\gpg.exe
指向 alias gpg="'C:\Program Files (x86)\GnuPG\bin\gpg.exe'"
命令到我的新 gpg 在我的 gpg
中,重新启动 Git Bash 并使用 g1313p 立即使用 g1313p 1423 进行检查。C:\Users\username\.bash_profile
的新环境变量,指向 gpg --version
。重新启动并检查 GNUPGHOME
是否正确添加了它。C:\Users\username\.gnupg
放入 printenv GNUPGHOME
C:\Users\username\gpg-no-tty.sh
选项需要输入密码短语才能使其全部工作。对我来说,似乎应该存在比在计算机上以明文形式保存密码短语更好的解决方案,因此,如果您发现更好的方法,请发表评论。
echo passphrase | "C:\Program Files (x86)\GnuPG\bin\gpg.exe" --passphrase-fd 0 --batch --no-tty --yes "$@"
将 git 指向此脚本。--batch
验证它是否有效。关于git - 如何在像 IntelliJ 这样的 IDE 中签署 git 提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46863981/
有人可以告诉我签署我的 clickonce 应用程序的步骤吗? 如果从某人那里购买证书,我该如何安装它在我的开发盒以及我希望它运行的服务器上? 请概述步骤。 马尔科姆 最佳答案 以下是我相信您正在执行
我正在使用命令行 jarsigner.exe -keystore Keys.jks base.apk debug0 使用我自己的 key 退出 APK ,在删除 META-INF/CERT.RSA、C
我使用 iTextSharp 签署 PDF 文件。但是 Adobe Reader 无法验证我的签名。我使用证书颁发机构生成的 SHA-2 测试证书(我也尝试过 SHA-1)。我已经为该机构的测试证
我在尝试签署 F# 类库项目时遇到了很多麻烦。 首先我试过这个thread ,使用 AssemblyKeyFileAttribute 但没有成功。 我还尝试将标志“--keyfile:keyfile.
我正在尝试掌握 .NET dll/程序集的正式签名。 尤其 何时以及如何使用私钥 创建/控制私钥的最佳实践 需要签署什么样的模块/最佳实践 最佳答案 请参阅使用 Strong Name Signatu
我有一个由五个项目组成的解决方案,每个项目都编译成单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳做法是什么? 用不同的 key 对每个签名;确保密码不同 用不同的 key
我有一个由五个项目组成的解决方案,每个项目都编译为单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳实践是什么? 使用不同的 key 对每个签名进行签名;确保密码不同 使用不同
尝试在 Java 中签署 SOAP 消息时抛出异常: 14:47:39.896 [AWT-EventQueue-0] ERROR com.ui.FinestraPrincipal - WSHandle
我正在运行 java web start 应用程序。由于应用程序数字签名已过期。我已经从 CA 购买了签名,并使用 storetype 作为 pkcs12 对我的 jar 文件进行了签名。 对 JNL
我已经在jar中手动添加了一些类文件。并在服务器中替换。但服务器没有拿出这个新的 jar 说:java.lang.SecurityException:类“test.TestProcess2”的签名者信
我想使用 keytool 对我的插件 jar 进行签名以生成 key 。 我知道有 -validity 选项,但如何设置它以使插件始终有效且永不过期。 谢谢 最佳答案 查看 keytool 文档: V
我有一个需要互联网访问的 Java 应用程序,因为它通过 WebView 嵌入了 Web 浏览器。 JavaFX 组件。 如果应用程序未打包在 Jar 中,则执行不会出现问题。但是,当打包在 Jar
我以前做过,但我完全忘记了如何签署 activeX 控件? 最佳答案 Digital Signing for ActiveX Components (MSDN) 关于activex - 签署 Acti
不知不觉中我删除了通常命名如下的钥匙串(keychain)系统证书 Software Signing com.apple.systemdefault com.apple.kerberos.kdc Ap
我尝试了一些基于 iText v1 或 v2 的数字 PDF 签名实用程序,发现似乎整个 PDF 都加载到内存中(对于 60M PDF 进程可能需要多达 300-400MB 的内存)。 最近的 iTe
我正在尝试使用 Python 对 Amazon 的 SimpleDB 服务进行 API 调用。例如,我使用的是最简单的请求 ListDomains。然而,无论我如何尝试,响应始终是“我们计算的请求签名
我的同事给了我一个Java项目来支持和增强。我需要签署 .jar 文件。我只找到了下一个文件:genkey.bat、project.cer、signjar.bat 和 keystore-jar.jar
目前我正在升级我的旧应用程序,它是使用 itextsharp 5.0.0 完成的到 5.4.5(最新)...但是我在获取等效代码时遇到了问题 PdfSignatureAppearance.SetCry
如果我有一个作为 API 请求发送的复杂对象(例如下面的订单),我应该在生成签名时包括所有属性还是应该只使用一个子集? 我问是因为我不清楚,而且从查看其他 API 的请求参数来看,请求参数是扁平和简单
为什么 WP7 项目不支持强名称签名?项目属性中没有签名选项卡。 无论如何,我已经使用 AssemblyInfo.cs 中的 AssemblyKeyFile 和 AssemblyDelaySign 属
我是一名优秀的程序员,十分优秀!