web-dev-qa-db-ja.com

opensslが自己署名証明書の有効期限の-daysを無視するのはなぜですか?

self-signed証明書を生成し、完全に正常に動作するbashスクリプトがあります。

#! /bin/bash

# Generate self signed root CA cert
openssl req -nodes -x509 -days 358000 -newkey rsa:2048 -keyout ca.key -out ca.crt -subj "/C=IR/ST=TEH/L=Torento/O=CTO/OU=root/CN=es.example.com/[email protected]"

# Generate server cert to be signed
openssl req -nodes -newkey rsa:2048 -days 358000 -keyout server.key -out server.csr -subj "/C=IR/ST=TEH/L=Torento/O=CTO/OU=server/CN=es.example.com/[email protected]"

# Sign the server cert
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

# Create server PEM file
cat server.key server.crt > server.pem


# Generate client cert to be signed
openssl req -nodes -newkey rsa:2048 -days 358000 -keyout client.key -out client.csr -subj "/C=IR/ST=TEH/L=Torento/O=CTO/OU=client/CN=es.example.com/[email protected]"

# Sign the client cert
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAserial ca.srl -out client.crt

# Create client PEM file
cat client.key client.crt > client.pem

生成されたclient.pemの有効期限を確認すると、8月10日の有効期限が表示されます。

$ openssl x509 -enddate -noout -in client.pem
notAfter=Aug 10 12:32:07 2018 GMT

有効期限の問題は何ですか?

7
ALH

有効性はopenssl x509ではなくopenssl reqで設定されます。 -daysオプションをx509コマンドで指定すると、機能します。

-daysのmanページで説明されているように、デフォルトの証明書の有効期限である30日間を上書きするx509オプションがないため、30/08になります。

-日引数
は、証明書を有効にする日数を指定します。デフォルトは30日です。

補足として、妥当なセキュリティが必要な場合、有効期限が358000日(980年)の証明書の生成は長すぎます。

12
oliv