【问题标题】:Keytool - Generate Public key in X.509 format using existing private keyKeytool - 使用现有私钥生成 X.509 格式的公钥
【发布时间】:2020-01-27 22:11:17
【问题描述】:

我正在尝试生成 X.509 格式的私钥/公钥对以及我需要用于我的 SAML 应用程序的自签名证书。

这是我所做的:

  1. here生成自签名证书和私钥并保存 .pem 格式。
  2. 使用私钥并生成公钥 使用命令openssl rsa -in key.pem -pubout -out pubkey.pem

当我将这些密钥提供给我的 SAML 应用程序时,它会在第 2 步生成的公钥上出错,并显示以下消息:

java.io.IOException: Short read of DER length

我在这里做错了什么?

【问题讨论】:

  • 您可以通过keytool或openssl生成密钥对,您不需要saml工具。公钥包含在证书中,它或多或少是与发行方的私钥签署的公钥。

标签: java rsa saml keytool


【解决方案1】:

问题

我正在尝试生成 X.509 格式的私钥/公钥对以及我需要用于我的 SAML 应用程序的自签名证书。

回答

(1) 在 Ubuntu 16.04 上,我运行以下原生 openssl 命令为 Shibboleth SAML SP 应用程序成功生成 X.509 格式的私钥/公钥对。

openssl genrsa -out key.pem 2048 -days 365
openssl req -new -key key.pem -out certreq.csr
openssl x509 -req -in certreq.csr -signkey key.pem -out cert.pem

(2) 我将 Shibboleth SAML SP 应用程序的生成的公共证书/密钥(即 cert.pem)上传到 Shibboleth SAML IdP。

(3) 我通过 Shibboleth SAML IdP 和 OpenLDAP 提供的身份验证成功登录到 Shibboleth SAML SP 应用程序。

备注

(I) 请确保 IdP 或 SP 数据库为用于存储公共证书/密钥或私有密钥的类型定义足够的长度,例如 varchar(2500)。

(II) 如果您在 Windows 环境下运行 openssl 命令,请查看我对另一个 StackOverflow 问题 Git status ignore line endings / identical files / windows & linux environment / dropbox / mled 的回答,以从私钥和公共证书/密钥的末尾删除“premature EOF”。

(III) GitHub 存储库中的How to build and run Shibboleth SAML IdP and SP using Docker container 提供有关如何构建和运行 Shibboleth SAML IdP 和 SAML SP 测试平台以测试您的 SAML SP 应用程序的说明。

独立的 Shibboleth SAML IdP 测试平台允许您检查日志以调试您的证书问题。

【讨论】:

  • 感谢您的提示,使用您上面的命令,我生成了密钥/证书,这一次它在私钥中出错:java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : Detect premature EOF。然而,这一次,公钥工作正常
  • 如果您在 Windows 环境下运行 openssl 命令,请查看我对另一个 StackOverflow 问题Git status ignore line endings / identical files / windows & linux environment / dropbox / mled 的回答,以从私钥和公共证书/密钥的末尾删除“premature EOF”。
  • 请确保 IdP 或 SP 数据库为用于存储公共证书/密钥或私有密钥的类型定义足够的长度,例如 varchar(2500)。我已经更新了我的答案,以包括“过早 EOF”的两个潜在解决方案。
  • 我已更新 openssl 命令以解决新问题“这一次它在私钥中出错:java.security.spec.InvalidKeySpecException:java.security.InvalidKeyException:IOException:检测过早的 EOF”。新的 openssl 命令删除密码,因此您的 SAML SP 不需要配置密码来解密私钥。
猜你喜欢
  • 2013-05-05
  • 2015-12-28
  • 2011-07-09
  • 1970-01-01
  • 2011-06-21
  • 1970-01-01
  • 2011-07-11
  • 2013-10-11
  • 1970-01-01
相关资源
最近更新 更多