X 509証明書検証研究(1)——環境構築

18861 ワード

SSL serverとSSL clientを作ることによって、GDB追跡コードの分析プロセスを行います。
環境構築:root-caとsub-caを創立して、sub-caはserver証明書とclient証明書を発行します。
環境ディレクトリとファイルは以下の通りです。関連するファイルだけがリストされています。自動的に作成された未リストがあります。

    
    
    
    
demoCA
cacerts // CACA
root-ca.crt // root-ca
sub-ca.crt // sub-ca
certs //
client.crt //
server.crt //
private //
client.key
server.key
root-ca.key
sub-ca.key
root-ca // root-ca
certs // root-ca
db // crlnumberindexserial
private // root-ca
root-ca.conf// root-ca
sub-ca // sub-ca
certs // sub-ca
db // crlnumberindexserial
private // sub-caserverclient
sub-ca.conf // sub-ca
root-ca.co.nfプロファイルは以下の通りです。
[default]
name=root-ca
domain_スフィクス=certusnet.com
aia_url=http://name.$domain_suffix/$name.crt
クレルurl=http://name.$domain_suffix/$name.crl
ocspurl=http://ocsp.$name.$domain_スフィクス:9080
default_ca=cadefault
name_opt=utf 8,esc_ctrl,multiiline,lname,align
[caudn]
countryName=「CN」
organization Name=「Centusnet」
common Name=「Root CA」
[caude fault]
ホーム=
database=$home/db/index
serial=$home/db/serial
crlnumber=$home/db/crlnumber
certifcate=$home/$name.crt
prvate_key=$home/prvate/$name.key
RANDILE=$home/prvate/random
new_certsdir=$home/certs
unique_subject=の
copy_extens=none
default_days=3650
default_クレルdays=365
default_md=shar 256
policy=policy_c_o_match
[policyuc_match]
countryName=match
stateOrProvince Name=optional
organizationName=match
organizational UnitName=optional
common Name=supplied
email Address=optional
[req]
default_ビッツ=4096
encryptkey=yes
default_md=shar 256
utf 8=yes
stringmark=utf 8 only
prompt=no
distinguished_name=ca_dn
req_.extens=ca_ext
[ca ext]
baicConstraints=critical、CA:true
keyUsage=critical,keyCerrtSign,cRLSign
subject KeyIdentifer=hash
[subcaucauext]
authority InfoAccess=@issuer_info
authorityKeyIdentifer=keyid:always
baicConstraints=critical、CA:true、pathlen:0
crl DistributionPoints=@crl_info
extededKeyUsage=clientAuth,serverAuth
keyUsage=critical,keyCerrtSign,cRLSign
name Constraints=@name_コンストラクション
subject KeyIdentifer=hash
[クルーグンfo]
URI.0=$crl_url
[issurynfo]
caIssuers;URI 2.0=$aia_url
OCS P;URI.0=$ocsp_url
[nameuconstrants]
permitted;DNS.0=certusnet.com
permitted;DNS.1=certusnet.org
excludedIP.0=0.0.0/0.0.0
excludedIP.1=0:0:0:0:0:0:0/0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
[ocspauext]
authorityKeyIdentifer=keyid:always
baicConstraints=critical、CA:false
extendKeyUsage=OCS PSigning
keyUsage=critical、digital Signature
subject KeyIdentifer=hash
sub-ca.com nfプロファイルは以下の通りである。
[default]
name=sub-ca
domain_スフィクス=certusnet.com
aia_url=http://name.$domain_suffix/$name.crt
クレルurl=http://name.$domain_suffix/$name.crl
ocspurl=http://ocsp.$name.$domain_スフィクス:9081
default_ca=cadefault
name_opt=utf 8,esc_ctrl,multiiline,lname,align
[caudn]
countryName=「CN」
organization Name=「Centusnet」
common Name=「Sub CA」
[caude fault]
ホーム=
database=$home/db/index
serial=$home/db/serial
crlnumber=$home/db/crlnumber
certifcate=$home/$name.crt
prvate_key=$home/prvate/$name.key
RANDILE=$home/prvate/random
new_certsdir=$home/certs
unique_subject=の
copy_extens=none
default_days=365
default_クレルdays=30
default_md=shar 256
policy=policy_c_o_match
copy_extens=copy
[policyuc_match]
countryName=match
stateOrProvince Name=optional
organizationName=match
organizational UnitName=optional
common Name=supplied
email Address=optional
[req]
default_ビッツ=4096
encryptkey=yes
default_md=shar 256
utf 8=yes
stringmark=utf 8 only
prompt=no
distinguished_name=ca_dn
req_.extens=ca_ext
[ca ext]
baicConstraints=critical、CA:true
keyUsage=critical,keyCerrtSign,cRLSign
subject KeyIdentifer=hash
[subcaucauext]
authority InfoAccess=@issuer_info
authorityKeyIdentifer=keyid:always
baicConstraints=critical、CA:true、pathlen:0
crl DistributionPoints=@crl_info
extededKeyUsage=clientAuth,serverAuth
keyUsage=critical,keyCerrtSign,cRLSign
name Constraints=@name_コンストラクション
subject KeyIdentifer=hash
[クルーグンfo]
URI.0=$crl_url
[issurynfo]
caIssuers;URI 2.0=$aia_url
OCS P;URI.0=$ocsp_url
[nameuconstrants]
permitted;DNS.0=certusnet.com
permitted;DNS.1=certusnet.org
excludedIP.0=0.0.0/0.0.0
excludedIP.1=0:0:0:0:0:0:0/0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
[ocspauext]
authorityKeyIdentifer=keyid:always
baicConstraints=critical、CA:false
extendKeyUsage=OCS PSigning
keyUsage=critical、digital Signature
subject KeyIdentifer=hash
[server ext]
authority InfoAccess=@issuer_info
authorityKeyIdentifer=keyid:always
baicConstraints=critical、CA:false
crl DistributionPoints=@crl_info
extededKeyUsage=clientAuth,serverAuth
keyUsage=critical,digital Signature,keyEnicipherment
subject KeyIdentifer=hash
[client uext]
authority InfoAccess=@issuer_info
authorityKeyIdentifer=keyid:always
baicConstraints=critical、CA:false
crl DistributionPoints=@crl_info
extededKeyUsage=clientAuth
keyUsage=critical、digital Signature
subject KeyIdentifer=hash
    
対応するディレクトリが作成されたら、各証明書の作成を開始します。
root-caを作成します。root-ca.com nfプロファイルを使ってroot-caを作成します。root-caディレクトリでの操作手順は以下の通りです。
touch db/index
openssl rand-hex 16>serial
echo 1001>db/crlnumber
openssl req-new-config root-ca.com-out root-ca.csr-keyout prvate/root-ca.key
openssl ca-selfsign-config root-ca.cs-out root-ca.crt-extensions caext
sub-caを作成します。sub-ca.com nfプロファイルを使ってsub-caを作成します。sub-caディレクトリでの操作手順は以下の通りです。
touch db/index
openssl rand-hex 16>serial
echo 1001>db/crlnumber
openssl req-new-config sub-ca.com-out sub-ca.csr-keyout prvate/sub-ca.key
root-caに戻ってsub-caの証明書を発行してください。
openssl ca-config root-ca.co.nf-in./sub-ca/sub-ca.cs-out sub-ca.rt-extensions sub_caext
生成したsub-ca.crtをsub-caディレクトリにコピーします。 
serverとclientの証明書を作成します。
先生は二つの証明書要求ファイルになりました。
openssl req-newkey rsa:1024-out server.csr-keyout server.key
openssl req-newkey rsa:1024-out client.csr-keyout client.key
sub-caを使って二つの証明書を発行します。
openssl ca-config sub-ca.co nf-in server.csr-out server.crt-extens server.uext
openssl ca-config sub-ca.co nf-in client.csr-out client.rt-extensions client_ext
生成が完了したら、対応するファイルを対応するディレクトリにコピーします。
スタートserver端:
./openssl s_server-cert/home/demoCA/certs/server.crt-key/home/demoCA/prvate/server.key-CApath/home/demoCA/cacerts//cacel 3
GDB起動client端:
gdb--args./openssl s_client-ssl 3-CApath/home/demoCA/certs/
中間命令参考:openssl-cookbook.pdf/opensslプログラミング紹介.pdf