使用智能卡实现 OpenSSH 证书

使用智能卡实现 OpenSSH 证书

我想用CA和智能卡实现公钥认证。OpenSSH有自己的证书格式,不是x509。

我有一台服务器 (SSHD) 和一台客户端。我已经使用 CA 进行了公钥认证,现在我想将智能卡插入到等式中。我使用 ARX cryptokit 访问智能卡,并想将我的密钥和证书导入智能卡。当我单击“导入密钥”时,它说我需要 PKCS12 格式的证书才能导入。我尝试使用 Openssl 将我的 OpenSSH 证书和 RSA 私钥转换为 pkcs12,但它不接受我的证书。我看到它需要 PEM 编码,但我似乎无法实现它。

我的问题是:

  1. 如何将 OpenSSH 证书和密钥转换为 PKCS12?
  2. 我可以实际将智能卡与 OpenSSH 服务器、CA 和整个软件包一起使用吗?

提前致谢。

编辑:我会告诉你我写的命令,这样就不会产生任何误解

生成 CA 密钥 Ssh-keygen -t RSA -f CA

生成用户密钥 Ssh-keygen -t Rsa -f User

签名用户密钥 Ssh-keygen -s CA.priv -I Identity -n UserName -V +52W User.pub

现在输出是 user-cert.pub 我想将我的证书和私钥转换为 pkcs12 格式

Openssl pkcs12 -export -out certificate.pfx -inkey user.priv -in user-cert.pub -certfile CA-cert.pub

CA-cert.pub 是我生成的自签名证书,与生成用户密钥相同。

最后一个命令的输出是“无法加载证书”我尝试不使用“-certfile Ca-cert.pub”的最后一部分,但输出仍然相同。

希望有人有个主意。

答案1

  1. OpenSSL 可以进行转换。

    openssl pkcs12 -export -out servercert.p12 -inkey servercert.key -in servercert.crt -certfile CACert.crt

  2. 是的,你可以,但是你需要一些工具:

    • 一个用于在低层与智能卡交互:CryptoAPI / OpenCT (Win/Ux)
    • 一个用于处理智能卡上的内容(如 OpenSC)
    • 执行身份验证的
    • 一个用于处理证书等(OpenSSL,如上例所示)
    • 使一切顺利的脚本(ps / perl)

相关内容