簡體   English   中英

如何檢查公共 RSA 密鑰文件

[英]How to check a public RSA key file

在 shell 腳本中,我想驗證公共 RSA 文件。 我想要做的就是找到一種方法來檢查這個文件是一個真正的公鑰文件,沒有別的。

請問這里的專家有什么方法可以驗證這個輸入文件來檢查這是一個真正的公鑰文件,而不是一個普通文件。

將來我將使用此公鑰文件來驗證傳入的加密 gzip 文件,但目前不在 scope 中。

我想要的只是驗證輸入文件以檢查其真正的 RSA 公鑰文件而不是普通文件。請注意我沒有任何其他文件(例如:私鑰)。

例如:如果文件是'public.pem'我只想在里面檢查它是一個真正的 RSA 公鑰文件,而不僅僅是一個帶有文本的文件或文件沒有損壞。 我已經在檢查文件大小是否為零且 md5.

其他可能的檢查我發現檢查文件有文本'BEGIN PUBLIC KEY''END PUBLIC KEY'還在谷歌中找到這個命令,有沒有更好的方法來使用 openssl

‘openssl rsa -noout -text -inform PEM -in pubkey.pem -pubin’

謝謝

可以使用任何公鑰格式解析器,包括openssl甚至自己解析密鑰,因為格式並不困難。

解析失敗時,命令行工具設置非零退出代碼:

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

只是檢查任何公鑰:

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

如果您的公鑰以-----BEGIN RSA PUBLIC KEY-----開頭,請嘗試此命令

openssl rsa -RSAPublicKey_in -in /path/to/pub_key.pem -noout -text

以下腳本應適用於OpenSSL支持的所有PEM格式的密鑰和證書。 我已經使用匹配和不匹配的證書在各種有效和無效的ECDSA和RSA密鑰上進行了測試。

將其另存為verify-cert-key:

#!/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

使其可執行:

chmod +x verify-cert-key

在證書和密鑰上運行它:

./verify-cert-key server-crt.pem server-key.pem

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM