c - OpenSSL 无法在后端加载证书

标签 c ssh openssl backend ssh-keys

我创建了我的 SSH key 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 在哪里部分来自?

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

最佳答案

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

你必须解密它

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

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

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

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

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

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

-----开始证书-----^M MIDITCCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M

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

关于c - OpenSSL 无法在后端加载证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40323703/

相关文章:

c++ - 如何使用 Turbo C++ 编译器配置 eclipse CDT

linux - 无法通过 SSH 连接到 Oracle 云实例

amazon-ec2 - 一台服务器可以有多个 SSH key 对吗?

c++ - 如何使用为 Native Client(NaCl) 移植的库?

c - C 中的结构体数组

C的按位和逻辑表达式计算?

c++ - 如何让 OpenSSL 服务器使用阻塞 BIO 干净地关闭?

ssl - 如何在 IP 地址上强制使用 SSLv3 连接?

c - 将开源程序集成到我自己的 C 语言中

linux - $ ssh -G 2>&1 | grep -e 非法 -e 未知 >/dev/null && echo "Sys­tem clean"||回显 "Sys­tem in­fec­ted"