首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查公共RSA密钥文件

如何检查公共RSA密钥文件
EN

Stack Overflow用户
提问于 2014-10-08 22:28:11
回答 2查看 72.6K关注 0票数 21

在一个shell脚本中,我想验证公共RSA文件。我所要做的就是找到一种方法来检查这个文件是不是一个真正的公钥文件。

我可以问一下这里的专家吗,我可以用什么方法来验证这个输入文件,以检查这是一个真正的公钥文件,而不是一个常规文件。

我将在将来使用这个公钥文件来验证传入的加密gzip文件,但现在不在讨论范围内。

所有我想要的是验证输入文件,以检查其真正的RSA公钥文件,而不是一个普通的file.please说明,我没有任何其他文件(例如:私钥)。

例如:如果文件是‘public.pem’,我只想在里面检查它是一个真正的RSA公钥文件,而不仅仅是一个带有文本的文件,或者文件没有损坏。我已经在检查文件不是零大小和md5了。

其他可能的检查我发现检查文件得到文本‘BEGIN PUBLIC KEY’‘END PUBLIC KEY’也在谷歌找到这个命令,有没有更好的方法来做这件事使用openssl

代码语言:javascript
复制
‘openssl rsa -noout -text -inform PEM -in pubkey.pem -pubin’

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-08 23:17:51

可以使用任何公钥格式的解析器,包括openssl,甚至可以自己解析键,因为格式并不是那么困难。

当解析失败时,命令行工具设置非零退出代码:

代码语言:javascript
复制
openssl rsa -inform PEM -pubin -in pubkey.pem -noout &> /dev/null
if [ $? != 0 ] ; then
    echo "this was definitely not a RSA public key in PEM format"
    exit 1
fi

只需检查任何公钥:

代码语言:javascript
复制
openssl pkey -inform PEM -pubin -in pubkey.pem -noout &> /dev/null
if [ $? != 0 ] ; then
    echo "this was definitely not a public key in PEM format"
    exit 1
fi
票数 42
EN

Stack Overflow用户

发布于 2019-01-17 21:57:02

下面的脚本应该适用于OpenSSL支持的所有PEM格式的密钥和证书。我已经使用匹配和非匹配证书在各种有效和无效的ECDSA和RSA密钥上进行了测试。

将其另存为verify-cert-key:

代码语言:javascript
复制
#!/usr/bin/env bash
certFile="${1}"
keyFile="${2}"
certPubKey="$(openssl x509 -noout -pubkey -in "${certFile}")"
keyPubKey="$(openssl pkey -pubout -in "${keyFile}")"
if [[ "${certPubKey}" == "${keyPubKey}" ]]
then
  echo "PASS: key and cert match"
else
  echo "FAIL: key and cert DO NOT match"
fi

使其可执行:

代码语言:javascript
复制
chmod +x verify-cert-key

在证书和密钥上运行它:

代码语言:javascript
复制
./verify-cert-key server-crt.pem server-key.pem
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26259432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档