web-dev-qa-db-ja.com

指紋で自己署名SSL証明書を確認する

インターネット上のWebサーバー用に自分のSSL証明書を生成しましたが、これには3つの理由があります。

  1. 楽しい
  2. SSL証明書を購入したくない
  3. SSL Labs SSL Test でA評価(信頼の問題を除く)を取得しようとしています。

ただし、SSLについてもう少し学習したので(私は決して専門家ではなく、初心者でもあります)サーバーには証明書がありますが、これはできないことを理解しています 中間者の可能性を回避します)攻撃

新しい自己署名証明書を作成できることはわかっていますが、サーバーにアクセスでき、これに基づいて 指紋に関する質問 に基づいて、証明書とキーを検証できるかどうか疑問に思いましたブラウザで受信した指紋に対して持っているサーバー上で?

基本的に、サーバーでフィンガープリントを表示し、それをブラウザーで受信したものと比較することは可能ですか?

[〜#〜]結論[〜#〜]

Maarten Bodewesの回答 に基づいて、.crtではなく.pemファイルを使用して以下を実行しました

# openssl x509 -in mywebsite.com-selfsigned.crt -outform DER -out ~/mywebsite.com-selsigned.crt

私のsha1sumを計算しました

# sha1sum mywebsite.com-selfsigned.crt XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX mywebsite.com-selfsigned.crt

そして、 John W によって提供された回答に従って私のSha1Fingerprintを確認しました。2つの指紋はまったく同じです。パーフェクト!

5
Gary

サーバーへの他の接続に十分な信頼がある場合は、そこにあるフィンガープリントを計算して、クライアントのフィンガープリントと比較できます。基本的に、フィンガープリントは(バイナリエンコードされた)証明書のハッシュです。

たとえば:

openssl x509 -in yourcert.pem -outform DER -out yourcert.cer

ASCII armor/PEM encoding(if present))と簡単なものを削除します:

sha1sum yourcert.cer

指紋を計算します。

もちろん、クライアントがそのより安全なハッシュアルゴリズムをサポートしている場合は、SHA-256フィンガープリントでも同じです。

もちろん、一般的な考え方は、クライアントのサーバーを信頼できるということです。サーバーはすでに独自の証明書を信頼している必要があります。

2
Maarten Bodewes

手動で行うのか、自動で行うのかわからない。

手動で-はい-ブラウザに到達する証明書の拇印を表示できます。 Chromeアドレスバーの左側にある部分を右クリックし、[詳細]、[証明書の表示]の順に選択して、[詳細]タブをクリックします。拇印は下部またはその近くにあります。

自動-はい-デスクトップコンピューターに証明書をインストールするだけです(証明書をダブルクリックして指示に従います)。ブラウザーはそれ以降、それを信頼します。ある日Webサイトを閲覧してSSL警告が表示された場合、証明書の不一致があり、誰かがあなたをハッキングしています。

4
John Wu