opensslは、暗号化、ハッシュ、鍵や証明書の作成、TLS接続の確認など、多くの機能を1つにまとめたコマンドである。openssl [サブコマンド] [オプション]の形式で使う。ここでは、やりたいこと別に、各機能を解説した記事へリンクする。
記事の実行例は、Ubuntu 24.04のOpenSSL 3.0を基準にしている。macOS標準の/usr/bin/opensslはLibreSSLであり、オプションや出力に違いがある。違いは各記事の末尾にまとめている。
記事一覧
乱数・ハッシュ・エンコード
- 【openssl】ランダムな文字列を生成する (rand)
rand -hexや-base64で、トークンやパスワード用の乱数を生成する。必要な文字数からバイト数を決める方法も紹介する。 - 【openssl】ファイルのハッシュ値を計算する (dgst)
ファイルのハッシュ値やHMACを計算する。
sha256sum -cで検証できる出力形式にも触れる。 - 【openssl】Base64でエンコード・デコードする (base64) Base64のエンコードとデコードをする。1行の出力やURLセーフへの変換、デコードが空になる原因をまとめる。
暗号化
- 【openssl】ファイルをパスワードで暗号化・復号する (enc)
ファイルをパスワードで暗号化・復号する。
-pbkdf2を付ける理由と、-passの指定方法を紹介する。 - 【openssl】/etc/shadow用のパスワードハッシュを作る (passwd)
/etc/shadowや.htpasswd用のパスワードハッシュを作る。-6や-apr1などの方式の違いをまとめる。
鍵
- 【openssl】秘密鍵を作成する (genpkey)
RSA、EC、Ed25519の秘密鍵を作る。
genrsaやecparamとの違いにも触れる。 - 【openssl】秘密鍵から公開鍵を取り出す (pkey) 秘密鍵から公開鍵を取り出す。鍵の中身の表示、パスフレーズの付け外し、PEMとDERの変換も紹介する。
証明書の作成
- 【openssl】CSRを作成する (req -new)
CSRを作る。
-subjでの対話なしの指定や、-addextによるSANの追加を紹介する。 - 【openssl】自己署名の証明書を作成する (req -x509)
自己署名の証明書を1コマンドで作る。有効期間のデフォルトと
CA:TRUEの挙動に注意点をまとめる。 - 【openssl】自分用の認証局で証明書に署名する (x509 -req)
自分用の認証局を作り、サーバー証明書に署名する。
-extfileを省略するとSANが消える点に触れる。
証明書の確認・変換
- 【openssl】証明書ファイルの有効期限を確認する 証明書ファイルの有効期限や発行者を確認する。
- 【openssl】指定したURLの証明書をコマンドで確認する URLを指定して、サーバーが返す証明書を確認する。
- 【openssl】証明書の形式を変換する (x509 -outform) 証明書をPEM、DER、PKCS#7の間で変換する。フィンガープリントやサブジェクトのハッシュ値も扱う。
- 【openssl】証明書チェーンを検証する (verify) 証明書チェーンを検証する。中間CAの不足や期限切れなど、よくあるエラーの出力を紹介する。
- 【openssl】秘密鍵と証明書が対応しているか確認する (pkey -pubout) 秘密鍵、CSR、証明書が対応しているかを、公開鍵の比較で確認する。
- 【openssl】PFX(.p12)ファイルを作成・展開する (pkcs12) 秘密鍵と証明書をPFXにまとめる、PFXから取り出す。macOSのキーチェーンに読み込めない場合の対処も紹介する。
署名
- 【openssl】ファイルに電子署名を付けて検証する (dgst -sign) ファイルに電子署名を付けて検証する。RSA、ECDSA、Ed25519での違いをまとめる。
TLS接続
- 【openssl】SNIやTLSバージョンを指定してサーバーに接続する (s_client) SNIやTLSバージョンを指定してサーバーに接続する。暗号スイートやALPN、STARTTLSも扱う。
- 【openssl】検証用のTLSサーバーを起動する (s_server) 検証用のTLSサーバーを手元で起動する。クライアント証明書の要求や、バージョンの制限も確認できる。
その他
- 【openssl】使える暗号の一覧や処理速度を確認する (ciphers/speed)
使える暗号スイートやアルゴリズムの一覧、処理速度の計測方法をまとめる。
primeやerrstrにも触れる。
\第一線のプログラマーの行動原理を学べる!/
