TLS SSL

6718f5667fdef846c752fba43d68003.jpg

HTTPS

HTTPS (Hypertext Transfer Protocol Secure の正式名) は、暗号化されたチャネルを通じてデータを送信するためのセキュリティ プロトコルです。これは、Web ブラウザと Web サーバー間の安全なデータ転送に使用される HTTP プロトコルの安全なバージョンです。HTTPS は、SSL (Secure Sockets Layer) または TLS (Transport Layer Security) プロトコルを使用して送信中にデータを暗号化し、送信中に機密情報が盗まれたり改ざんされたりしないようにします。

HTTP の欠点

通信には平文(暗号化されていない)が使用されるため、内容が盗まれる可能性があります

通信相手の本人確認をしないため、なりすましの可能性がある

メッセージの完全性は証明できないため、改ざんされた可能性があります

https

情報の暗号化

整合性チェック

認証

HTTPS = http + TLS/SSL

TLS SSL

TLS (Transport Layer Security) と SSL (Secure Sockets Layer) は、ネットワーク通信を保護するために使用されるセキュリティ プロトコルです。これらはすべて、データ送信の機密性と整合性を確保するための暗号化および認証メカニズムを提供します。

SSL は最も初期のセキュリティ プロトコルであり、TLS は SSL に基づいて開発されました。現在広く使用されているバージョンは TLS 1.2 と TLS 1.3 です。TLS 1.3 は、セキュリティ、パフォーマンス、機能がいくつか改善されたプロトコルの最新バージョンです。

TLS と SSL は主に次の 2 つの方法で使用されます。

  1. 暗号化通信: TLS/SSL は、暗号化アルゴリズムを使用してデータを暗号化し、第三者による通信内容の傍受や盗聴を防ぎます。送信中のデータのプライバシーを確​​保します。
  2. 認証: TLS/SSL は、通信当事者の身元を確認し、データが正しい受信者にのみ送信されることを保証するための認証メカニズムも提供します。これにより、悪意のあるユーザーが他のユーザーまたはサーバーになりすますことができなくなります。

SSL は https に最も早く使用されたものです
TLS は、セキュリティを向上させ、SSL に存在するいくつかのセキュリティ問題を解決する SSL のアップグレード バージョンです

SSL/TLSは次のように動作します

HTTP
TLS/SSL セキュリティ層
TCP

暗号化

  1. 対称暗号化

一般的なアルゴリズムには AES DES 暗号化が含まれます

麒麟->星月対称暗号化を使用してメッセージを送信しますが、そのメッセージが他人に知られることを望まないため、2 人はキーをネゴシエートします。今生永相随

キリン:AES算法 + 密钥(今生永相随)+明文(吃面) = XMZSXMZS==

シンユエ:使用AES + 密钥(今生永相随)+密文( XMZSXMZS==) = 吃面

  1. 非対称暗号化

一般的なアルゴリズムには RSA DSA 暗号化が含まれます

麒麟->星月メッセージを送信します。今回は非対称暗号化を使用し、公開キーと秘密キーを生成します。公開キーは公開できますが、秘密キーは既知である必要があり、公開することはできません麒麟

Xingyue: RSA + 公開鍵 + 平文 (ヌードル) = XMZS==

Kylin: RSA + 秘密キー + 暗号文 (XMZS==) = ヌードル

openSSLは秘密鍵を生成します

openSSLのインストール

Mac コンピュータには以下の機能が付属しています

Windows
https://www.openssl.org/source/

SSL/TLS 暗号化通信では、証明書関連の操作を完了するには通常、次の 3 つのファイルが必要です。

  1. 秘密鍵ファイル (「private-key.pem」など)。暗号化されたデータを復号化するために使用されます。

  2. 証明書署名要求ファイル (「certificate.csr」など)。CA からの SSL/TLS 証明書署名を申請するために使用されます。

  3. クライアントから送信されたリクエストを認証して安全な通信を確保するための SSL/TLS 証明書ファイル (「certificate.pem」など)。

秘密鍵ファイルは、通信の機密性を確保するためにデータを復号化するために使用されます。証明書署名要求ファイルには、要求者の身元情報と公開鍵およびその他の情報が含まれており、署名のために CA に送信する必要があるため、有効な SSL/TLS 証明書を取得する場合、SSL/TLS 証明書ファイルには署名された証明書情報が含まれており、この情報はクライアントとサーバー間の認証に使用され、通信のセキュリティと信頼性を確保します。

これら 3 つのファイルを鍵交換と認証に使用することで、SSL/TLS は暗号化通信を実現し、中間者攻撃に対抗し、通信のセキュリティと機密性を向上させることができます。

openssl genpkey -algorithm RSA -out private-key.pem -aes256

openssl: OpenSSL コマンドライン ツールの名前。

genpkey: 秘密鍵を生成するコマンド。

-algorithm RSA: RSA 秘密キーを生成するように指定します。

-out private-key.pem: 生成された秘密キーを private-key.pem ファイルとして保存します。

-aes256: 秘密キー ファイルを不正アクセスから保護するために、秘密キーに AES 256 ビット暗号化を追加します。

PEM パス フレーズを入力してください。 qwe123 pem ファイルの生成時にパスフレーズが必要です

pem証明書ファイルを生成する

openssl req -new -key private-key.pem -outcertificate.csr

  1. "req": X.509 証明書要求マネージャー (Certificate Request Management) 機能モジュールを使用することを示します。
  2. 「-new」: 新しい証明書署名要求を生成することを示します。
  3. 「-key private-key.pem」: 指定された秘密鍵ファイル「private-key.pem」を使用して、証明書署名要求内の鍵ペアを暗号化することを意味します。
  4. 「-outcertificate.csr」:生成された証明書署名要求をファイル「certificate.csr」に出力することを意味します。このファイルには、公開キー、許可されたサブジェクトの ID 情報など、申請者によって提供された証明書要求情報が含まれています。

Country Name (2 letter code) []:CN 国家

州名(フルネーム) []:BJ省份

地域名 (例: 市) []: BJ 市

組織名(会社など)ZMY 組織または個人

組織単位名 (セクションなど) []: XMKJ 組織名

共通名 (完全修飾ホスト名など) []:localhost ドメイン名

メールアドレス []: メールアドレス

次の「追加」属性を入力してください

証明書リクエストと一緒に送信されます

チャレンジパスワード []: パスワードとソルト XMZSXMZSXMZS

openssl x509 -req -in 証明書.csr -signkey 秘密鍵.pem -out 証明書.pem

「x509」:X.509証明書マネージャー機能モジュールを使用することを示します。

「-req」: 入力ファイル (ここでは「certificate.csr」) から証明書署名要求データを読み取ることを示します。

"-incertificate.csr": 読み込む証明書署名要求ファイル名を指定します。

「-signkey private-key.pem」: 指定された秘密鍵ファイル「private-key.pem」を署名操作に使用するように指定します。一般に、署名証明書の秘密キーは、以前に生成された CSR の秘密キーに対応する必要があります。

「-outcertificate.pem」: 署名された証明書をファイル「certificate.pem」に出力することを意味します。このファイルには、署名アルゴリズム、有効期間、公開キー、認可された主体の ID 情報など、署名された証明書の情報が含まれています。

private-key.pem のパス フレーズを入力してください: パス フレーズ

nodejsインターフェイステストhttps

生成された 2 つのファイル「certificate.pem private-key.pem」を導入します。

import https from 'node:https'
import fs from 'node:fs'
https.createServer({
    
    
    key: fs.readFileSync('private-key.pem'),
    cert: fs.readFileSync('certificate.pem'),
    //密码短语
    passphrase: 'qwe123'
}, (req, res) => {
    
    
    res.writeHead(200)
    res.end('success')
}).listen(443,()=>{
    
    
    console.log('server is running')
})

nginx 設定 https

究極の大きな落とし穴 Windows で nginx を使用して https 秘密キーを構成すると、パスワードを設定できません

  1. openssl genrsa -out nginx.key 2048 (秘密キーの生成)
  2. openssl req -new -key nginx.key -out nginx.csr (署名ファイルの生成)
  3. openssl x509 -req -in nginx.csr -signkey nginx.key -out nginx.crt (証明書の生成)

nginx設定ファイル内

    server {
       listen       443 ssl;
       server_name  localhost;

       ssl_certificate      nginx.crt;
       ssl_certificate_key  nginx.key;

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

       location / {
           root   html;
           index  index.html index.htm;
       }
    }

画像.png

おすすめ

転載: blog.csdn.net/qq1195566313/article/details/131350824