#navi2(RaspberryPi/証明書,toc,prev,next) ---- #contents ---- * CA証明書作成 [#kc254dff] ** ルート認証局用 CA証明書作成 [#w8b53465] *** openssl.cnf ファイル修正 [#q7ba4a26] openssl.cnf ファイルに次の設定を追加します。 [ cert_rootca ] subjectKey ここでは、次の証明書を生成・管理するための基本環境を構築します。 -ルート認証局用 CA証明書 -中間認証局用 CA証明書 -サーバー証明書 -クライアント証明書 ※少し設定を変更すれば、他の証明書も生成可能です。 ** Open SSL のインストール [#lb845fe3] 次のコマンドを入力して Open SSL をインストールします。 apt install openssl ** 環境設定 [#c030a3fc] 証明書に関する各種ファイルやディレクトリを作成します。 どこに置いても良いですが、ここでは、 /var/lib/ssl に置くものとします。 +事前準備(証明書を置くディレクトリの作成) mkdir /var/lib/ssl cd /var/lib/ssl +環境設定 # 0. 基本ディレクトリ指定 TARGET_DIR=ca # # 1. 必要なディレクトリ作成 mkdir -p ${TARGET_DIR}/{certs,crl,newcerts,private} # # 2. 権限を設定 chmod 700 ${TARGET_DIR}/private # # 3. 証明書のインデックス管理用ファイルを作成 touch ${TARGET_DIR}/index.txt # # 4. 証明書のシリアル番号管理ファイルを作成 echo 01 > ${TARGET_DIR}/serial # # 5. 失効リスト番号管理ファイルを作成 echo 00 > ${TARGET_DIR}/crlnumber **openssl.cnf の用意 [#ba04a8bd] /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 : 当該項目の設定有無、一致不一致を問わない +署名用拡張設定 # ルート認証局 CA証明書用 [ cert_rootca ] 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 keyUsage = critical,digitalSignature,cRLSign,keyCertSign ---- ** 署名拡張用設定詳細 [#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 設定ファイルの詳細は、man v509v3_config を参照ください。 ---- #navi2(RaspberryPi/証明書,toc,prev,next)