OpenSSL
鍵とか作れるコマンド、ライブラリ
新しい系のサブコマンド
PKCS #8 RFC 5958? 形式で 秘密鍵、公開鍵を別々に生成する。公開鍵生成用の情報は秘密鍵(ファイル)に含まれていることが多い。
openssl genrsa はRSAしか作れないのでそろそろやめよう
証明書署名要求とテスト用の自己署名系の証明書などを作ってみる
説明用拡張子例 (自由に決めていいが一般的にはTEXT形式が .pem , バイナリが.der など)
秘密鍵 .key
公開鍵 .pub (鍵のみ、名前、期限などが入っていない、署名されていないもの)
証明書 .crt
署名要求 .csr
鍵ペア PKCS #12 形式 .p12
ASN.1 DER形式、それのBASE64符号化したPEMのものが多い
鍵作成
OpenSSL genpkey
旧OpenSSL genrsa
$ openssl genrsa 2048 > rsa.key
openssl pkey 秘密鍵操作系
openssl pkey -in 秘密鍵 -out 出力
旧形式に変換 -traditional
公開鍵(鍵のみ)出力 -pubout 保存は-outも指定 自己署名など用
テキスト内容出力 -text
公開鍵テキスト内容出力 -text_pub
BASE64表示なし? -noout
openssl pkey -in private.key -text
旧? RSA
OpenSSL rsa
ECDSA
OpenSSL ec
EdDSA なし
PKCS #8
OpenSSL pkcs8
証明書署名要求の作成
OpenSSL req
署名 証明書作成
openssl x509 公開鍵証明書 操作系
CAの秘密鍵で公開鍵、ドメイン等(subj)を署名して証明書にする
CA等 自己署名用
openssl x509 -req
-in 署名要求.csr
-out 署名.crt
-signkey 署名用鍵.key
-passin pass:署名用鍵パスフレーズ
-days 有効期限(日数)
-sha256 RSA用? 他のでは外した
-extfile configのファイル
code:extfile CA用
basicConstraints = critical, CA:true
subjectKeyIdentifier = hash
keyUsage = critical, keyCertSign, cRLSign
cRLSign はCRLを使う場合
簡易署名用
-CAcreateserial シリアル番号生成 無い場合は乱数?
openssl x509 -req
-in 署名要求.csr
-out 署名.crt
-CAkey CA秘密鍵.key
-passin pass:秘密鍵パスフレーズ
-CA CA証明書.crt
-days 有効日数
-extfile 設定ファイル
-CAcreateserial
code:extfile サーバ用
authorityKeyIdentifier = critical, keyid, issuer
basicConstraints = critical, CA:FALSE
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = @alt_names
alt_names
DNS.1 = example.com
DNS.2 = *.example.com
example.com をサーバ名に
フル署名用
(略)
型変換
openssl x509 -in 署名.crt -inform PEM または DER -out 署名.der -outform DER または PEM
PKCS #12 に鍵と証明書をまとめる
openssl pkcs12 -passout pass:password -export -in 署名.crt -inkey 秘密鍵.key -out 鍵ペア.p12