#navi2(RaspberryPi,toc,prev,next) ---- #contents ---- * 証明書の生成 [#r3d7f862] ** 証明書の概要 [#e674d494] T.B.D. 概要部分は書きかけです。。。m(__)m *** サーバー証明書 [#pf714c99] +-----------------+ |ルート認証局(CA) | +-----------------+ ↓ルート認証局の秘密鍵を用いて署名 +-----------------+ |中間認証局(CA) | +-----------------+ ↓中間認証局の秘密鍵を用いて署名 +-----------------+ |サーバー証明書 | +-----------------+ Webサーバー Webブラウザ +---------------+ +---------------------------------+ |ルート証明書 | |ルート証明書 (信頼している証明書)| +---------------+ +---------------------------------+ |中間証明書 | +---------------+ |サーバー証明書 | +---------------+ +---------------+ |サーバー秘密鍵 | +---------------+ ** openssl のインストール [#xc54fef7] aptitude install openssl ** ルート証明書(CA)+秘密鍵作成 [#ufb91ec7] +openssl.conf ファイルをコピーする。 $ cd [任意のディレクトリ] $ mkdir RootCA $ mkdir RootCA/{certs,crl,newcerts,private} $ chmod 700 RootCA/private $ touch RootCA/index.txt $ cp /etc/ssl/openssl.conf ./openssl_rootca.cnf +openssl_rootca.conf の以下を修正 [ CA_default ] #*dir = ./demoCA # Where everything is kept dir = ./RootCA # Where everything is kept certs = $dir/certs # Where the issued certs are kept crl_dir = $dir/crl # Where the issued crl are keptir ~(省略)~ [ policy_match ] # 署名のポリシー (-policy policy_match にて指定) # match : CAと一致 # supplied : 記述が必須 # optiona : オプション ~(省略)~ [ usr_cert ] crlDistributionPoints = URI:<失効リストのURL> ~(省略)~ [ v3_ca ] ~(省略)~ # 署名時に -extensions v3_ca を指定することで、 # ここに記載の失効リストのURL情報が付与される。 crlDistributionPoints = URI:<失効リストのURL> ~(省略)~ # サブジェクト代替名の設定 subjectAltName=@alt_names [ alt_names ] # ドメイン名リストを追加していく。 DNS.1 = <ドメイン名(例:ehobby.jp)> DNS.2 = <ドメイン名(例:www.ehobby.jp や, *.ehobby.jp など)> +シリアル番号設定 (署名の際のシリアル番号となる) echo 01 > RootCA/serial +ルート認証局(CA) の証明書と秘密鍵生成 $ oepnssl req \ -new \ -x509 \ -sha256 \ -config ./openssl_rootca.cnf \ -out RootCA/cacert.pem \ -days <有効期間(日数)> \ -keyout RootCA/private/cakey.pem \ -subj "/C=JP/ST=<都道府県名>/O=<会社名>/OU=<部署名>/CN=<ドメイン名>" Enter PEM pass phrase: <任意のパスフレーズを入力> Verifying - Enter PEM pass phrase: <確認のため、再度パスフレーズを入力> 上記のコマンドにより、次のファイルが生成されます。 ※権限が異なる場合は、chmod で修正してください。 |cacert.pem |ルート認証局(CA)証明書 |権限:-rw-r--r-- (644)| |private/cakey.pem |ルート認証局(CA)の秘密鍵 |権限:-rw------- (600)| +証明書の確認 次のコマンドで証明書の内容を確認できます。 openssl x509 -text -noout -in RootCA/cacert.pem +pem 形式→der 形式変換 (ブラウザに取り込む場合などに利用) openssl x509 -inform pem -in RootCA/cacert.pem -outform der -out RootCA/cacert.der |DER |Distinguished Encoding Rules |ASN.1のエンコード方式の一つ X.509 | |PEM |Privacy Enhanced Mail |Base64にてエンコードした形式 | ** 中間証明書(CA)+秘密鍵作成 [#ufb91ec7] +openssl.conf ファイルをコピーする。 # cd [任意のディレクトリ] # mkdir IntermediateCA # mkdir IntermediateCA/{certs,crl,newcerts,private} # chmod 700 IntermediateCA/private # touch IntermediateCA/index.txt # cp /etc/ssl/openssl.conf ./openssl_intermediateca.cnf +openssl_intermediate.conf の以下を修正 [ CA_default ] #*dir = ./demoCA # Where everything is kept dir = ./IntermediateCA # Where everything is kept certs = $dir/certs # Where the issued certs are kept crl_dir = $dir/crl # Where the issued crl are keptir ~(省略)~ [ usr_cert ] crlDistributionPoints = URI:<失効リストのURL> +シリアル番号設定 (署名の際のシリアル番号となる) echo 01 > IntermediateCA/serial +ルート認証局(CA) の証明書と秘密鍵生成 $ oepnssl req \ -new \ -sha256 -config ./openssl_intermediateca.cnf \ -out IntermediateCA/cacert_req.pem \ -days <有効期間(日数)> \ -keyout IntermediateCA/private/cakey.pem \ -subj "/C=JP/ST=<都道府県名>/O=<会社名>/OU=<部署名>/CN=<ドメイン名>" Enter PEM pass phrase: <任意のパスフレーズを入力> Verifying - Enter PEM pass phrase: <確認のため、再度パスフレーズを入力> 上記のコマンドにより、次のファイルが生成されます。 |cacert_req.pem |中間認証局(CA)証明書の署名要求ファイル |権限:-rw-r--r-- | |private/cakey.pem |中間認証局(CA)の秘密鍵 |権限:-rw------- | +ルート認証局による署名 ++ルート認証局の cacert_req/ 配下に、cacert_req.pem を <ドメイン名>-cacert_req.pem ファイルとして配置する。 ++ルート認証局のにて以下を実施する。 openssl ca \ -config ./openssl_rootca.cnf \ -policy policy_match \ -extensions v3_ca \ -days <有効期間(日数)> \ -out cacert_req/<ドメイン名>-cacert.pem -infiles cacert_req/<ドメイン名>-cacert_req.pem ++署名の確認 openssl verify -purpose sslclient -CAfile RootCA/cacert.pem \ cacert_req/<ドメイン名>-cacert.pem +署名後のファイルを中間認証局の IntermediateCA 配下に置く。 ---- #navi2(RaspberryPi,toc,prev,next)