次の設定(OpenSSL 1.0.1を使用して2012年3月14日)を使用して、独自の自己署名証明書を使用して小さなテストCAを作成しています。私が持っている問題は、CA自身の証明書の開始日を見ると、明日のためにそれが作成されます(そして、私は今日それを使いたいと思います)。OpenSSL自己署名付きルートCA証明書:開始日を設定する
> openssl x509 -noout -startdate -enddate -in ~/my_little_ca/cacert.pem
notBefore=Jan 2 16:05:52 2015 GMT
notAfter=Feb 1 16:05:52 2015 GMT
CAを使用して署名した証明書で同じ問題が発生したため、少し掘りました。これらの証明書では、--startdate
を使用して開始日を設定できますが、CAルート証明書には同様のオプションが表示されません。私はdefault_startdate
を使用して、CAを生成する際に使用されるopenssl設定ファイルで試してみましたが、それは何らかの理由で無視されるようですか?
次のようにCAを作成します。これは基本的に、Pravir Chandraらの「NetworkSecurity with OpenSSL」とほぼ同じです。
使用するコマンドはreq -x509 -newkey rsa:2048 -out cacert.pem -outform PEM -verbose
ですが、ルートCAの証明書と秘密鍵を生成する際にこの特定のケースでどのように開始日を設定するのですか?ありがとうございます。
CAを生成するための完全なスクリプトは以下の通りです:
MYDIR=$(pwd -P)
BASEDIR=~/enigma_ca
mkdir -pv $BASEDIR
cd $BASEDIR
mkdir -pv private
chmod g-rwx,o-rwx private
mkdir -pv certs
touch index.txt
echo '01' > serial
DEFAULT_STARTDATE=$(date +'%y%m01000000Z')
cat <<EOF >openssl.cnf
[ ca ]
default_ca = my_test_ca
[ my_test_ca ]
certificate = $BASEDIR/cacert.pem
database = $BASEDIR/index.txt
new_certs_dir = $BASEDIR/certs
private_key = $BASEDIR/private/cakey.pem
serial = $BASEDIR/serial
default_crl_days = 7
default_days = 356
default_md = md5
default_startdate = $DEFAULT_STARTDATE
policy = my_test_ca_policy
x509_extensions = certificate_extensions
[ my_test_ca_policy ]
commonName = supplied
stateOrProvinceName = supplied
countryName = supplied
emailAddress = supplied
organizationName = supplied
organizationalUnitName = optional
[ certificate_extensions ]
basicConstraints = CA:false
[ req ]
default_bits = 2048
default_keyfile = $BASEDIR/private/cakey.pem
default_md = md5
default_startdate = $DEFAULT_STARTDATE
default_days = 356
prompt = no
distinguished_name = root_ca_distinguished_name
x509_extensions = root_ca_extensions
[ root_ca_distinguished_name ]
commonName = My Mini CA
stateOrProvinceName = Hampshire
countryName = UK
emailAddress = [email protected]
organizationName = My Mini CA Ltd
[ root_ca_extensions ]
basicConstraints = CA:true
EOF
OPENSSL_CONF=$BASEDIR/openssl.cnf
export OPENSSL_CONF
# Now generate self-signed certificate and generate key pair to go with it...
expect - <<EOF >> $MYDIR/ca_debug.txt
puts [concat "OPENSSL_CONF =" \$::env(OPENSSL_CONF)]
spawn openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM -verbose
expect "PEM pass phrase:"
send "junk\r"
expect "PEM pass phrase:"
send "junk\r"
expect eof
EOF
だけ通知を作成します。 "default_md = md5"はセキュリティの問題です。 sha256は良いでしょう。 – Dzenly