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フィードバックを取得できます。ローカル設定は不要です。