1Panel セキュリティの強化: Armbian でのパーソナライズされた SSL 証明書のセットアップ

基本知識

OpenSSL

  • OpenSSL は、安全な通信を開発するためのライブラリとツールのセットを提供するオープン ソースの暗号化ツールキットです。さまざまな暗号化アルゴリズム、デジタル証明書、プロトコルをサポートし、暗号化、復号化、署名、検証、証明書とキーの生成などの多くの機能を提供します。

OpenSSL の共通コマンド

  1. 秘密キーと自己署名証明書を生成します。
    • 2048 ビット RSA 秘密キー ファイル private.key と、365 日間有効な自己署名証明書ファイルcertificate.crt を生成します。
    • 秘密キー ファイルはデータの暗号化と復号化に使用され、証明書ファイルには公開キーと関連する証明書情報が含まれています。
    openssl req -newkey rsa:2048 -nodes -keyout private.key -x509 -days 365 -out certificate.crt
    
  • パラメータの詳細な説明:
    • req:OpenSSLの証明書要求ツールを使用することを示します。
    • -newkey rsa:2048: 新しい RSA キー ペアを作成します。RSA アルゴリズムでは 2048 ビットのキー長が使用されます。
    • -nodes: 生成された秘密キー ファイルは暗号化されません。これにより、秘密キーを使用するときにパスワードを入力する必要がなくなります。
    • -keyout private.key: 生成された秘密キーを private.key ファイルに保存します。
    • -x509: 自己署名 X.509 証明書を作成します。
    • -days 365:証明書の有効期間を365日に設定します。
    • -out certificate.crt: 生成された証明書をcertificate.crtファイルに保存します。

  1. 証明書署名要求 (CSR) を生成します。
    • 2048 ビット RSA 秘密キーと証明書署名リクエストを生成します。
    openssl req -new -newkey rsa:2048 -nodes -keyout private.key -out csr.csr
    
  • パラメータの詳細な説明:

    • req:OpenSSLの証明書要求ツールを使用することを示します。
    • -new: 新しい証明書リクエストを作成します。
    • -newkey rsa:2048: 新しい RSA キー ペアを作成します。RSA アルゴリズムでは 2048 ビットのキー長が使用されます。
    • -nodes: 生成された秘密キー ファイルは暗号化されません。これにより、秘密キーを使用するときにパスワードを入力する必要がなくなります。
    • -keyout private.key: 生成された秘密キーを private.key ファイルに保存します。
    • -out csr.csr: 生成された証明書要求を csr.csr ファイルに保存します。
  • このコードを実行すると、秘密鍵ファイル private.key と証明書署名要求ファイル csr.csr が生成されます。

  • 秘密キー ファイルはデータの暗号化と復号化に使用され、証明書署名要求ファイルには、ドメイン名、組織など、証明書を申請するための関連情報が含まれています。この証明書署名要求ファイルを認証局 (CA) に送信して、有効な証明書を取得できます。

  1. 証明書の詳細を表示します。
    • 発行局、有効期間、公開鍵などの証明書の詳細が表示されます。
    openssl x509 -in certificate.crt -text -noout
    

  1. 秘密キーの詳細を表示します。
    • アルゴリズム、長さなどを含む秘密キーの詳細を表示します。
    openssl rsa -in private.key -text -noout
    

  1. ファイルの暗号化と復号化:
    • ファイルは、AES-256-CBC アルゴリズムを使用して暗号化および復号化されます。
openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.txt
openssl enc -d -aes-256-cbc -in encrypted.txt -out decrypted.txt
  • openssl help詳細とヘルプを表示するには、コマンドを使用してください。

SSL証明書とDDoS攻撃

  • SSL 証明書自体は、DDoS 攻撃を直接防ぐことはできません。SSL 証明書は、送信データを暗号化し、通信のセキュリティを確保するために使用されますが、サーバーを強力な DDoS 攻撃から保護することはできません。

ただし、SSL 証明書は追加のセキュリティを提供するため、特定の状況では DDoS 攻撃に対する防御に役立ちます。たとえば、一部の DDoS 攻撃は HTTP リクエストに基づいており、SSL 証明書により HTTP リクエストがより複雑になり、シミュレーションが困難になるため、攻撃の成功率が低下します。さらに、SSL 証明書により、攻撃者がサーバーの真の IP アドレスを特定することがより困難になる可能性があるため、効果的な攻撃を仕掛けるには、より多くの時間とリソースが必要になる可能性があります。

ただし、DDoS 攻撃を回避するには、DDoS 保護サービスの使用、サーバー上での適切な構成と更新の実装など、他の防御手段を講じる必要があります。

SSL証明書共通方式体系

  • SSL 証明書の発行機関は、権威あるサードパーティ機関 ( Symantec、Comodo、GlobalSignなど) によって発行されます。
  • これらの機関は、Web サイトの身元と信頼性を検証し、認定された Web サイトに SSL 証明書を発行する責任を負います。ユーザーがこれらの Web サイトに接続すると、Web サイトの ID を確認し、SSL 証明書を通じて接続のセキュリティを保護できます。
  • 発行機関はさまざまな種類の SSL 証明書を提供しており、個人またはビジネスのニーズに応じて適切な証明書を選択できます。SSL 証明書を使用すると、Web サイトのセキュリティと信頼性が確保され、Web サイトとユーザーのプライバシーを保護するための重要な手段となります。

armbian の OpenSSL のインストール

OpenSSLのダウンロードとインストール

  1. ターミナルを開き、root としてログインするか、sudo 権限を使用します

  2. パッケージリストを更新する

    apt update
    
  3. OpenSSL ツールをインストールする

    apt install openssl
    
  4. OpenSSL が正常にインストールされたことを確認する

    • インストールが成功すると、OpenSSL のバージョン情報が表示されます。
    openssl version
    

秘密キーと証明書を生成する

  1. 秘密キーと証明書署名要求 (CSR) ファイルを生成する
    • 次のコマンドを使用して秘密キー ファイルを生成します。
    openssl genrsa -out private.key 2048
    
    • 次のコマンドを使用して CSR ファイルを生成します。
    openssl req -new -key private.key -out csr.csr
    
  • 注: CSR ファイルを生成するときは、国、地方、都市、組織名、一般名 (ドメイン名) などの情報を指定する必要があります。

秘密鍵と証明書プロンプト情報の生成の説明

チャレンジパスワード

Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:
  • これは、証明書のセキュリティを強化するために使用されるオプションの追加属性です。
  • 「チャレンジパスワード」は、秘密鍵と証明書署名要求を保護するために使用されるパスワードです。このパスワードは、証明書を使用するときに秘密キーのロックを解除するために必要になる場合があります。
  • 「チャレンジパスワード」を設定したくない場合は、Enter キーを直接押してこの手順をスキップできます。この方法では、秘密キーはパスワードで保護されません
  • 「チャレンジパスワード」を設定したい場合は、安全なパスワードを入力してEnterを押してください。このパスワードは証明書を使用するときに入力する必要があるため、必ず覚えておいてください。

  1. CSR ファイルを署名のために認証局 (CA) に送信します。自己署名証明書を選択することも、商用証明書を購入することもできます。

  2. 自己署名証明書を選択した場合は、次のコマンドを使用して自己署名証明書を生成できます。

    #生成一个有效期为365天的自签名证书(未指定存储路径的命令)
    # 没有指定具体的路径,那么它们将被存储在当前工作目录下
    openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt
    
    #生成的私钥文件和证书文件将会被保存在你指定的路径中
    openssl x509 -req -days 365 -in /path/to/csr.csr -signkey /path/to/private.key -out /path/to/certificate.crt
    
  • パラメータの詳細な説明:
    • req:OpenSSLの証明書要求ツールを使用することを示します。
    • -newkey rsa:2048: 新しい RSA キー ペアを作成します。RSA アルゴリズムでは 2048 ビットのキー長が使用されます。
    • -nodes: 生成された秘密キー ファイルは暗号化されません。これにより、秘密キーを使用するときにパスワードを入力する必要がなくなります。
    • -keyout private.key: 生成された秘密キーを private.key ファイルに保存します。
    • -x509: 自己署名 X.509 証明書を作成します。
    • -days 365:証明書の有効期間を365日に設定します。
    • -out certificate.crt: 生成された証明書をcertificate.crtファイルに保存します。

  • 操作が成功した場合のプロンプトメッセージ
    root@armbian:~# openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt
    Signature ok
    subject=C = ZN, ST = HeNan, L = KF, O = yang, OU = yuanyou, CN = yue, emailAddress = [email protected]
    Getting Private key
    
    • 「署名 ok」メッセージは、証明書が正常に署名されたことを示します。
    • 証明書の件名は、国(C)、州/州(ST)、都市(L)、組織(O)、組織単位(OU)、通称(CN)、電子メールアドレスなどです。も表示されます。


  1. 秘密キーファイルと証明書ファイルの保存場所を表示する

    • デフォルトの保存場所: 現在の作業ディレクトリ、つまりコマンドが実行されるディレクトリの下
  2. 1Panel で、関連する SSL 証明書構成オプションを見つけます。通常、パネルの設定 -> セキュリティ -> httpsで、秘密キー ファイルと証明書ファイルをインポートし、構成を保存します。
    ここに画像の説明を挿入
    - 2 つのファイルのすべての内容を対応するテキスト ボックスにコピーするように注意してください。
    ここに画像の説明を挿入

  3. 1Panel サービスを再起動して、構成を有効にします。

    • https://xxx.xxx.xxx.xxx:/端口/安全入口1panelには以下を使用してアクセスしてください。

考えられるエラー

  • サービス内部エラー:tls: failed to find any PEM data in certificate input

  • OpenSSL は、入力証明書ファイル内で有効な PEM データを見つけることができませんでした。考えられる理由:

  1. 証明書ファイルへのパスが間違っています: 指定した証明書ファイルへのパスが正しく、ファイルが存在することを確認してください。

  2. 不正な形式の証明書ファイル: 証明書ファイルは PEM 形式でエンコードされている必要があります。

    • テキスト エディタで証明書ファイルを開き、 で-----BEGIN CERTIFICATE-----始まり、-----END CERTIFICATE-----で終わり、余分なスペースや改行が含まれていないことを確認します。
  3. 証明書ファイルの内容が正しくない: 証明書ファイルが改ざんまたは破損している場合、OpenSSL はそれを正しく解析できない可能性があります。

取り付け後の感想

  1. 1panel が openSSL 証明書を設定しているのに、ブラウザには依然として安全ではないことが表示されるのはなぜですか?
    ここに画像の説明を挿入
    ここに画像の説明を挿入
  • 理由:
    • ブラウザーに無効な証明書の警告が表示されるのは、通常、自己署名証明書の使用が原因です。自己署名証明書は、公的認証局 (CA) ではなく、自分自身または自分の組織によって発行されます。
    • ブラウザーはデフォルトで公的認証局が発行した証明書を信頼するため、自己署名証明書を使用すると、ブラウザーはその証明書が信頼できないものとみなし、無効な証明書の警告を表示します。

  • 推奨事項:自己署名証明書は個人使用または社内での使用に使用できますが、公開 Web サイトや機密情報をユーザーと共有する必要があるシナリオの場合は、公開認証局によって発行された有効な証明書を使用することをお勧めします。

フルオペレーションデモ

Last login: Tue Jul 11 09:55:58 2023 from localhost
root@armbian:~# apt update
root@armbian:~# apt upgrade
root@armbian:~# apt install openssl
root@armbian:~# openssl version
OpenSSL 1.1.1n  15 Mar 2022
root@armbian:~# openssl genrsa -out private.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
............+++++
............................+++++
e is 65537 (0x010001)
root@armbian:~# openssl req -new -key private.key -out csr.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ZN
State or Province Name (full name) [Some-State]:HeNan
Locality Name (eg, city) []:KF
Organization Name (eg, company) [Internet Widgits Pty Ltd]:yang
Organizational Unit Name (eg, section) []:yuanyou 
Common Name (e.g. server FQDN or YOUR name) []:yue
Email Address []:[email protected]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:xxxx
An optional company name []:yang
root@armbian:~# openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt
Signature ok
subject=C = KF, ST = HeNan, L = KF, O = yang, OU = yuanyou, CN = yue, emailAddress = 2330648064@qq.com
Getting Private key
root@armbian:~# 

おすすめ

転載: blog.csdn.net/yang2330648064/article/details/131654440