【问题标题】:Protection of private key for signing Chrome WebExtension保护用于签名 Chrome WebExtension 的私钥
【发布时间】:2018-09-17 09:51:09
【问题描述】:

我是 Chrome 的 WebExtension 的开发者。 WebExtension 未在 Chrome 网上应用店中列出,因为它仅用于内部用途。

在打包 WebExtension 的第一个版本时,我得到了一个包含私钥的 pem 文件。目前,我正在使用 chrome.exe 使用我的私钥创建/签署我的 WebExtension 的新版本。

我注意到该文件不受密码保护,并且包含明文形式的私钥。我认为这样处理是为了简化开发人员的打包过程。但是,我担心我的私钥的安全性。因此,我想用密码保护我的私钥。

我猜想 chrome.exe 需要一个包含明文私钥的 pem 文件,所以我搜索了替代方案来签署我的 WebExtension 并找到以下内容:

他们都使用openssl。因此,可以添加加密私钥的处理,但我对使用 openssl 不是很有经验。

是否存在用于加密和解密 pem 文件的常用/最佳实践 openssl 命令?

任何帮助将不胜感激,谢谢!

【问题讨论】:

标签: python google-chrome google-chrome-extension openssl code-signing


【解决方案1】:

使用密码加密密钥:

$ openssl rsa -in a.pem -aes256 -out a.key
writing RSA key
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

使用密码解密密钥:

$ openssl rsa -in a.key | openssl pkcs8 -topk8 -nocrypt -out a.pem
Enter pass phrase for a.key:
writing RSA key

shell 命令openssl sha1 -sign -key a.keyopenssl rsa -in a.key 将根据需要提示输入密码,因此如果您想在 Chrome 的 UI 中使用密钥,您只需要显式解密密钥,它无法处理加密PEM。

【讨论】:

  • 解密后的结果文件 (a.pem) 与我的原始私钥不同,因为它是 PKCS#1 编码的。您从 Chrome 获得的私钥是 PKCS#8 编码的。 Chrome 不支持 PKCS#1 格式。如果我尝试使用它,则会显示以下错误消息:Input value for private key must be a valid format (PKCS#8-format PEM-encoded RSA key). 以下命令将 PKCS#1 转换为 PKCS#8 (stackoverflow.com/questions/8290435):openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in pkcs1.pem -out pkcs8.pem
  • 谢谢!我忽略了这一点。
猜你喜欢
  • 2014-04-21
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 2012-02-10
相关资源
最近更新 更多