opensslを素で使う


はじめに

色々とスクリプトがあるけど、あえて使わないでいろいろやってみる。

RSA鍵作成

openssl genrsa -out <出力ファイル名> 2048

2048はビット長。4096とかでもできる。
これだとパスフレーズはつかないので注意。
CA局用などでパスフレーズをつけるときは -aes256を追加する。

CSR作成

openssl req -new -key <鍵ファイル名> -out <出力ファイル名> -sha256

-sha256はデフォルトになっているので、なくてもいいはずだけど一応
これでCNとか色々入力する。
サーバ証明書に使う場合はCNをホスト名にする必要がある。

普通に使う証明書を発行するときは、ここで作ったCSRをアップロードして署名してもらったりする。

署名

openssl x509 -req -in <CSRファイル名> -out <出力ファイル名> -CA <CA証明書ファイル名> -CAkey <CA鍵ファイル名> -set_serial <シリアル番号> -days <有効期間>

CA鍵ファイルにパスフレーズが必要な場合、入力が求められる。
今は有効期間1年以内にしないとブラウザでエラーになるかもしれない。
また、この方法ではchromeでエラーになる。これはsubjectAltNameが無いため。
subjectAltNameはテキストファイルに書いて extfileで指定する。

ファイルの内容はこんな感じ

subjectAltName = DNS:<ホスト名>

ワイルドカード証明書もこれで * を指定すると作れる。

pkcs12

openssl pkcs12 -export -in <証明書ファイル名> -inkey <鍵ファイル名> -certfile <CA局証明書ファイル名> -out <出力ファイル名>

実行するとパスワードを2回入力して設定することになる。
クライアント証明書とかはこれにしておくとよい。(Windowsで使うときは拡張子pfxにする)

CA局証明書

いわゆるオレオレ証明局。
CSR作る時に署名まで済ませるような形になる。

openssl req -new -x509 -days 3650 -key <鍵ファイル名> -sha256 -out <出力ファイル名>

ここで使った鍵と、これでできた証明書を署名の -CA, -CAkeyで指定するとオレオレ証明書が作れる。