[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]

-[[戻る>暗号化]]

* 目次 [#k18e8d3f]
#contents

*概要 [#e023d9a6]
-「デジタル署名」の検証は、「送信側の公開鍵」を拠り所にしていると言えるが、提供される「送信側の公開鍵」の出所が、正規の出所か、検証できない(場合がある)という問題がある。
-このため、この問題を解決するための、「認証局」と呼ばれる、信頼のおける第三者が発行した「デジタル証明書」を使用して「送信側の公開鍵」が信頼できるものであるかを検証する機構がある。
-「デジタル証明書」は、このような方式により成り立っているので、その信頼性は「認証局」の信頼性に依存する。

**デジタル証明書 [#d1464251]
「デジタル証明書」は
-「公開鍵が誰の公開鍵であるか?」を証明しているもので、
-署名付きのメッセージと公開鍵を格納してある。
-従って、証明書 = 署名付き公開鍵と言っても良い。

***ファイル構造 [#jddb1297]
X.509という規格で決まっているため、X.509証明書とも呼ぶ。

詳しくは、

-PKI関連技術に関するコンテンツ~
http://www.ipa.go.jp/security/pki/033.html

***認証局の自己証明書、送信側の証明書 [#ja5c8e1b]
この「デジタル証明書」には以下のものがある。

-認証局の自己証明書
--[[cer形式の電子証明書>#qb0334b2]]
--認証局が自身で発行した証明書。
--通常、事前にクライアントPCの[[証明書ストア(リポジトリ)>#dccdb7e5]]に配布されている。

-送信側の証明書
--[[pfx形式の電子証明書>#sd119f77]]
--送信側が認証局にCSR(証明書発行要求:Certificate Signing Request)依頼によって発行してもらったもの。

***デジタル証明書に含まれる情報 [#ubbadfc4]
これらの「デジタル証明書」には、以下の情報が含まれる。

-(認証局がクライアントPCの[[証明書ストア(リポジトリ)>#dccdb7e5]]に事前配布している)「認証局の自己証明書」
--「認証局のメッセージ( + 認証局の公開鍵)」(公開鍵と、公開鍵の情報)
--「認証局によるデジタル署名」(本証明書のコンテンツを検証するための署名)

-(送信側のCSR依頼によって認証局が送信側に発行した)「送信側の証明書」
--「送信側の秘密鍵」(メッセージの署名に使用する)
--「送信側のメッセージ( + 送信側の公開鍵)」(公開鍵と、公開鍵の情報)
--「認証局によるデジタル署名」(本証明書のコンテンツを検証するための署名)

-証明書におけるメッセージとは、CSRに格納される、発行者や有効期限などの情報を指す。

***デジタル証明書の発行 [#c6a66502]
#ref(CertificateIssuance.png,left,nowrap,デジタル証明書の発行)

-送信側が認証局にCSRを依頼して発行して「送信側の証明書」を発行もらう。
-「認証局の自己証明書」は通常、事前にクライアントPCの[[証明書ストア(リポジトリ)>#dccdb7e5]]に配布されている。
-このため、送信側・受信側は、「認証局の自己証明書」中の「認証局の公開鍵」を使用して、「送信側の証明書」を検証できる。
-ここでは送信側は、「送信側の証明書」(に含まれる「送信側のメッセージ・公開鍵」)が「認証局」により、
--信頼できるものであるとされていることが確認でき、
--以降、受信側が、送信側のメッセージ・署名を(安全に)検証できる。

***デジタル証明書の利用 [#eea7c79b]
以下は、デジタル証明書を使用した送信側と受信側の通信。

#ref(UseOfCertificate.png,left,nowrap,デジタル証明書の利用)

-送信側
--受信側に「送信側の証明書」を送付する。
--「送信側の秘密鍵」を使用してメッセージに署名を付与する。
--「メッセージ+署名」を受信側に送付する。

-受信側~
送信側の公開鍵を使用して、「送信側のメッセージ+署名」を検証する。
--証明書の検証~
「認証局の公開鍵」を使用して「送信側の証明書」を検証する。
--メッセージの検証~
「送信側の公開鍵」を使用して、「送信側のメッセージ+署名」を検証する。

***秘密鍵付きの証明書の受け渡し [#cf97dd12]
他者(上記、上記の図の場合、受信側に該当する)に証明書を渡す場合は、秘密鍵は渡されない。~
秘密鍵付きの証明書の受け渡しは、[[pfxファイル>#sd119f77]]のエクスポート・インポートなどで行なう。

***ルートの認証局と中間の認証局 [#s03d489a]
なお、「認証局」が「ルートの認証局」と「中間の認証局」に分かれる場合は、次のようになる。

-「ルートの認証局の自己証明書」:~
「ルートの認証局のメッセージ(+ルート認証局の公開鍵)」、「ルートの認証局によるデジタル署名」

>>>↓ 証明書の発行 & ↑ 検証

-「中間の認証局の自己証明書」:~
「中間の認証局のメッセージ(+中間の認証局の公開鍵)」、「ルートの認証局によるデジタル署名」

>>>↓ 証明書の発行 & ↑ 検証

-「送信側の証明書」:~
「送信側のメッセージ(+送信側の公開鍵)」、「中間の認証局によるデジタル署名」

検証するとき、証明書チェーンを辿る等と表現するように、実際に、~
「送信側の証明書」から「ルートの認証局の自己証明書」の証明書を辿るような動きをする。

*証明書の種類 [#y547ccd7]
「デジタル証明書」の主要な利用例として、

**サーバー証明書 [#ife3996e]
ベリサイン製品で言う所の「ベリサインサーバID」
シマンテック製品で言う所の「シマンテック セキュア・サーバ ID」

***目的 [#he960173]
サーバーのユーザが、サーバーの提供者の正当性を検証できるよう、~
サーバーに「サーバー証明書」を埋め込む。

***用途 [#i259684a]
以下で利用されている。
-各種Webサービス
--HTTPS
--RDP
--,etc.

***SSL暗号化通信 [#g61fa2d8]
また、SSLは、「[[ハイブリッド・暗号化>暗号化アルゴリズム#z7306cb4]]」を使用しているが、~
このうちの「公開鍵・暗号化方式」で使用する鍵に「SSLサーバ証明書」に同梱されている秘密鍵・公開鍵を使用している。

-ITpro > selfup
--図解で学ぶネットワークの基礎:SSL編~
http://itpro.nikkeibp.co.jp/article/COLUMN/20071002/283518/
--Lesson4 : 相手が信頼できることを確かめる「サーバ証明書」とは?~
http://itpro.nikkeibp.co.jp/article/COLUMN/20071012/284426/

**クライアント証明書(メール証明) [#c42748a0]
ベリサイン製品で言う所の
シマンテック製品で言う所の
-「個人用電子証明書」
-「セキュアメールID」
-「シマンテック セキュアメール ID」

***目的 [#wccd2d31]
ユーザーが別のユーザーの正当性を検証できるよう、~
ユーザのメッセージに「クライアント証明書」を埋め込む。

***用途 [#i259684a]
以下で利用されている。
-電子メールメッセージ
-Webサービス(HTTPS)

**ソフトウェア証明書 [#oa4d84a6]
ベリサイン製品で言う所の「コードサイニング証明書」
シマンテック製品で言う所の「コードサイニング証明書」

***目的 [#xfcb1c46]
プログラム配布先のユーザが、プログラムの開発元の正当性を検証できるよう、~
開発したソフトウェアの実行モジュールに「コードサイニング証明書」を埋め込む。

***用途 [#u14e42c0]
-ActiveX
-ClickOnce
-デバイスドライバ
-EXE、DLL

**拡張子から判断(*.cer, *.pfx, etc.) [#z85c202d]

-[[*.pfxファイル>#sd119f77]] = [[*.cerファイル>#qb0334b2]] + 
-[[*.spcファイル>#sc7510c3]] = [[*.cerファイル>#qb0334b2]] + 
***証明書発行要求:Certificate Signing Request [#sb23ba23]
-*.csrファイルは証明書発行要求を格納したファイル。
-「—–BEGIN CERTIFICATE REQUEST—–」から始まり、「—–END CERTIFICATE REQUEST—–」で終わる。

***cer, cet形式の電子証明書 [#qb0334b2]
-"cer"はcertificateの意味で、主に自己証明書(ルート証明書)
-*.cerファイルはマイクロソフトが使っている拡張子の取り決めで、*.cetファイルと同じ。
-"cer"はcertificateの意味で、主に自己証明書(ルート証明書)のインポートで使用する。
-「—–BEGIN CERTIFICATE —–」から始まり、「—–END CERTIFICATE—–」で終わる。
-一般的な証明書は、この形式で証明書の所有者情報や公開鍵を含む。
-*.cerファイルは、[[pfxファイル>#sd119f77]]や[[spcファイル>#sc7510c3]]に含まれることもある。
-*.cerファイルは、[[*.pfxファイル>#sd119f77]]や[[*.spcファイル>#sc7510c3]]に含まれることもある。

***spc形式の電子証明書 [#sc7510c3]
-*.spcファイルはマイクロソフトが使っている拡張子の取り決めで、*.p7bファイルと同じ[[PKCS #7>#u87f1a66]]形式。~
-[[ソフトウェア発行元証明書>#oa4d84a6]]とも呼ばれ、署名を行う際に利用される。 

***pvk形式の秘密鍵 [#d6ec185e]
-*.pvkファイルはマイクロソフトが使っている拡張子の取り決めで、*.keyファイルと同じ形式。
-「—–BEGIN RSA PRIVATE KEY—–」から始まり、「—–END RSA PRIVATE KEY—–」で終わる。

***pfx形式の電子証明書 [#sd119f77]
-*.pfxファイルはマイクロソフトが使っている拡張子の取り決めで、*.p12ファイルと同じ[[PKCS #12>#s276aba4]]形式。~
http://d.hatena.ne.jp/lars_t/20100313/1268501773

-[[*.cerファイル>#qb0334b2]]や[[*.spcファイル>#sc7510c3]]をRC2方式で暗号化した[[*.pvkファイル>>#d6ec185e]]とパッケージしたもの。

-以下のケースで使用する。
--[[*.cerファイル>#qb0334b2]]と[[*.pvkファイル>#d6ec185e]]を1つの[[*.pfxファイル>#sd119f77]]にエクスポート・インポートする。
--[[*.spcファイル>#sc7510c3]]と[[*.pvkファイル>#d6ec185e]]を1つの[[*.pfxファイル>#sd119f77]]にまとめる。

-*.pfxファイルのエクスポート・インポートには、パスワードが必要。

-*.pfxファイルのエクスポート・インポートは、次の手順に従う。~
この一連の操作は、Windowsの証明書スナップインや、[[Pvk2Pfx.exe>#hfd93b71]]などで確認できる。 [#b671995d]
--秘密鍵付きの証明書をパスワードで暗号化して*.pfxファイルとしてエクスポートする。
--エクスポートした*.pfxファイルを渡す。
--*.pfxファイルをパスワードで復号化して秘密鍵付きの証明書をインポートする。

***Encoding (*.derと, *.pem) [#mde70013]
鍵の中身ではなく、エンコーディングを表している。

-DER
--鍵や証明書をASN.1というデータ構造の記述方法で表し、
--それをDERシリアライズしたバイナリファイル

-PEM
--鍵や証明書をASN.1というデータ構造の記述方法で表し、
--それをBase64シリアライズしたバイナリファイル
--ファイルの先頭に -- BEGIN... という行があればPEM。

*PKCS の種別 [#kf9dd196]
-PKI関連技術に関するコンテンツ > 3.3.7  PKCS~
http://www.ipa.go.jp/security/pki/033.html

PKI で利用する証明書や秘密鍵などのフォーマットを定めた標準として、~
PKCS (Public Key Cryptography Standard) が RSA Security 社によって策定。

**PKCS #7 [#u87f1a66]
-名称~
Cryptographic Message Syntax Standard

-説明
--RFC2315
--暗号データやデジタル署名のフォーマット
--証明書や CRL の配布、S/MIME にも利用

--X.509形式の証明書が複数パッケージされた形式
--中間証明書を含めて配布ができるのが大きな特徴

**PKCS #12 [#s276aba4]
-名称~
Personal Information Exchange Syntax Standard

-説明
--秘密鍵と証明書を交換するためのフォーマット
--秘密鍵はパスワードで保護される。

*証明書生成の方法 [#eaac5253]

**[[IIS]] [#w27bbd9d]
[[IIS]]を使用して「[[証明書チェーンがない自己署名証明書>#fa5e8e29]]」を生成できる。

**[[証明書サービス (AD CS)]] [#ied27823]
[[証明書サービス (AD CS)]]を使用して「[[証明書チェーンがある自己署名証明書>#w98fecbe]]」を生成できる。

**Makecert.exe, Pvk2Pfx.exe [#n992aec2]
Windows SDK (旧Platform SDK)に同梱されているツール。

***Makecert.exe [#c5487927]
-Makecert.exe (証明書作成ツール)
-デジタル署名用の公開キーと秘密キーのペアを作成し、証明書ファイルの中に格納する。

***Pvk2Pfx.exe [#hfd93b71]
[[*.cer>#qb0334b2]]、[[*.spc>#sc7510c3]]、[[*.pvk>#d6ec185e]] の各ファイルに格納されている公開キーと秘密キーの情報を[[*.pfx>#sd119f77]] ファイルにコピーするコマンド 

***Cert2spc.exe [#nbd9c302]
-Cert2spc.exe (ソフトウェア発行元証明書テスト ツール)
-[[X.509 証明書(CER)>#qb0334b2]]から[[ソフトウェア発行元証明書 (SPC)>#sc7510c3]] を作成する。
-テスト専用のツール。 有効な SPC は、VeriSign などの証明書発行機関から入手する。

*証明書ストア(リポジトリ) [#dccdb7e5]
アプリケーションによっては、OSのリポジトリ以外に専用のリポジトリを持っているものもある。

**ツール [#yfc8be23]
***Certmgr.exe [#pef56015]
-Certmgr.exe (証明書マネージャー ツール) 
-CUIツール

***Certmgr.msc [#e00087e3]
-Certmgr.msc (MMC 証明書スナップイン)
-GUIツール

**論理証明書ストア [#md1f67a7]
***個人 [#eb75312e]
-管理するユーザー、コンピューター、またはサービスに発行
-これらがアクセスできる秘密キーに関連付けられている証明書。

***信頼されたルート証明機関 [#v743a51d]
-暗黙的に信頼された[[認証局の自己証明書]]。
-[[GPO]]を使って信頼されたルート証明書を組織に配布できる。

***中間証明機関 [#z4fc9077]
-下位 認証局 に発行する[[認証局の自己証明書]]。
-[[GPO]]を使って中間証明機関を組織に配布できる。

***エンタープライズの信頼 [#n25d8178]
-証明書信頼リストのコンテナ
-他の組織の自己署名されたルート証明書を信頼する。
-証明書を信頼する目的を制限するための機構を提供します。?

***その他 [#ldacfc6a]
-信頼されたユーザー
-ほかの人
-信頼された発行元
-サード パーティ ルート証明機関
-証明書の登録要求
-信頼されていない証明書
-Active Directory ユーザー オブジェクト

**目的別ストア [#s24a3b0f]

***サーバー認証 [#tc21354d]
[[サーバー証明書>#ife3996e]]

***クライアント認証 [#eb2011bf]
[[クライアント証明書>#c42748a0]]

***コード署名 [#ua9cbd3d]
[[ソフトウェア証明書>#oa4d84a6]]

***セキュリティで保護された電子メール [#lb1f3448]
[[メール証明>#c42748a0]]

***暗号化ファイル システム [#r88b9ae3]
FS によってデータの暗号化および暗号化の解除に使用される対称キーを~
暗号化および暗号化解除するキーの組に関連付けられた証明書。

***ファイル回復 [#me837dd0]
EFS によって暗号化されたデータの回復に使用される対称キーを~
暗号化および暗号化解除するキーの組に関連付けられた証明書。

**表示 [#a4bb6fa6]
以下の手順で、目的別 or 論理ストア別に表示できる。

-証明書スナップイン(Certmgr.msc)を開く。
-コンソール ツリーで、[証明書 - 現在のユーザー] or [証明書 (ローカル コンピューター)] or [証明書 - サービス] をクリック。
-[表示] メニューの [オプション] をクリックし、

***論理証明書ストア別 [#ldf24eef]
-[表示モードの分類] の [論理証明書ストア] をクリックし、[OK] をクリック。
-[論理ストア名] という列見出しが、詳細ウィンドウに表示される。

***目的別 [#faf911e9]
-[表示モードの分類] の [証明書の目的] をクリックし、[OK] をクリック。
-[目的] という列見出しが、詳細ウィンドウに表示される。

*自己署名証明書 [#t094cf0c]
「SSL等のPKIにおいてクライアント側で検証できない(認証パスを辿れない)サーバ証明書。」

全般のことを言い、正規の認証局から取得していない証明書全般を指す。

-オレオレ証明書とは - はてなキーワード~
http://d.hatena.ne.jp/keyword/%A5%AA%A5%EC%A5%AA%A5%EC%BE%DA%CC%C0%BD%F1

自己署名証明書には以下の様な種類がある。

**証明書チェーンがない自己署名証明書 [#fa5e8e29]
このタイプの自己署名証明書は証明書チェーンが無いため、~
自身の秘密鍵をエクスポートして、クライアントにインポートさせる必要がある。

**証明書チェーンがある自己署名証明書 [#w98fecbe]
企業内で独自認証局を運用しており、~
独自認証局から発行した自己署名証明書は証明書チェーンを持っている。

***タイプ1 [#x031ffa6]
クライアントは独自認証局(ルートCA、中間CA)の証明書の公開鍵をインポートする。

-手動の展開
-[[AD CS>証明書サービス (AD CS)]]の機能を使用して展開
-[[Active Directory]]の[[GPO]]を使用して展開
--AD CS  ポリシー設定~
https://technet.microsoft.com/ja-jp/library/cc725911.aspx

***タイプ2 [#mc51d147]
[[この独自認証局が正規の認証局から、中間認証局の証明書を取得している場合>https://technet.microsoft.com/ja-jp/library/cc772393.aspx#BKMK_BS2]]、~
この中間CA証明書、クロスルート設定用証明書がサーバ側に設定されていれば、~
クライアント側の独自認証局の公開鍵のインポートは不要・・・だと思うが、~
[[AD CS>証明書サービス (AD CS)]]の場合はGPOで配布するのかもしれないので要確認。

-中間CA証明書はなぜ必要なのでしょうか  Symantec~
https://knowledge.symantec.com/jp/support/bms-support/index?page=content&id=SO22877&actp=RSS&viewlocale=ja_JP
-中間CA証明書のインストールについて Symantec~
https://knowledge.symantec.com/jp/support/bms-support/index?page=content&actp=CROSSLINK&id=SO22871

*参考 [#l5552d40]
-PKI基礎講座(1):PKIの基礎を理解しよう! - @IT~
http://www.atmarkit.co.jp/ait/articles/0011/02/news001.html

-[[証明書失効リスト (CRL)]]
-[[証明書サービス (AD CS)]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS