0Pricing
Cryptology Academy · レッスン

OpenSSLコマンドライン入門

鍵生成、暗号化、ハッシュ化、証明書の検査に必要なOpenSSLコマンドを身につけます。

「OpenSSLコマンドライン入門」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。

OpenSSL のバージョンとビルド情報

コマンド "openssl version -a" は、OpenSSL のバージョン、ビルド日時、コンパイラー、構成済みのオプションを表示します。OpenSSL 1.0.x、1.1.x、3.x では暗号機能とデフォルト設定が大きく異なるため、バージョンの確認が重要です。セキュリティ上の理由から、多くの古いアルゴリズムは新しいバージョンでデフォルトでは無効になっています。

RSA 鍵の生成

コマンド "openssl genrsa -out private.pem 4096" は、PEM 形式の 4096 ビット RSA 秘密鍵を生成します。本番環境での使用では 2048 ビットが最小値で、3072 ビットでは約 128 ビットのセキュリティが得られ、4096 ビットではさらに余裕が生まれます。コマンドに "-aes256" を追加すると、パスフレーズの入力を求められ、保存時に鍵を AES で暗号化できます。

EC 鍵の生成

楕円曲線鍵は 2 つの手順で生成します。まず、"openssl ecparam -name prime256v1 -genkey -noout -out ec_private.pem" により、P-256 曲線を使った EC 秘密鍵を生成します。別の方法として、"openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-384 -out ec_private.pem" のように新しい genpkey インターフェースを使用することもでき、新規コードではこちらが推奨されます。

鍵の詳細の表示

RSA 鍵の内容は "openssl rsa -text -noout -in private.pem" で調べることができ、モジュラス、公開指数、素因数が表示されます。EC 鍵の場合は、"openssl ec -text -noout -in ec_private.pem" により曲線名と鍵の値が表示されます。"-noout" フラグを指定すると、PEM エンコードされた出力が抑制されます。

ランダムデータの生成

OpenSSL は暗号学的に安全なランダムバイトを生成できます。"openssl rand -hex 32" は 32 バイトのランダムデータを 16 進数(64 個の 16 進文字)で出力し、共通鍵や nonce の生成に使用できます。"openssl rand -base64 32" はランダムバイトを Base64 でエンコードして出力します。これは OS のエントロピーソース(Unix システムでは /dev/urandom)を使用します。

ハッシュの計算

「openssl dgst」コマンドはメッセージダイジェストを計算します。「openssl dgst -sha256 file.txt」はファイルのSHA-256ハッシュを計算します。「openssl dgst -sha256 -hmac key file.txt」はHMAC-SHA256を計算します。「openssl dgst -sha256 -sign private.pem -out sig.bin file.txt」はファイルに対するデジタル署名を作成します。

ファイルの暗号化

共通鍵方式でファイルを暗号化するには、「openssl enc -aes-256-cbc -pbkdf2 -in plaintext.txt -out encrypted.bin」を使用します。「-pbkdf2」フラグはパスフレーズから鍵を導出するためにPBKDF2を使用し、非推奨のEVP_BytesToKeyに置き換わります。復号には「openssl enc -d -aes-256-cbc -pbkdf2 -in encrypted.bin -out decrypted.txt」を使用します。新しいコードでは、AES-256-GCMなどのAEADモードが推奨されます。

PEMとDER形式の変換

証明書と鍵には、2種類のエンコード形式があります。PEMはヘッダーとフッターの行(-----BEGIN CERTIFICATE-----)を含むBase64エンコード形式で、ほとんどのUnixツールで使用されます。DERはバイナリエンコード形式で、JavaやWindowsで使用されます。PEMをDERに変換するには、「openssl x509 -inform PEM -outform DER -in cert.pem -out cert.der」を使用します。DERをPEMに変換するには、-informと-outformのフラグを逆にします。

署名の検証

デジタル署名を検証するには、「openssl dgst -sha256 -verify public.pem -signature sig.bin file.txt」を使用します。公開鍵は、まず「openssl rsa -pubout -in private.pem -out public.pem」で抽出する必要があります。証明書ベースの検証では、「openssl verify -CAfile ca.pem cert.pem」により、指定したCAチェーンに対して証明書を検証します。

証明書詳細の確認

証明書の調査は、OpenSSLで最も一般的な作業の一つです。「openssl x509 -text -noout -in cert.pem」は、サブジェクト、発行者、有効期間、SAN、拡張機能など、証明書のすべてのフィールドを表示します。「openssl x509 -enddate -noout -in cert.pem」は有効期限だけを表示するため、監視スクリプトで役立ちます。

TLSサーバーへの接続

「openssl s_client -connect example.com:443 -servername example.com」はTLS接続を確立し、サーバーの証明書チェーン、ネゴシエートされたTLSバージョン、暗号スイートを表示します。「-showcerts」を追加すると、チェーン内のすべての証明書が表示されます。証明書チェーンの問題、TLSバージョンの問題、OCSPステープリングの問題をデバッグする際に非常に役立ちます。

OpenSSL genrsaの確認

「openssl genrsa -aes256 -out private.pem 2048」コマンドは何を実行しますか?

レッスンのまとめ:OpenSSL CLIの基礎

OpenSSLには、鍵の生成(genrsa、genpkey)、形式の変換(PEM/DER)、ランダムデータの生成(rand)、ハッシュ計算と署名(dgst)、ファイルの暗号化(enc)、証明書の調査(x509 -text)、チェーンの検証(verify)、TLSのデバッグ(s_client)を行うコマンドがあります。これらで、日常的な証明書および暗号化作業の大部分に対応できます。

よくある質問

「OpenSSLコマンドライン入門」レッスンは無料ですか?

はい。「OpenSSLコマンドライン入門」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「OpenSSLコマンドライン入門」で何を学びますか?

鍵生成、暗号化、ハッシュ化、証明書の検査に必要なOpenSSLコマンドを身につけます。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cryptology Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「OpenSSLコマンドライン入門」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCryptology Academyレッスンでコードを書いて実行できますか?

はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. OpenSSLコマンドライン入門
  2. 証明書チェーンの作成と管理
  3. OCSP StaplingとCertificate Transparency
  4. Let's EncryptとACMEプロトコルの自動化
← Cryptology Academyに戻る