【问题标题】:how to pass yubikey pin to openssl command in shell script如何在 shell 脚本中将 yubikey pin 传递给 openssl 命令
【发布时间】:2020-01-03 20:20:48
【问题描述】:

我正在尝试使用 opensssl 命令签署 CSR。 证书和信任根转到 yubikey 并且 yubikey 充当 HSM 权限。 每次我执行命令时,它都会询问 Yubikey Pin。 如何在命令行中传递 PIN 码,这样我就不必手动输入它,它可以完全脱壳。

openssl x509 -engine pkcs11 -req -days 30 -CAform PEM -CA "$subCert" -CAkeyform engine -CAkey "pkcs11:pin-value=$pin" -sha256 -CAcreateserial -in "$csr_file" -outform DER -out "$crt_file"

此命令不应要求输入 PIN,而应从 "pkcs11:pin-value=$pin" 中获取密码

【问题讨论】:

    标签: shell openssl certificate


    【解决方案1】:

    一些背景:在各种cmet中都提出了不同的pin方法可以解决这个问题,传入pin的选项有:

    • 在 yubikey 文档中指定 -passin pass:123456 here
    • PIN=123456 添加到[pkcs11_section] 中的openssl 配置文件中
    • 使用 PKCS#11 URI(通过 openssl 传递到 pkcs11 库),类似于:-CAKey 'pkcs11:id=%02;type=private;pin-value=$PIN'

    然而,所有这些似乎只影响令牌引脚,而不影响密钥引脚(通常都需要这两者)。我不清楚这是否是bug or a feature

    Opensc 有一些discussion 建议您在您的opensc 配置的framework pkcs15 部分设置pin_cache_ignore_user_consent = true;,但是,当我测试它时,这并没有改变行为。

    使用插槽 9c(索引 02)的 yubikeys 似乎存在问题(也不清楚这是否是同一个问题),其中 openssl 始终断言 CKA_ALWAYS_AUTHENTICATE,因此需要输入密钥的 pin。这可以通过使用插槽 9a(索引 01、slot0-id1pkcs11:id=%01;)来避免,如建议的here

    您也许还可以将OpenSC's pkcs11-tool 用于某些功能,这似乎没有相同的问题

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 2018-04-02
      • 2022-01-23
      • 1970-01-01
      • 2015-01-21
      • 2021-03-31
      • 2019-07-02
      相关资源
      最近更新 更多