【问题标题】:OpenSSL unable to load certificate on backendOpenSSL 无法在后端加载证书
【发布时间】:2017-03-12 10:41:33
【问题描述】:

我创建了我的 SSH 密钥accordingly

ssh-keygen -t rsa -C "myemail@google.com"

这会给我两个文件:

myKey.key.pub
myKey.key

然后要转换为 pem 格式,我运行 command:

ssh-keygen -f myKey.key.pub -e -m pem > myKey.pem

myKey.pem 是要为后端C program 提供的文件。

但是,我一直坚持使用类似的error

unable to load certificate
140387178489504:error:0906D06C:PEM routines:PEM_read_bio:no start     
line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

所以,我关注了steps

openssl rsa -text -in file.key -inform DER
openssl pkcs8 -in file.key -inform der

我还检查了其他一些commentssuggestions。但问题仍然存在:

error:0D0680A8:ASN1 encoding routines:ASN1CHECK_TLEN:wrong tag:tasn_dec.c:1338
error:0D07803A:ASN1 encoding routines:ASN1CHECK_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:390:Type=X509_SIG

此证书将与后端一起使用。或者获取文件 pem 的方法是手动创建和编辑它?如果是这样,certificate 部分来自哪里?

有什么建议可能是我的错误吗?非常欢迎所有 cmets :)

【问题讨论】:

  • SSH 密钥 != SSL 证书。你想达到什么目的?
  • 嗨@Jakuje!我用过:我用过: ssh-keygen -f myKey.key.pub -e -m pem > myKey.pem 。那么应该用什么作为证书呢?真的非常感谢。
  • 要获得 SSL/TLS 证书,您使用您的 private 密钥(在您的情况下以及许多但不是所有其他情况下,OpenSSH private 密钥文件与 OpenSSL 兼容)生成 证书签名请求 aka CSR 并将 CSR 提交给证书颁发机构(即 CA)以获取证书。如果您希望陌生人信任您的服务器,您需要使用公共 CA,例如 Verisign、GoDaddy、LetsEncrypt 等。如果只有您或认识您的朋友/同事会连接,您可以使用 openssl 创建自己的临时 CA ,甚至是自签名证书(无 CA)。
  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?

标签: c ssh openssl backend ssh-keys


【解决方案1】:

当您的密钥受密码保护时,可能会发生这种情况。

你必须解密它

$ openssl rsa -in protected.key -out unprotected.key

然后你必须创建一个新的 .pem 文件

$ cat unprotected.key yourcert.crt > yourcert.pem

我还建议您检查密钥和证书文件的行尾(openssl 不像 Windows 的)和 BOM 标记。

确保您的证书与 Windows“兼容”,最重要的是每行末尾没有 ^M

如果你打开它,它会是这样的:

-----开始证书-----^M MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUADBM^M

要解决“这个”问题,请使用 Write 或 Notepad++ 打开它并将其转换为 Windows“样式”

【讨论】:

  • 嗨,克里斯塔洛!非常感谢您的评论。请检查我更新的问题。要创建 pem 文件,我使用了: ssh-keygen -f myKey.key.pub -e -m pem > myKey.pem 。还缺少什么吗?谢谢!
  • OpenSSL 适用于 WIndows 行尾 (CRLF) 或 PEM 中任何类型的尾随空格。 BOM(经常)或 UTF-16(总是)确实存在问题,但由于 PEM 在设计上只是 ASCII,因此不需要这些,并且大多数 Windows 程序不会添加不需要的它们。
  • @dave_thompson_085 。谢谢你的评论。我在 Linux 上。不是 Windows。
猜你喜欢
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 2018-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-02
相关资源
最近更新 更多