はじめに
SSL証明書を手にいれる過程でCSRを作成する必要があります。
通常はopensslで作成されることが多いですが、その際のコマンドを備忘録として残します。
前提
OpenSSL version: 3.3.1 4 Jun 2024
2種類の方法
opensslを利用してCSRを生成する手順は2通りあります。
- 秘密鍵の生成とCSRの生成を1度に行う (一括生成)
- 秘密鍵の生成とCSRの作成を分けて行う (段階生成)
前者は手順が簡略化され、後者はより柔軟な設定が可能とのことです。
当記事では手順1を紹介します。
一括生成
秘密鍵, CSRを生成 ※ 公開鍵はCSRの中に含まれています。
$ openssl req -newkey rsa:2048 -nodes -keyout <file名>.key -out <file名>.csr
req: X.509証明書署名要求(CSR)を行うための引数
-newKey: 新しい秘密鍵とCSRを生成する
-nodes: 秘密鍵を暗号化しない設定 ※ これによりサーバーを起動する際にパスフレーズを手動で入力する手間がなくなる
-keyout: 秘密鍵のファイル名
-out: CSRのファイル名
必要な作業はここまでで完了です
以下は知ってると便利なコマンドです
CSRの内容を確認
$ openssl req -text -noout -in <PATH_TO_CSR_FILE>
# Subjectの部分を確認する
$ penssl req -text -noout -in <PATH_TO_CSR_FILE> | grep Subject
秘密鍵が暗号化されていないか確認する
暗号化されていない場合、"RSA key ok"と表示されます
openssl rsa -in <PATH_TO_SECRET_KEY> -check -noout
秘密鍵とCSRの対称性を確認
CSRが任意の秘密鍵から生成されたものかを確認します
これには両者のModuleが同一かどうかで判断可能です
diff <(openssl rsa -noout -modulus -in "PATH_TO_SECRET" | openssl md5) <(openssl req -noout -modulus -in "PATH_TO_CSR" | openssl md5)