#navi2(RaspberryPi/証明書,toc,prev,next)
----
#contents
----
* 環境構築 [#h1d00a1e]

** Open SSL のインストール [#oe3d15af]
次のコマンドを入力して Open SSL をインストールします。
 apt install openssl

** 認証局の環境構築 [#hf55af9f]
認証局では、他の証明書の署名および失効リストの管理を実施する必要があります。
ここでは、管理のためのディレクトリを生成します。

どこに置いても良いですが、ここでは、 /var/lib/ssl/ca に置くものとします。
+必要なディレクトリ作成します。
 mkdir -p /var/lib/ssl/ca/{certs,crl,newcerts,private,conf}
+権限を設定します。
 chmod 700 /var/lib/ssl/ca/private
+証明書のインデックス管理用ファイルを作成します。
 touch /var/lib/ssl/ca/index.txt
+証明書のシリアル番号管理ファイルを作成します。
 echo 01 > /var/lib/ssl/ca/serial
+失効リスト番号管理ファイルを作成します。
 echo 00 > /var/lib/ssl/ca/crlnumber
 
** 認証局の openssl.cnf 作成 [#v319fb21]
+&ref(openssl.cnf); を /var/lib/ssl/ca/conf/ 配下にコピーし、適宜必要な設定を修正します。
※/etc/ssl/openssl.cnf をベースに修正しても構いません。




----
以下、修正中。
/etc/ssl/openssl.cnf ファイルを /var/lib/ssl/ 配下にコピーし、
次の点を修正します。
+出力先ディレクトリ変更
 [ CA_default ]
 
 # <変更>  出力先ディレクトリを変更
 #* dir          = ./demoCA              # Where everything is kept
 dir             = ca
+署名時のポリシー変更 (必要に応じて)
 # For the CA policy
 [ policy_match ]
 countryName             = match
 stateOrProvinceName     = optional  # <変更> match -> optional
 organizationName        = optional
 organizationalUnitName  = optional  # <変更> match -> optional
 commonName              = supplied
 emailAddress            = optional
 #
 # [備考]
 # match    : 当該項目がCAと同じであること
 # supplied : 当該項目が設定されていること
 # optional : 当該項目の設定有無、一致不一致を問わない
+署名用拡張設定
&color(red){''★<>の部分は適宜修正すること。''};
 # ルート認証局 CA証明書用
 [ cert_rootca ]
 subjectKeyIdentifier    = hash
 authorityKeyIdentifier  = keyid:always,issuer
 crlDistributionPoints   = URI:<CRLファイルがあるURL>
 basicConstraints        = critical,CA:TRUE
 keyUsage                = critical,digitalSignature,cRLSign,keyCertSign
  
 # 中間(末端)認証局 CA証明書用
 [ cert_ca ]
 subjectKeyIdentifier    = hash
 authorityKeyIdentifier  = keyid:always,issuer
 subjectAltName          = DNS.1:<ドメイン名>
 extendedKeyUsage        = serverAuth,clientAuth,emailProtection,codeSigning
 crlDistributionPoints   = URI:<CRLファイルがあるURL>
 authorityInfoAccess     = caIssuers;URI:<CA証明書があるURL>
 basicConstraints        = critical,CA:TRUE,pathlen: 0
 keyUsage                = critical,digitalSignature,cRLSign,keyCertSig
 
 
 # サーバー証明書用
 [ cert_server ]
 subjectKeyIdentifier    = hash
 authorityKeyIdentifier  = keyid,issuer
 subjectAltName          = DNS.1:<ドメイン名>
 extendedKeyUsage        = serverAuth, clientAuth
 basicConstraints        = CA:FALSE
 keyUsage                = digitalSignature,keyEncipherment
 
 
 # クライアント証明書用
 [ cert_client ]
 subjectKeyIdentifier    = hash
 authorityKeyIdentifier  = keyid,issuer
 subjectAltName          = DNS.1:<ドメイン名>
 extendedKeyUsage        = clientAuth
 basicConstraints        = CA:FALSE
 keyUsage                = digitalSignature,keyEncipherment
----
** 署名拡張用設定詳細 [#f8bfae07]
-subjectKeyIdentifier
サブジェクトキー識別子の指定。hash を指定すること。
(16進数文字列も指定可能ではあるが、非推奨となっている。)
-authorityKeyIdentifier
keyid, issuer を指定可能であり、どちらもオプションの値 always を取ることができる。
keyid が指定された場合、サブジェクトキー識別子を親証明書からコピーしようとする。
issuer は、発行者証明書から発行者とシリアル番号をコピーする。
always は、常にその値をコピーすることを強制する。
 例)
 keyid:always,issuer
 必ず親証明書のサブジェクトキー識別子をコピーし、
 可能であれば、発行者証明者から発行者とシリアル番号をコピーする。
-subjectAltName
代替名。次の指定が可能。
email, URI, DNS, RID, IP, dirName, otherName
カンマ区切りで複数指定することも可能。
 例)
 subjectAltName=email:sample@ehobby.jp,RID:1.2.3.4
DNS名などで複数指定する場合は、次のような方法で可能
 方法1)
 subjectAltName=@alt_names
 
 [ alt_names ]
 DNS.1 = ehobby.jp
 DNS.2 = *.ehobby.jp
 
 方法2)
 subjectAltName=DNS.1:ehobby.jp,DNS.2:*.ehobby.jp
-extendedKeyUsage
証明書公開鍵を使用できる目的を示す用法のリスト
次のような値を指定可能。
--serverAuth SSL/TLS Webサーバー認証
--clientAuth  SSL/TLS Webクライアント認証
--codeSigning コード署名
--emailProtection 電子メール保護(S/MIMEなど)
--timeStamping 信頼できるタイムスタンプ
--msSGC Microsoft Server Gated Crypto
--nsSGC Netscape Server Gated Crypto
--msSmartcardLogin Microsoft Smartcardlogin
-crlDistributionPoints
CRL配布ポイント
-authorityInfoAccess
CAに関連する特定の情報にアクセスする方法。
 例1) OSCPサーバー
 authorityInfoAccess = OSCP; URI:http://ehobby.jp/oscp/
 
 例2) 証明書情報
 authorityInfoAccess = caIssuers; URI:http://ehobby.jp/ca/rootca.crt
-basicConstraints
CA証明書か否かを表す。
CA証明書の場合は、critical,CA:TRUE の指定が必要。
 例1) ルート認証局の場合
 basicConstraints = critical,CA:TRUE
 
 例2) 末端認証局の場合 (認証局に対して署名不可)
 basicConstraints = critical,CA:TRUE,pathlen:0
 
 例3) サーバー証明書, クライアント証明書の場合
 basicConstraints = CA:FALSE
-keyUsage
鍵の用途。下記の指定が可能。
--digitalSignature 電子署名
--nonRepudiation   否認防止
--keyEncipherment  鍵暗号
--dataEncipherment データ暗号
--keyAgreement     鍵交換
--keyCertSign      電子証明書の検証
--cRLSign          CRLの署名検証
--encipherOnly     鍵交換時のデータ暗号用
--decipherOnly     鍵交換時のエータ複合用
※critical を付与すると、指定用途以外での使用を禁止する。


※その他、設定ファイルの詳細は、man v509v3_config を参照ください。

----
#navi2(RaspberryPi/証明書,toc,prev,next)
トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS