OpenSSLの自己CAおよびCAチェーン、ホストに(CAコマンドを使用して)バッチ証明書を発行しました

学習でのOpenSSLでの処理が多いので、バッチ処理の自動化よりも、この多くの書いた、CA、その後、ユーザーに、このCAが発行する証明書は、このプロセスは常に繰り返され、安っぽいを確立する必要があります。

Openssl.exeは、フォルダに追加、この実験のOpenSSLのバージョン番号を(あなたがファイルを生成する過程で発生する可能性があることを理由アクセス許可の問題のため、Cドライブにインストールするにはお勧めできません)PATH環境変数は、バッチを実行するための任意の位置にあることができますWindowsのバージョン1.1.1c 2019年5月28日。

あなたが顧客に発行したCAのID証明書を使用することができる2つのコマンドがあります:CA X509コマンドとコマンドは、二つの文書に分割されますし、導入、各コマンドのために二つの部分に発行したCAのルート証明書発行および証明書チェーンに細分、両方あなたは、またはそれがバッチとして保存することができます(コードのキャリッジリターンラインを持って最初に最終のカウントダウン)を実行するために、Windowsのコマンドラインウィンドウにそれをコピーして貼り付けることができ、コードの実装与えられました。

バッチはH、ルートディレクトリD RCA、CA1、CA2、CA3、ホスト1で作成される、という注意OST2は、これらのディレクトリは、クリーンな実験環境を確保するために、各バッチの実装では、それらを削除してから再構築されます、ので、これらのディレクトリ内の重要な情報を保持しません。覚えておいてください!

コマンドによって発行されたCA証明書

実験シーン:最初のルート確立するホスト証明書HOST1とHOST2は、ルートCAによって再発行され、CAを

実験の準備:証明書は、構成ファイルを使用しますcaコマンドによって署名された、デフォルトではC:\ Program Files \ Commonファイル\ SSL \ openssl.cnfを(OPENSSL_CONFは、環境変数で指定することができる)、ファイルには、三つの「セクション」を持っている(セクション、コードはコメントです#に続いて、これらの値に基づいて設計されていますので、あなたは、この異なる値を変更した場合、中央括弧描写)は、設定ファイルに記入する必要はありません、特別な注意が必要です。

【のCA_default]

            DIR    = ./demoCA     トップレベルのディレクトリ、それが始まる保存

            データベース  = $ DIR / index.txtの    インデックス付きのデータベースファイルの名前と場所のディレクトリ

            new_certs_dir = $ DIR / newcerts     格納ディレクトリ新しい証明書

            ertificate  = $ DIR / cacert.pemの     #CAの証明書ファイルの名前と場所のディレクトリ

            PRIVATE_KEY  = $ DIR /プライベート/ cakey.pemファイル    #のCA 秘密鍵のファイル名とディレクトリ

            シリアル   = $ DIR /シリアル    #が発行された証明書のシリアル番号(16 ディレクトリ

            [policy_match]

            COUNTRYNAME   =オプション    

            stateOrProvinceName =オプション    

            organizationNameの  =オプション    組織名

            organizationalUnitName =オプション     OrganizationalUnitName

            commonNameの   =供給    #FQDNを

            EMAILADDRESS   =オプション    メール

            [V3_c]

   basicConstraintsの=クリティカル、CA:真

作成するために、以上の準備が整った後、CAをし、他のユーザーに署名を与え、Dのルートディレクトリの下に3つのディレクトリを作成するバッチ:CAのディレクトリ構造があるRCA、HOST1とHOST2は、次の通り:

无标题.png

このcacert.pemは、証明書の歴史が署名されていて、取り消されていた記録、データベースindex.txtの、CAのルート証明書であり、シリアルは、証明書の下でのファイルのシリアル番号は(この場合は初期シーケンス番号は01に設定されている)を用意し、シリアル番号の署名が1つ増えることになる後に毎回、cakey.pemファイルの新しいCA証明書の秘密鍵を、民間の出力にバックアップを残すには、メインのファイル名はシリアル番号です。

また、R CAのルートディレクトリの下にもCA証明書、秘密鍵、公開鍵、およびユーザーに発行されたすべての証明書をバックアップとして。

証明書HOST1 / HOST2、プライベート、パブリック、要求文書と同様に、CAのルート証明書とCAの公開鍵:HOST1 / HOST2ディレクトリは6つの文書を保存しています。

ルートCA証明書を直接発行しました

根CA:RCA

echo 删除之前所有的文件
d:&cd\&rd/s/q host1&rd/s/q host2&rd/s/q rca&md host1&md host2&md rca&cd rca&md democa&md democa\newcerts&md democa\private

echo 生成自签名的根证书,私钥和公钥:
openssl req -x509 -newkey rsa:8192 -keyout rca.key -out rca.cer -days 3650 -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=T-CA/CN=RCA/[email protected] -passout pass:abcd
openssl rsa -in rca.key -pubout -out rca.pub -passin pass:abcd

echo 把RCA的证书和公钥拷贝到HOST1和HOST2
copy rca.cer d:\host1&copy rca.pub d:\host1&copy rca.cer d:\host2&copy rca.pub d:\host2
echo 把rca的证书和私钥拷贝到配置文件要求的目录,并建立数据库文件和序列号文件,以便给用户签发证书
copy rca.cer democa\cacert.pem&copy rca.key democa\private\cakey.pem&cd.>democa\index.txt&echo 01>democa\serial

echo 生成HOST1与HOST2的证书请求和私钥
openssl req -newkey rsa:8192 -keyout host1.key -out host1.csr -subj /C=CN/ST=guangdong/L=shenzhen/O=SUN/OU=SUN-A/CN=host1 -passout pass:abcd
openssl req -newkey rsa:8192 -keyout host2.key -out host2.csr -subj /C=CN/O=Tiger/ST=jiangsu/CN=host2 -passout pass:abcd

echo 用RCA的私钥签署用户请求
openssl ca -batch -notext -in host1.csr -out host1.cer -passin pass:abcd
openssl ca -batch -notext -in host2.csr -out host2.cer -passin pass:abcd
openssl rsa -in host1.key -pubout -out host1.pub -passin pass:abcd
openssl rsa -in host2.key -pubout -out host2.pub -passin pass:abcd
copy host1.* d:\host1&copy host2.* d:\host2

echo 验证证书链
openssl verify -CAfile rca.cer host1.cer
openssl verify -CAfile rca.cer host2.cer

二级CA签发证书

根CA:CA1

中间CA:CA2

CA2签发主机HOST1和HOST2的证书。

批处理在D盘根目录下建立目录CA1、CA2、HOST1、HOST2,各目录存放的文件顾名思义,其中CA2保留所签发的所有证书的备份。

echo 删除之前所有的文件
d:&cd\&rd/s/q host1&rd/s/q host2&rd/s/q ca1&rd/s/q ca2&md host1&md host2&md ca1&md ca2&cd ca1&md democa&md democa\newcerts&md democa\private&cd\ca2&md democa&md democa\newcerts&md democa\private&cd\ca1

echo 生成自签名的CA1根证书,私钥和公钥:
openssl req -x509 -newkey rsa:8192 -keyout ca1.key -out ca1.cer -days 3650 -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=T-CA/CN=CA1/[email protected] -passout pass:abcd
openssl rsa -in ca1.key -pubout -out ca1.pub -passin pass:abcd

echo 把CA1的证书和公钥拷贝到HOST1和HOST2
copy ca1.cer d:\host1&copy ca1.pub d:\host1&copy ca1.cer d:\host2&copy ca1.pub d:\host2

echo 把CA1的证书和私钥拷贝到配置文件指定的目录,并建立数据库文件和序列号文件,以便给CA2签发证书
copy ca1.cer democa\cacert.pem&copy ca1.key democa\private\cakey.pem&cd.>democa\index.txt&echo 01>democa\serial

echo 生成CA2的请求,私钥和公钥
openssl req -newkey rsa:8192 -keyout ca2.key -out ca2.csr -days 3650 -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=T-CA/CN=CA2/[email protected] -passout pass:abcd
openssl rsa -in ca2.key -pubout -out ca2.pub -passin pass:abcd

echo 用CA1的私钥签署CA2的请求
openssl ca -extensions v3_ca -batch -notext -in ca2.csr -out ca2.cer -passin pass:abcd

echo把CA2的证书和公钥拷贝到HOST1和HOST2
copy ca2.cer d:\host1&copy ca2.pub d:\host1&copy ca2.cer d:\host2&copy ca2.pub d:\host2

echo 把属于CA2的所有文件拷贝到CA2目录,同时把CA2的证书和私钥拷贝到配置文件指出的目录,以便用CA2的私钥给用户签发证书
copy ca2.* \ca2&copy ca2.cer \ca2\democa\cacert.pem&copy ca2.key \ca2\democa\private\cakey.pem&cd\ca2&cd.>democa\index.txt&echo 01>democa\serial&copy \ca1\ca1.cer&copy \ca1\ca1.pub

echo 生成HOST1与HOST2的证书请求和私钥
openssl req -newkey rsa:8192 -keyout host1.key -out host1.csr -subj /C=CN/ST=guangdong/L=shenzhen/O=SUN/OU=SUN-A/CN=host1 -passout pass:abcd
openssl req -newkey rsa:8192 -keyout host2.key -out host2.csr -subj /C=CN/O=Tiger/ST=jiangsu/CN=host2 -passout pass:abcd

echo 用CA2的私钥签发用户证书:
openssl ca -batch -notext -in host1.csr -out host1.cer -passin pass:abcd
openssl ca -batch -notext -in host2.csr -out host2.cer -passin pass:abcd
openssl rsa -in host1.key -pubout -out host1.pub -passin pass:abcd
openssl rsa -in host2.key -pubout -out host2.pub -passin pass:abcd

echo 把HOST1和HOST2的所有文件拷贝到对应目录
copy host1.* d:\host1&copy host2.* d:\host2

echo 验证证书链
copy ca2.cer+ca1.cer ca-chain.cer
openssl verify -CAfile ca-chain.cer host1.cer
openssl verify -CAfile ca-chain.cer host2.cer

三级CA签发证书

根CA:CA1

中间CA:CA2和CA3

CA3给HOST1和HOST2签发证书。

批处理在D盘根目录下建立目录CA1、CA2、CA3、HOST1、HOST2,各目录存放的文件顾名思义,其中CA3保留所签发的所有证书的备份。

echo 删除之前所有的文件
d:&cd\&rd/s/q host1&rd/s/q host2&rd/s/q ca1&rd/s/q ca2&rd/s/q ca3&md host1&md host2&md ca1&md ca2&md ca3&cd ca1&md democa&md democa\newcerts&md democa\private&cd\ca2&md democa&md democa\newcerts&md democa\private&cd \ca3&md democa&md democa\newcerts&md democa\private&cd\ca1
 
echo 生成自签名的CA1根证书,私钥和公钥:
openssl req -x509 -newkey rsa:8192 -keyout ca1.key -out ca1.cer -days 3650 -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=T-CA/CN=CA1/[email protected] -passout pass:abcd
openssl rsa -in ca1.key -pubout -out ca1.pub -passin pass:abcd
 
echo 把CA1的证书和公钥拷贝到HOST1和HOST2
copy ca1.cer d:\host1&copy ca1.pub d:\host1&copy ca1.cer d:\host2&copy ca1.pub d:\host2
 
echo 把CA1的证书和私钥拷贝到配置文件指出的目录,并建立数据库文件和序列号文件,以便给CA2签发证书
copy ca1.cer democa\cacert.pem&copy ca1.key democa\private\cakey.pem&cd.>democa\index.txt&echo 01>democa\serial
 
echo 生成CA2的请求,私钥和公钥
openssl req -newkey rsa:8192 -keyout ca2.key -out ca2.csr -days 3650 -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=T-CA/CN=CA2/[email protected] -passout pass:abcd
openssl rsa -in ca2.key -pubout -out ca2.pub -passin pass:abcd
 
echo 用CA1的私钥签署CA2的请求
openssl ca -extensions v3_ca -batch -notext -in ca2.csr -out ca2.cer -passin pass:abcd
 
echo 把CA2的证书和公钥拷贝到HOST1和HOST2
copy ca2.cer d:\host1&copy ca2.pub d:\host1&copy ca2.cer d:\host2&copy ca2.pub d:\host2
 
echo 把属于CA2的所有文件拷贝到CA2目录,同时把CA2的证书和私钥拷贝到配置文件指出的目录,以便用CA2的私钥给CA3签发证书
copy ca2.* \ca2&copy ca2.cer \ca2\democa\cacert.pem&copy ca2.key \ca2\democa\private\cakey.pem&cd\ca2&cd.>democa\index.txt&echo 01>democa\serial&copy \ca1\ca1.cer&copy \ca1\ca1.pub
 
echo 生成CA3的请求,私钥和公钥
openssl req -newkey rsa:8192 -keyout ca3.key -out ca3.csr -days 3650 -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=T-CA/CN=CA3/[email protected] -passout pass:abcd
openssl rsa -in ca3.key -pubout -out ca3.pub -passin pass:abcd
 
echo 用CA2的私钥签署CA3的请求
openssl ca -extensions v3_ca -batch -notext -in ca3.csr -out ca3.cer -passin pass:abcd
 
echo 把CA3的证书和公钥拷贝到HOST1和HOST2
copy ca3.cer d:\host1&copy ca3.pub d:\host1&copy ca3.cer d:\host2&copy ca3.pub d:\host2
 
echo 用把属于CA3的所有文件拷贝到CA3,同时把CA3的证书和私钥拷贝到配置文件指出的目录,以便用CA3的私钥给用户签发证书
copy ca3.* \ca3&copy ca3.cer \ca3\democa\cacert.pem&copy ca3.key \ca3\democa\private\cakey.pem&cd\ca3&cd.>democa\index.txt&echo 01>democa\serial&copy ca3.cer \ca1&copy ca3.pub \ca1&copy \ca1\ca1.cer&copy \ca1\ca1.pub&copy \ca2\ca2.cer&copy \ca2\ca2.pub
 
echo 生成HOST1与HOST2的证书请求和私钥
openssl req -newkey rsa:8192 -keyout host1.key -out host1.csr -subj /C=CN/ST=guangdong/L=shenzhen/O=SUN/OU=SUN-A/CN=host1 -passout pass:abcd
openssl req -newkey rsa:8192 -keyout host2.key -out host2.csr -subj /C=CN/O=Tiger/ST=jiangsu/CN=host2 -passout pass:abcd
 
echo 用CA3的私钥签署用户的请求
openssl ca  -batch -notext -in host1.csr -out host1.cer -passin pass:abcd
openssl ca  -batch -notext -in host2.csr -out host2.cer -passin pass:abcd
openssl rsa -in host1.key -pubout -out host1.pub -passin pass:abcd
openssl rsa -in host2.key -pubout -out host2.pub -passin pass:abcd
copy host1.* d:\host1&copy host2.* d:\host2
 
echo 验证证书链:
copy ca3.cer+ca2.cer+ca1.cer ca-chain.cer
openssl verify -CAfile ca-chain.cer host1.cer
openssl verify -CAfile ca-chain.cer host2.cer





おすすめ

転載: blog.51cto.com/9843231/2456904