#navi2(RaspberryPi/証明書,toc,prev,next)
----
#contents
----
* 簡易環境構築 [#i5224c03]
次のスクリプトを利用して、簡単に証明書生成環境を構築します。

https://ehobby.jp/data/public/ca.tar.gz

** ルート認証局 [#fe6b8bda]
*** 環境構築 [#ca7400b2]
以下、/var/lib/ssl/ca 配下に環境を構築するものとして記載します。
 mkdir /var/lib/ssl
 cd /var/lib/ssl
 wget https://ehobby.jp/data/public/ca.tar.gz
 tar zxvf ca.tar.gz
 mv ca rootca
 cd rootca
 ./cert-cainit.sh
 1, 認証局の証明書管理環境を初期化します。
    継続してよろしいですか? [y/n]                     <--y[Enter] 
 2. 秘密鍵を生成します。
    継続してよろしいですか? [y/n]                     <--y[Enter]
 Generating RSA private key, 2048 bit long modulus
 ..................+++
 .............................................+++
 e is 65537 (0x10001)
 Enter pass phrase for ..(省略)../privkey.pem:         <--秘密鍵のパスフレーズ
 Verifying - Enter pass phrase for ..(省略)../priv.pem:<--秘密鍵のパスフレーズ
 3.  CSR (証明書署名要求) を作成します。
     継続してよろしいですか? [y/n]  <-- y[Enter]
 Enter pass phrase for ..(省略)../privkey.pem:         <--秘密鍵のパスフレーズ
 ...(省略)...
 ■以下、ルート認証局の情報を入力します。
 ※多くのルート認証局では、都道府県名、市町村名は指定されていないようです。
 国名 (2文字コード) [JP]:                              <--国名(日本であればJP)
 都道府県名 []:[]                                      <--都道府県名([Enter]で指定なし)
 市町村名 []:[]                                        <--市町村名([Enter]で指定なし)
 組織名 [Ehotty]:[]                                    <--組織名
 部門名 []:[]                                          <--部門名([Enter]で指定なし)
 コモンネーム(名前, サーバーホスト名など) []:[]        <--例: XXX Root CA
 Eメールアドレス []:[]                                 <--Eメールアドレス([Enter]で指定なし)
 パスワード [8-20文字] (空でも良い) []:[]              <--オプションパスワード([Enter]で指定なし)
 オプション国名 (空でも良い) []:[]                     <--オプション国名([Enter]で指定なし)
 4. 自己署名します。
    継続してよろしいですか? [y/n]:[]                  <--y[Enter]
 Enter pass phrase for ..(省略)../privkey.pem:         <--秘密鍵のパスフレーズ
次のコマンドにて、CPSの情報や、CRL、OCSP のURL等の情報を設定します。
詳細は、コマンドのヘルプを参照ください。
 bin/cert-mkcnf.sh

***証明書への署名 [#sd80a749]
次のコマンドで指定された、CSRに署名します。
 bin/cert-sign.sh [CSRファイル]
サーバー証明書の場合は、--dns1 ドメイン名 の指定が必要です。
その他、オプションについては、 次のコマンドを確認ください。
 bin/cert-sign.sh --help
※署名した証明書は、newcerts 配下にも格納されます。

***証明書の失効 [#z45a8f4b]
署名した証明書を失効させる場合、次のコマンドで失効させます。
 bin/cert-revoke.sh [失効させる証明書]
※CRLファイルが、crl/latestcrl.crl に生成されるので、
適切な場所に配置して、Web経由で取得できるようにしてください。

※CRLファイルのみ生成したい場合は、次のコマンドで生成可能です。
 bin/cert-mkcrl.sh

** 中間認証局 [#a8023291]
基本的にルート認証局と同様ですが、自己署名ではなく、
ルート認証局に署名してもらいます。具体的には、
 4. 自己署名します。
    継続してよろしいですか? [y/n]:[]
にて n[Enter] を入力し、次の操作をします。
+bin/cert-mkcnf.sh にて中間認証局用の設定を実施する。
+ルート認証局に「request.csr」ファイルを渡す。
+【ルート認証局での操作】bin/cert-sign.sh --type ca 【受け取ったrequest.csrファイル】
+ルート認証局より、生成された【request_signed.pem, request_signed.crt】を受け取る。
+受け取ったファイルをそれぞれ、【cacert.pem, cacert.crt】にリネームして配置する。

以降、署名や失効管理はルート認証局と同様となります。
★ここで構築する中間認証局は、末端の認証局となり、CAに対する署名はできません。
CAに対する署名が必要な場合は、ルート認証局にて署名の際、openssl_ca.cnf ファイルの basicConstraints の pathlen: 0 を削除してから署名してください。

**サーバー証明書 [#j3f6f68e]
+次の手順で CSR を生成します。
 cd xxxxx                                      <--任意のディレクトリ
 wget https://ehobby.jp/data/public/ca.tar.gz
 tar zxvf ca.tar.gz
 mv ca server
 cd server
 mkdir private
 bin/cert-mkcsr.sh
 ..(省略)../privkey.pem を生成します。[y/n]    <--y[Enter]
 Enter pass phrase for ..(省略)../privkey.pem: <--秘密鍵のパスフレーズ
 Verifying - ..(省略)..                        <--秘密鍵のパスフレーズ
 秘密鍵(..(省略)..)を生成しました。
 Enter pass phrase for ..(省略)../privkey.pem: <--秘密鍵のパスフレーズ
 ..(省略)..
 ■以下、サーバー証明書の情報を入力します。
 コモンネームには、ドメイン名を指定してください。
 (ドメイン名が無い場合は、固定IPアドレスを指定してください。)
+認証局に、生成された 「request.csr」ファイルを渡す。
+【認証局での操作】bin/cert-sign.sh --type server --dns1 【ドメイン名】 【CSRファイル】
※ドメイン名が複数ある場合は、--dns2, --dns3 等を指定してください。
+認証局より、生成された【request_signed.pem, request_signed.crt】を受け取る。⇒これがサーバー証明書となります。

**クライアント証明書 [#ke63f594]
+次の手順で CSR を生成します。
 cd xxxxx                                      <--任意のディレクトリ
 wget https://ehobby.jp/data/public/ca.tar.gz
 tar zxvf ca.tar.gz
 mv ca server
 cd server
 mkdir private
 bin/cert-mkcsr.sh
 ..(省略)../privkey.pem を生成します。[y/n]    <--y[Enter]
 Enter pass phrase for ..(省略)../privkey.pem: <--秘密鍵のパスフレーズ
 Verifying - ..(省略)..                        <--秘密鍵のパスフレーズ
 秘密鍵(..(省略)..)を生成しました。
 Enter pass phrase for ..(省略)../privkey.pem: <--秘密鍵のパスフレーズ
 ..(省略)..
 ■以下、クライアント証明書の情報を入力します。
+認証局に、生成された 「request.csr」ファイルを渡す。
+【認証局での操作】bin/cert-sign.sh --type client【CSRファイル】
+認証局より、生成された【request_signed.pem, request_signed.crt】を受け取る。
+下記コマンドを実行して pkcs12 形式ファイルを生成する。
 bin/cert-mkpkcs12 request_signed.pem private/privkey.pem 【任意の名前】
→生成された output.p12 ファイルがクライアント認証で用いるファイルとなります。

** クライアント認証のためのサーバー設定(Apache) [#d21d5ca8]
クライアント証明書に署名した認証局が、中間認証局の場合、上位認証局の証明書を連結したファイルを作成します。
 cat rootca.pem ca.pem > chain.pem
Apacheの場合、以下の設定をします。
 SSLCACertificateFile /var/lib/ssl/ca/chain.pem       $ <- 認証局の証明書ファイル
 SSLCARevocationFile  /var/lib/ca/crl/latestcrl.crl   # <- CRLのファイルパス
 <Directory 【クライアント認証が必要なパス】>
   SSLRequreSSL
   SSLVerifyClient require
   SSLVerifyDepth  10
 </Directory>




 

**その他:各種証明書の確認 [#e1395a6b]
次のコマンドで、各種証明書の内容を確認できます。
 bin/cert-show.sh [証明書ファイル]


----
#navi2(RaspberryPi/証明書,toc,prev,next)
トップ   差分 バックアップ リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS