OpenSSL req
証明書署名要求の作成
OpenSSLのreq
PKCS #10 形式?
個人、または組織の情報を用意する CN以外は省略できる場合もある
C Country Name 国 JP
ST State or Province Name (full name) 州/都道府県 Tokyo
L Locality Name (eg, city) 市区町村 Suginami-Ku
STREET
O Organization Name (eg, company) 組織名 Siisise Net
OU Organizational Unit Name (eg, section) 部署名
CN Common Name (e.g. server FQDN or YOUR name) コモンネーム 名前 Siisise root CA または サーバの場合は FQDN siisise.net
emailAddress メールアドレス
オプション
-new 新規証明書署名要求の作成
-key 秘密鍵.key
-passin 鍵パスフレーズ
-out 証明書署名要求.csr 省略時は標準出力など
-subj CからCN,emailAddressの順に並べる CN以外省略可
-x509 自己署名証明書を生成する
-days 有効期限日数
-sha256 署名ハッシュが指定できる場合(RSA, ECDSAなど? EdDSAは不要?)
-newkey 鍵種 rsa ec ed25519 鍵も作成
-keyout 鍵出力.key
-passout pass:password 鍵パスワード
-pkeyopt ec_paramgen_curve prime256v1 ECDSA鍵パラメータ
既存鍵を使う場合
-key 秘密鍵 -passin pass:password
openssl req -new -key 秘密鍵.key -passin pass:鍵のパスワード -out 署名要求.csr -subj "/C=JP/ST=Tokyo/L=Shinagawa-ku/O=Siisise Net/CN=Siisise root CA"
鍵も生成する場合 (パスワード必須) -key と -passin を変える
-newkey rsa:鍵長 (2048 - ) -pass:password -keyout rsa.key
-newkey ec: -pkeyopt ec_paramgen_curve prime256v1 -passout pass:password -keyout ecdsa.key
prime256v1 (ANSI X9.62名)のみ? secp256r1 (SECG名)不可
-newkey ed25519 -passout pass:password -keyout eddsa.key
ed25519
ed448
openssl req -new -newkey ed25519 -keyout eddsa.key -passout -out 署名要求.csr -subj "/C=JP/CN=example.com"
鍵を使う場合
設定ファイルにまとめる場合
openssl req -new -key 秘密鍵.key -config 設定ファイル -out 署名要求.csr
req で指定できたかどうか
以下てきとう
設定ファイル
req でオプションの種類とタグっぽいのを指定する
タグっぽい中で詳細を記述する
古い物はCN, 新しいものは req_extensions の subjectAltName がサーバ名と照合されるっぽい
distinguished_name (-subj をファイルで書く場合) と req_extensions ぐらいがあればいいと思う
RFC 4514
code:config
req
utf8 = yes
distinguished_name = dn # subjっぽいところ
x509_extensions = ext # なくていい?
req_extensions = v3_req # V3拡張
dn
countryName = 国コード
countryName_default = JP
stateOrProvinceName = State or Privince Name (full name)
stateOrPrivinceName_default = Queensland
# どちらの書き方ができるのか不明
C = JP
ST = NekoTokyo
L = Suginami-ku
O = Siisise Net
OU = Root Server
CN = Root CA
emailAddress = ca@example.com
ext
keyUsage = いろいろ?
v3_req
basicConstraints = CA:FALSE # CA なら CA:TRUE
keyUsage = いろいろ # 鍵の使用目的
subjectAltName = @alt_names サーバ名の別名指定
alt_names
DNS.1 = server1.example.com
DNS.2 = mail.example.com
DNS.3 = *.example.com
email.1 = ca@example.com
code:CAの場合 (未検証)
v3_req
keyUsage = critical,keyCertSign,cRLSign
basicConstraints = critical,CA:TRUE,pathlen:1
code:サーバ証明書の場合 (未検証)
v3_req
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
basicConstraints = critical, CA:FALSE
code:クライアント証明書など
v3_req
keyUsage = なにか
basicConstraints = CA:FALSE