小编Bry*_*Kan的帖子

如何在没有包属性的情况下以 PEM 格式从 PFX 导出 CA 证书链

我有一个包含完整证书链和私钥的 PKCS12 文件。我需要将它分成 3 个文件用于应用程序。我需要的3个文件如下(PEM格式):

  • 未加密的密钥文件
  • 客户端证书文件
  • CA 证书文件(根证书和所有中间证书)

这是我必须执行的一项常见任务,因此我正在寻找一种无需手动编辑输出即可完成此任务的方法。

我尝试了以下方法:

openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain -out <cacerts.cer>
Run Code Online (Sandbox Code Playgroud)

这工作正常,但是,输出包含包属性,应用程序不知道如何处理。

经过一番搜索,我找到了一个建议的解决方案,即通过 x509 传递结果以去除包属性。

openssl x509 -in <clientcert.cer> -out <clientcert.cer>
Run Code Online (Sandbox Code Playgroud)

这有效,但我遇到了 cacert 文件的问题。输出文件仅包含链中的 3 个证书之一。

有没有办法避免在 pkcs12 命令的输出中包含包属性,或者有没有办法让 x509 命令输出包含所有证书?此外,如果通过 x509 运行它是最简单的解决方案,有没有办法将 pkcs12 的输出通过管道传输到 x509 而不是两次写出文件?

openssl certificates

52
推荐指数
2
解决办法
12万
查看次数

使用 Sudo 执行 Bash 脚本函数

我有一个脚本可以做很多不同的事情,其中​​大部分不需要任何特殊权限。但是,我在函数中包含的一个特定部分需要 root 权限。

我不希望整个脚本都以 root 身份运行,我希望能够在脚本中以 root 权限调用这个函数。必要时提示输入密码不是问题,因为它主要是交互式的。但是,当我尝试使用时sudo functionx,我得到:

sudo: functionx: command not found
Run Code Online (Sandbox Code Playgroud)

正如我所料,export没有任何区别。由于多种原因,我希望能够直接在脚本中执行该函数,而不是将其分解并作为单独的脚本执行。

有什么方法可以使我的函数对 sudo “可见”,而无需提取它,找到适当的目录,然后将其作为独立脚本执行?

该函数本身大约有一页长,包含多个字符串,一些是双引号的,一些是单引号的。它也依赖于在主脚本其他地方定义的菜单功能。

我只希望拥有 sudo ANY 的人能够运行该功能,因为它所做的一件事就是更改密码。

bash sudo function

35
推荐指数
3
解决办法
2万
查看次数

标签 统计

bash ×1

certificates ×1

function ×1

openssl ×1

sudo ×1