web-dev-qa-db-ja.com

OpenSSLは、SSL証明書がSHA-1またはSHA256署名されているかどうかを確認します

サイトに発行されたOpenSSL証明書がSHA-1またはSHA-256かどうかを確認するにはどうすればよいですか?

OpenSSL証明書を使用しているイントラネットサイトはたくさんありますが、証明書のプロパティを確認すると、次のように混乱します。

  • インターネットエクスプローラ:

    署名アルゴリズム:sha1RSA
    署名ハッシュアルゴリズム:sha1

  • Firefox:

    署名アルゴリズム:RSA暗号化を使用したPKCS#1 SHA-1
    指紋の下に、SHA256とSHA-1の両方が表示されます

OpenSSLコマンドライン試行が機能しない

OpenSSLコマンドを使用しようとしましたが、何らかの理由でエラーが発生し、ファイルに書き込もうとすると、出力ファイルが作成されますが、それは空白です。

openssl.exe s_client -connect mysite:443 > CertInfo.txt && openssl x509 -text -in CertInfo.txt |
find "Signature Algorithm"

基本的に、証明書が本当にSHA-1であることを検証する必要があり、それをSHA256またはSHA-2にアップグレードする必要があります。

3
Ochen

LinuxとWindowsのコマンドは次のとおりです。

また、出力ラインが2倍になったことを心配する必要はありません(Signature Algorithm:...)。それは予想されます(そして必須です)。

Linux:SHA1デモサイト

$ echo '' | openssl s_client -connect sha1.badssl.com:443 -servername sha1.badssl.com 2>/dev/null | openssl x509 -noout -text | grep 'Signature Algorithm'
    Signature Algorithm: sha1WithRSAEncryption
    Signature Algorithm: sha1WithRSAEncryption

Linux:SHA256デモサイト

$ echo '' | openssl s_client -connect sha256.badssl.com:443 -servername sha256.badssl.com 2>/dev/null | openssl x509 -noout -text | grep 'Signature Algorithm'
    Signature Algorithm: sha256WithRSAEncryption
    Signature Algorithm: sha256WithRSAEncryption

Windows cmd.exe:SHA1デモサイト

c:\>echo " " | openssl.exe s_client -connect sha1.badssl.com:443 -servername sha1.badssl.com 2>nul | openssl.exe x509 -noout -text | findstr /C:"Signature Algorithm"
    Signature Algorithm: sha1WithRSAEncryption
    Signature Algorithm: sha1WithRSAEncryption

Windows cmd.exe:SHA256デモサイト

c:\>echo " " | openssl.exe s_client -connect sha256.badssl.com:443 -servername sha256.badssl.com 2>nul | openssl.exe x509 -noout -text | findstr /C:"Signature Algorithm"
    Signature Algorithm: sha256WithRSAEncryption
    Signature Algorithm: sha256WithRSAEncryption

指紋が証明書内にありません

計算値 です。

6
StackzOfZtuff