Ubuntuで自己署名証明書をテスト

2272 ワード

1.catestディレクトリを作成しopensslをコピーする.cnfファイルをこのディレクトリに編集し、certificateとprivate_を変更します.keyの名前
mkdir catest
cd catest
/catest$ cp /etc/ssl/openssl.cnf .
/catest$ vim openssl.cnf
...
[ CA_default ]
certificate     = $dir/root/ca.crt
private_key     = $dir/private/ca.key

2.Opensslによる.cnfの中のCA_default構成対応するディレクトリとファイルの作成
catest$ mkdir demoCA
catest$ cd demoCA
catest$ mkdir certs root newcerts private crl
catest$ touch index.txt serial
catest$ echo 01 >> serial
catest$ cd ..

3.ルート証明書の作成
catest$ openssl genrsa -out demoCA/private/ca.key 2048
catest$ openssl req -new -key demoCA/private/ca.key -out ca.csr
catest$ openssl x509 -req -days 3650 -in ca.csr -out demoCA/root/ca.crt -signkey demoCA/private/ca.key -extensions v3_ca
Signature ok

4.クライアント証明書の作成
catest$ openssl genrsa -out client.key 2048
catest$ openssl req -new -key client.key -out client.csr
catest$ openssl ca -in client.csr -out client.crt -config ./openssl.cnf 
catest$ openssl verify -CAfile ./demoCA/root/ca.crt  client.crt
client.crt: OK

5.二次エージェントの作成
subCAディレクトリを作成し、demoCAディレクトリ構造を参照して初期化します.
Opensslをコピーします.cnfはopenssl-sub.cnf編集内のパスdeomCAからsubCAへ
catest$ openssl genrsa -out ./subCA/private/ca.key 2048
catest$ openssl req -new -key ./subCA/private/ca.key -out subca.csr
catest$ openssl ca -in subca.csr -out ./subCA/root/ca.crt -config ./openssl.cnf 
catest$ openssl verify -CAfile ./demoCA/root/ca.crt ./subCA/root/ca.crt 
./subCA/root/ca.crt: OK

6.二級代理発行証明書
catest$ openssl genrsa -out subclient.key 2048
catest$ openssl req -new -key subclient.key -out subclient.csr
catest$ openssl ca -in subclient.csr -out subclient.crt -config ./subCA/openssl.cnf 
catest$ openssl verify -CAfile ./subCA/root/ca.crt subclient.crt
subclient.crt: C = cn, ST = sh, O = bt, OU = utest, CN = subca
error 2 at 1 depth lookup:unable to get issuer certificate

署名は成功しましたが、検証中にエラーが発生しました.これはsubcaの証明書チェーンが不完全であるためです.ルート証明書の内容をsubca証明書の最後にコピーして検証すればいいです.
catest$ cat ./demoCA/root/ca.crt >> ./subCA/root/ca.crt
catest$ openssl verify -CAfile ./subCA/root/ca.crt subclient.crt
subclient.crt: OK