1: openssl とは何ですか? その機能は何ですか?適用シナリオは何ですか? Baidu 百科事典によると、OpenSSL は、アプリケーションが安全な通信に使用できるオープン ソース ソフトウェア ライブラリ パッケージであり、情報の盗聴を防ぐことができます。 SSL は Secure Sockets Layer の略で、インターネット上で機密性の高い送信を実現します。 Netscape は、最初の Web ブラウザをリリースしたときに SSL プロトコル標準を提案しました。その目的は、2 つのアプリケーション間の通信の機密性と信頼性を確保することであり、サーバー側とユーザー側の両方でサポートできます。 ネットワーク伝送の過程で、ネットワークデータは WiFi ルーターを通過する必要がありますよね? そうすれば、ルーターを介していくつかのトリックを実行してデータを取得できます。したがって、openssl の役割は、情報が盗聴されるのを防ぐことです。 では、OpenSSL はどのようにして情報が盗聴されないことを保証するのでしょうか?したがって、非対称暗号化、デジタル署名、デジタル証明書などの基本的な概念を理解する必要があります。 1.1 非対称暗号化とは何ですか? 非対称暗号化とは、あるキーを使用してデータを暗号化し、その後別のキーを使用して復号化するプロセスです。 2 つのキーは公開キーと秘密キーです。 秘密鍵に基づいて公開鍵を計算することはできますが、公開鍵に基づいて秘密鍵を計算することはできません。通常、秘密鍵はサーバーによって保持され、公開鍵はクライアントで使用されます。 注: 非対称暗号化の特定のアルゴリズムについては研究しません。 1.2 デジタル署名とは何ですか? Baidu 百科事典によると、デジタル署名 (公開鍵デジタル署名とも呼ばれる) は、紙に書かれた署名に似た物理的な署名ですが、公開鍵暗号化の分野の技術を使用して実装されています。デジタル情報を認証するために使用される方法です。デジタル署名には、署名用と検証用の 2 つの補完的な操作があります。 機能は次のとおりです。特定の HASH アルゴリズムを使用してメッセージの固定ビット サマリーを計算し、秘密キーを使用してサマリーを暗号化し、前のメッセージを受信者に送信します。受信者は公開キーを使用してサマリーを復号化します。メッセージ ダイジェストもハッシュ アルゴリズムによって計算されます。2 つのダイジェストが一致している場合、データが改ざんされておらず、データが完全であることを意味します。 1.3 デジタル証明書とは何ですか? Baidu 百科事典によると、デジタル証明書は、インターネット通信における通信相手の ID 情報を示す数字の文字列です。インターネット上の通信エンティティの ID を確認する方法を提供します。 機能は次のとおりです。CA の秘密キーを使用して、Web サイトの公開キーとその他の情報に署名します。クライアントがサーバーに要求すると、Web サイトはクライアントに証明書を送信します。クライアントは最初に CA のデジタル署名を通じて CA の ID を検証し、証明書の信頼性と整合性を証明します。 非対称暗号化、デジタル署名、デジタル証明書の概念を理解した後、データが偽造されていないことをどのように保証するかを見てみましょう。 SSLはユーザーとサーバーの認証を実装します さて、質問について考えてみましょう。今、Blog Garden の Web サイトにアクセスした場合、本物の Blog Garden にアクセスしているのか、偽の Blog Garden にアクセスしているのかをどうやって見分けるのでしょうか。ブログガーデン ウェブサイトのサーバーが偽造されているかどうかを判断するために、SSL には次のようなルールがあります。サーバーにリクエストを送信すると、サーバーは受信者にデジタル証明書を返す必要があります。デジタル証明書を取得すると、内部の CA デジタル署名に基づいてデジタル証明書の正当性を検証できます。デジタル証明書が Blog Garden のものであることを証明できたとしても、証明書を送信したサーバーが Blog Garden のものであるとは限らないのでしょうか?この問題を解決するために、取得する証明書には Blog Garden の公開鍵が含まれています。以降の通信では、クライアントは公開鍵を使用して Blog Garden サーバーへのデータを暗号化します。Blog Garden サーバーは、内部のデータを復号化するために秘密鍵を使用する必要があります。データを解読できる限り、彼は合法であり、そうでなければ偽造されたということになります。偽造された場合、通信は不可能になります。したがって、SSL はサーバー認証の問題を解決します。 通信中に暗号化されたデータが盗まれるのを防ぐにはどうすればよいでしょうか? クライアントが初めてサーバーにリクエストを送信するとき(証明書を取得する前のリクエスト)、リクエストには乱数(たとえば A)が挿入され、証明書に対するサーバーの応答にも乱数(たとえば B)が含まれます。クライアントが証明書を取得した後、公開キーを使用して乱数(たとえば C)を暗号化し、サーバーに送信します。したがって、クライアントとサーバーには A、B、C の 3 つの乱数があります。双方ともこれらの乱数と同じアルゴリズムを使用してキーを生成し、その後のすべての通信ではこの対称キーが使用されます。 一般的に言えば、これら 3 つのキーは 3 つの乱数からランダムに生成されるため、同時に漏洩することはありません。そして、乱数の 1 つが公開鍵を使用して暗号化されます。したがって、これがデータが盗まれないことを保証する方法です。 上記は、インターネット上で見られる概念的な質問の一部です。これらを簡単に理解し、概念であることを理解してください。当社の openssl は、SSL の実装バージョンです。したがって、openssl の役割は情報の盗難を防ぐことであり、これは上記の知識ポイントを通じて実現されます。 openssl のアプリケーション シナリオ: http ウェブサイトを使用すると、ウェブサイト上に広告が表示されることがよくあります。これらの広告は、実際にはウェブサイト自体によって掲載されているわけではなく、中間の運営者がコンテンツを改ざんすることによって表示されます。これで、https テクノロジー (openssl ベース) を使用してデータを暗号化できるようになりました。データが改ざんされないことを保証します。 2: opensslを使用して無料の証明書を生成する 1 opensslツールを使用してRSA秘密鍵を生成する コマンドを使用します: openssl genrsa -des3 -out server.key 2048 上記のとおり、des3 はアルゴリズムで、2048 ビットの強度 (機密性のため) です。 server.key はキーファイル名です。-out は生成されたファイルのパスと名前を意味します。 以下のように表示されます。 先ほど生成した秘密鍵を確認しましょう。次のコマンドを使用します。 openssl rsa -text -in server.key 次の図に示すように: 以下のように、コマンド cat server.key を使用して server.key を表示し続けます。 2. 証明書署名要求CSRファイルを作成する 次のコマンドを使用します。 openssl req -new -key server.key -out server.csr -keyはCA秘密鍵を指定することを意味します 以下のように表示されます。 上記のコマンドを実行すると、CSR の生成時に次の情報を入力するよう求められます。 国名(2文字コード)[]:CN // 国コードを入力します。中国の場合はCNと入力します。 州または県名(フルネーム) []:HangZhou // 州を入力してください。ここにHangZhouと入力してください 地域名 (例: 都市) []:HangZhou // 都市名を入力します。ここでも HangZhou と入力します。 組織名 (例: 会社) []:tbj // 組織名 (または会社名、ここでは tbj と記述) を入力します。 組織単位名 (例: セクション) []:tbj // 組織部門を入力します 共通名 (例: 完全修飾ホスト名) []:*.abc.com // ドメイン名を入力します (私の場合は (*.abc.com)) メールアドレス []:[email protected] // あなたのメールアドレス 次の「追加」属性を入力してください 証明書のリクエストと一緒に送付されます チャレンジパスワード []:123456 // 証明書のパスワード。パスワードを設定しない場合は、Enter キーを押すだけです。 上記の操作を実行すると、現在のディレクトリに次の 2 つのファイルが生成されます。 server.key server.csr 次の図に示すように: 次のように csr ファイルを表示します。 openssl 要求 -text -in server.csr -noout 次の図に示すように: 3. CA証明書を生成する openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt x509の意味: 指定された形式 次の図に示すように: 注: 上記のように、server.crt には証明書所有者の情報、所有者の公開鍵、および署名者の署名が含まれています。 4. クライアント証明書を生成する クライアント証明書の生成は、CA 証明書の生成と似ています。 4.1. まず秘密鍵を生成する コマンドを使用します: openssl genrsa -out クライアントキー 2048 次の図に示すように: 4.2 リクエストファイルの生成 コマンドを使用します: openssl req -new -key client.key -out client.csr 次の図に示すように: 4.3 署名のためにCAに送信する コマンドを使用します: openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.crt 次の図に示すように: 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: いくつかの面接の質問を使ってJavaScriptの実行メカニズムを調べる
MySQLのインストール、設定、最適化は参考用です。具体的な内容は次のとおりです。 MySQL ダウ...
MySQL インストール手順 MySQL は、スウェーデンの MySQL AB によって開発された...
目次クラスコンポーネント機能コンポーネントインタビューのよくある質問: React における ref...
ここでは主に、スタンドアロンのプログラムを生成できるspring-bootと、Mavenプラグインd...
この記事の例では、JavaScriptで4桁のランダムな検証コードを生成する具体的なコードを参考まで...
HTML CSS および JavaScript を使用して、プラス、マイナス、ゼロの 3 つのボタン...
MySQL ショートリンクの設定方法1. mysql 接続番号ステートメントコマンドを確認します。 ...
序文退社前に、ある依頼を受けました。基本イメージ規格の変更により、最新の Docker イメージ規格...
目次1. SparkとHadoopの比較1.1 Haoopの欠点1.2 Hadoop MR に対する...
最近、Ant Design Blazor コンポーネント ライブラリにマルチタブ コンポーネントを実...
初期のコンピューターのほとんどは ASCII 文字しか使用できませんでしたが、その後、主要な西洋のア...
無線インタラクションにずっと興味があったので、今回は実践してみようと思います〜この分析と評価は iO...
目次1. コンパイラコードフォーマット仕様設定2. Vueテンプレートの設定1. コンパイラコードフ...
1. mysql-5.7.17-winx64.zip をダウンロードします。リンク: https:/...
「人間中心」と「グリーンデザイン」という2つの視点から考える——デザイン業界の同僚とも議論する2つの...