X509SubjectKeyIdentifierExtension クラス
アセンブリ: System (system.dll 内)


証明書を識別する方法には、証明書のハッシュを使用する方法、発行者とシリアル番号を使用する方法、およびサブジェクト キー識別子 (SKI) を使用する方法があります。SKI を使用すると、証明書のサブジェクトを一意に識別できます。SKI は、XML デジタル署名を処理する場合によく使用されます。

ユーザーの個人用証明書ストアを開き、そこに格納されている各証明書に関する情報を表示するコード例を次に示します。この例では、X509SubjectKeyIdentifierExtension クラスを使用して情報を表示しています。
Imports System Imports System.Security.Cryptography Imports System.Security.Cryptography.X509Certificates Module CertSelect Sub Main() Try Dim store As New X509Store("MY", StoreLocation.CurrentUser) store.Open(OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly) Dim collection As X509Certificate2Collection = CType(store.Certificates, X509Certificate2Collection) Dim i As Integer For i = 0 To collection.Count Dim extension As X509Extension For Each extension In collection(i).Extensions Console.WriteLine(extension.Oid.FriendlyName + "(" + extension.Oid.Value + ")") If extension.Oid.FriendlyName = "Key Usage" Then Dim ext As X509KeyUsageExtension = CType(extension, X509KeyUsageExtension) Console.WriteLine(ext.KeyUsages) End If If extension.Oid.FriendlyName = "Basic Constraints" Then Dim ext As X509BasicConstraintsExtension = CType(extension, X509BasicConstraintsExtension) Console.WriteLine(ext.CertificateAuthority) Console.WriteLine(ext.HasPathLengthConstraint) Console.WriteLine(ext.PathLengthConstraint) End If If extension.Oid.FriendlyName = "Subject Key Identifier" Then Dim ext As X509SubjectKeyIdentifierExtension = CType(extension, X509SubjectKeyIdentifierExtension) Console.WriteLine(ext.SubjectKeyIdentifier) End If If extension.Oid.FriendlyName = "Enhanced Key Usage" Then Dim ext As X509EnhancedKeyUsageExtension = CType(extension, X509EnhancedKeyUsageExtension) Dim oids As OidCollection = ext.EnhancedKeyUsages Dim oid As Oid For Each oid In oids Console.WriteLine(oid.FriendlyName + "(" + oid.Value + ")") Next oid End If Next extension Next i store.Close() Catch Console.WriteLine("Information could not be written out for this certificate.") End Try End Sub End Module
using System; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; public class CertSelect { public static void Main() { try { X509Store store = new X509Store("MY", StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates; for (int i = 0; i < collection.Count; i++) { foreach (X509Extension extension in collection[i].Extensions) { Console.WriteLine(extension.Oid.FriendlyName + "(" + extension.Oid.Value + ")"); if (extension.Oid.FriendlyName == "Key Usage") { X509KeyUsageExtension ext = (X509KeyUsageExtension)extension; Console.WriteLine(ext.KeyUsages); } if (extension.Oid.FriendlyName == "Basic Constraints") { X509BasicConstraintsExtension ext = (X509BasicConstraintsExtension)extension; Console.WriteLine(ext.CertificateAuthority); Console.WriteLine(ext.HasPathLengthConstraint); Console.WriteLine(ext.PathLengthConstraint); } if (extension.Oid.FriendlyName == "Subject Key Identifier") { X509SubjectKeyIdentifierExtension ext = (X509SubjectKeyIdentifierExtension)extension; Console.WriteLine(ext.SubjectKeyIdentifier); } if (extension.Oid.FriendlyName == "Enhanced Key Usage") { X509EnhancedKeyUsageExtension ext = (X509EnhancedKeyUsageExtension)extension; OidCollection oids = ext.EnhancedKeyUsages; foreach (Oid oid in oids) { Console.WriteLine(oid.FriendlyName + "(" + oid.Value + ")"); } } } } store.Close(); } catch (CryptographicException) { Console.WriteLine("Information could not be written out for this certificate."); } } }
#using <System.dll> #using <system.security.dll> using namespace System; using namespace System::Security::Cryptography; using namespace System::Security::Cryptography::X509Certificates; int main() { try { X509Store^ store = gcnew X509Store( L"MY",StoreLocation::CurrentUser ); store->Open( static_cast<OpenFlags>(OpenFlags::ReadOnly | OpenFlags::OpenExistingOnly) ); X509Certificate2Collection^ collection = dynamic_cast<X509Certificate2Collection^>(store->Certificates); for ( int i = 0; i < collection->Count; i++ ) { System::Collections::IEnumerator^ myEnum = collection[ i ]->Extensions->GetEnumerator(); while ( myEnum->MoveNext() ) { X509Extension^ extension = safe_cast<X509Extension^>(myEnum->Current); Console::WriteLine( L"{0}({1})", extension->Oid->FriendlyName, extension->Oid->Value ); if ( extension->Oid->FriendlyName == L"Key Usage" ) { X509KeyUsageExtension^ ext = dynamic_cast<X509KeyUsageExtension^>(extension); Console::WriteLine( ext->KeyUsages ); } if ( extension->Oid->FriendlyName == L"Basic Constraints" ) { X509BasicConstraintsExtension^ ext = dynamic_cast<X509BasicConstraintsExtension^>(extension); Console::WriteLine( ext->CertificateAuthority ); Console::WriteLine( ext->HasPathLengthConstraint ); Console::WriteLine( ext->PathLengthConstraint ); } if ( extension->Oid->FriendlyName == L"Subject Key Identifier" ) { X509SubjectKeyIdentifierExtension^ ext = dynamic_cast<X509SubjectKeyIdentifierExtension^>(extension); Console::WriteLine( ext->SubjectKeyIdentifier ); } if ( extension->Oid->FriendlyName == L"Enhanced Key Usage" ) { X509EnhancedKeyUsageExtension^ ext = dynamic_cast<X509EnhancedKeyUsageExtension^>(extension); OidCollection^ oids = ext->EnhancedKeyUsages; System::Collections::IEnumerator^ myEnum1 = oids->GetEnumerator(); while ( myEnum1->MoveNext() ) { Oid^ oid = safe_cast<Oid^>(myEnum1->Current); Console::WriteLine( L"{0}({1})", oid->FriendlyName, oid->Value ); } } } } store->Close(); } catch ( CryptographicException^ ) { Console::WriteLine( L"Information could not be written out for this certificate." ); } }

System.Security.Cryptography.AsnEncodedData
System.Security.Cryptography.X509Certificates.X509Extension
System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


X509SubjectKeyIdentifierExtension コンストラクタ ()
アセンブリ: System (system.dll 内)


ユーザーの個人用証明書ストアを開き、そこに格納されている各証明書に関する情報を表示するコード例を次に示します。この例では、X509SubjectKeyIdentifierExtension クラスを使用して情報を表示しています。
Imports System Imports System.Security.Cryptography Imports System.Security.Cryptography.X509Certificates Module CertSelect Sub Main() Try Dim store As New X509Store("MY", StoreLocation.CurrentUser) store.Open(OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly) Dim collection As X509Certificate2Collection = CType(store.Certificates, X509Certificate2Collection) Dim i As Integer For i = 0 To collection.Count Dim extension As X509Extension For Each extension In collection(i).Extensions Console.WriteLine(extension.Oid.FriendlyName + "(" + extension.Oid.Value + ")") If extension.Oid.FriendlyName = "Key Usage" Then Dim ext As X509KeyUsageExtension = CType(extension, X509KeyUsageExtension) Console.WriteLine(ext.KeyUsages) End If If extension.Oid.FriendlyName = "Basic Constraints" Then Dim ext As X509BasicConstraintsExtension = CType(extension, X509BasicConstraintsExtension) Console.WriteLine(ext.CertificateAuthority) Console.WriteLine(ext.HasPathLengthConstraint) Console.WriteLine(ext.PathLengthConstraint) End If If extension.Oid.FriendlyName = "Subject Key Identifier" Then Dim ext As X509SubjectKeyIdentifierExtension = CType(extension, X509SubjectKeyIdentifierExtension) Console.WriteLine(ext.SubjectKeyIdentifier) End If If extension.Oid.FriendlyName = "Enhanced Key Usage" Then Dim ext As X509EnhancedKeyUsageExtension = CType(extension, X509EnhancedKeyUsageExtension) Dim oids As OidCollection = ext.EnhancedKeyUsages Dim oid As Oid For Each oid In oids Console.WriteLine(oid.FriendlyName + "(" + oid.Value + ")") Next oid End If Next extension Next i store.Close() Catch Console.WriteLine("Information could not be written out for this certificate.") End Try End Sub End Module
using System; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; public class CertSelect { public static void Main() { try { X509Store store = new X509Store("MY", StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates; for (int i = 0; i < collection.Count; i++) { foreach (X509Extension extension in collection[i].Extensions) { Console.WriteLine(extension.Oid.FriendlyName + "(" + extension.Oid.Value + ")"); if (extension.Oid.FriendlyName == "Key Usage") { X509KeyUsageExtension ext = (X509KeyUsageExtension)extension; Console.WriteLine(ext.KeyUsages); } if (extension.Oid.FriendlyName == "Basic Constraints") { X509BasicConstraintsExtension ext = (X509BasicConstraintsExtension)extension; Console.WriteLine(ext.CertificateAuthority); Console.WriteLine(ext.HasPathLengthConstraint); Console.WriteLine(ext.PathLengthConstraint); } if (extension.Oid.FriendlyName == "Subject Key Identifier") { X509SubjectKeyIdentifierExtension ext = (X509SubjectKeyIdentifierExtension)extension; Console.WriteLine(ext.SubjectKeyIdentifier); } if (extension.Oid.FriendlyName == "Enhanced Key Usage") { X509EnhancedKeyUsageExtension ext = (X509EnhancedKeyUsageExtension)extension; OidCollection oids = ext.EnhancedKeyUsages; foreach (Oid oid in oids) { Console.WriteLine(oid.FriendlyName + "(" + oid.Value + ")"); } } } } store.Close(); } catch (CryptographicException) { Console.WriteLine("Information could not be written out for this certificate."); } } }
#using <System.dll> #using <system.security.dll> using namespace System; using namespace System::Security::Cryptography; using namespace System::Security::Cryptography::X509Certificates; int main() { try { X509Store^ store = gcnew X509Store( L"MY",StoreLocation::CurrentUser ); store->Open( static_cast<OpenFlags>(OpenFlags::ReadOnly | OpenFlags::OpenExistingOnly) ); X509Certificate2Collection^ collection = dynamic_cast<X509Certificate2Collection^>(store->Certificates); for ( int i = 0; i < collection->Count; i++ ) { System::Collections::IEnumerator^ myEnum = collection[ i ]->Extensions->GetEnumerator(); while ( myEnum->MoveNext() ) { X509Extension^ extension = safe_cast<X509Extension^>(myEnum->Current); Console::WriteLine( L"{0}({1})", extension->Oid->FriendlyName, extension->Oid->Value ); if ( extension->Oid->FriendlyName == L"Key Usage" ) { X509KeyUsageExtension^ ext = dynamic_cast<X509KeyUsageExtension^>(extension); Console::WriteLine( ext->KeyUsages ); } if ( extension->Oid->FriendlyName == L"Basic Constraints" ) { X509BasicConstraintsExtension^ ext = dynamic_cast<X509BasicConstraintsExtension^>(extension); Console::WriteLine( ext->CertificateAuthority ); Console::WriteLine( ext->HasPathLengthConstraint ); Console::WriteLine( ext->PathLengthConstraint ); } if ( extension->Oid->FriendlyName == L"Subject Key Identifier" ) { X509SubjectKeyIdentifierExtension^ ext = dynamic_cast<X509SubjectKeyIdentifierExtension^>(extension); Console::WriteLine( ext->SubjectKeyIdentifier ); } if ( extension->Oid->FriendlyName == L"Enhanced Key Usage" ) { X509EnhancedKeyUsageExtension^ ext = dynamic_cast<X509EnhancedKeyUsageExtension^>(extension); OidCollection^ oids = ext->EnhancedKeyUsages; System::Collections::IEnumerator^ myEnum1 = oids->GetEnumerator(); while ( myEnum1->MoveNext() ) { Oid^ oid = safe_cast<Oid^>(myEnum1->Current); Console::WriteLine( L"{0}({1})", oid->FriendlyName, oid->Value ); } } } } store->Close(); } catch ( CryptographicException^ ) { Console::WriteLine( L"Information could not be written out for this certificate." ); } }

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


X509SubjectKeyIdentifierExtension コンストラクタ (AsnEncodedData, Boolean)
アセンブリ: System (system.dll 内)

Dim encodedSubjectKeyIdentifier As AsnEncodedData Dim critical As Boolean Dim instance As New X509SubjectKeyIdentifierExtension(encodedSubjectKeyIdentifier, critical)
public X509SubjectKeyIdentifierExtension ( AsnEncodedData encodedSubjectKeyIdentifier, bool critical )
public: X509SubjectKeyIdentifierExtension ( AsnEncodedData^ encodedSubjectKeyIdentifier, bool critical )
public X509SubjectKeyIdentifierExtension ( AsnEncodedData encodedSubjectKeyIdentifier, boolean critical )
public function X509SubjectKeyIdentifierExtension ( encodedSubjectKeyIdentifier : AsnEncodedData, critical : boolean )


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


X509SubjectKeyIdentifierExtension コンストラクタ (PublicKey, Boolean)
アセンブリ: System (system.dll 内)

Dim key As PublicKey Dim critical As Boolean Dim instance As New X509SubjectKeyIdentifierExtension(key, critical)

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


X509SubjectKeyIdentifierExtension コンストラクタ (PublicKey, X509SubjectKeyIdentifierHashAlgorithm, Boolean)
アセンブリ: System (system.dll 内)

Public Sub New ( _ key As PublicKey, _ algorithm As X509SubjectKeyIdentifierHashAlgorithm, _ critical As Boolean _ )
Dim key As PublicKey Dim algorithm As X509SubjectKeyIdentifierHashAlgorithm Dim critical As Boolean Dim instance As New X509SubjectKeyIdentifierExtension(key, algorithm, critical)
public X509SubjectKeyIdentifierExtension ( PublicKey key, X509SubjectKeyIdentifierHashAlgorithm algorithm, bool critical )
public: X509SubjectKeyIdentifierExtension ( PublicKey^ key, X509SubjectKeyIdentifierHashAlgorithm algorithm, bool critical )
public X509SubjectKeyIdentifierExtension ( PublicKey key, X509SubjectKeyIdentifierHashAlgorithm algorithm, boolean critical )
public function X509SubjectKeyIdentifierExtension ( key : PublicKey, algorithm : X509SubjectKeyIdentifierHashAlgorithm, critical : boolean )

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


X509SubjectKeyIdentifierExtension コンストラクタ

名前 | 説明 |
---|---|
X509SubjectKeyIdentifierExtension () | X509SubjectKeyIdentifierExtension クラスの新しいインスタンスを初期化します。 |
X509SubjectKeyIdentifierExtension (AsnEncodedData, Boolean) | エンコードされたデータ、および拡張機能が重要であるかどうかを示す値を使用して、X509SubjectKeyIdentifierExtension クラスの新しいインスタンスを初期化します。 |
X509SubjectKeyIdentifierExtension (Byte[], Boolean) | バイト配列、および拡張機能が重要であるかどうかを示す値を使用して、X509SubjectKeyIdentifierExtension クラスの新しいインスタンスを初期化します。 |
X509SubjectKeyIdentifierExtension (PublicKey, Boolean) | 公開キー、および拡張機能が重要であるかどうかを示す値を使用して、X509SubjectKeyIdentifierExtension クラスの新しいインスタンスを初期化します。 |
X509SubjectKeyIdentifierExtension (String, Boolean) | 文字列、および拡張機能が重要であるかどうかを示す値を使用して、X509SubjectKeyIdentifierExtension クラスの新しいインスタンスを初期化します。 |
X509SubjectKeyIdentifierExtension (PublicKey, X509SubjectKeyIdentifierHashAlgorithm, Boolean) | 公開キー、ハッシュ アルゴリズム識別子、および拡張機能が重要であるかどうかを示す値を使用して、X509SubjectKeyIdentifierExtension クラスの新しいインスタンスを初期化します。 |

X509SubjectKeyIdentifierExtension コンストラクタ (String, Boolean)
アセンブリ: System (system.dll 内)

Dim subjectKeyIdentifier As String Dim critical As Boolean Dim instance As New X509SubjectKeyIdentifierExtension(subjectKeyIdentifier, critical)
public function X509SubjectKeyIdentifierExtension ( subjectKeyIdentifier : String, critical : boolean )


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


X509SubjectKeyIdentifierExtension コンストラクタ (Byte[], Boolean)
アセンブリ: System (system.dll 内)

Dim subjectKeyIdentifier As Byte() Dim critical As Boolean Dim instance As New X509SubjectKeyIdentifierExtension(subjectKeyIdentifier, critical)
public: X509SubjectKeyIdentifierExtension ( array<unsigned char>^ subjectKeyIdentifier, bool critical )
public function X509SubjectKeyIdentifierExtension ( subjectKeyIdentifier : byte[], critical : boolean )

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


X509SubjectKeyIdentifierExtension プロパティ

名前 | 説明 | |
---|---|---|
![]() | Critical | 拡張機能がクリティカルであるかどうかを示すブール値を取得します。 ( X509Extension から継承されます。) |
![]() | Oid | AsnEncodedData オブジェクトの Oid 値を取得または設定します。 ( AsnEncodedData から継承されます。) |
![]() | RawData | ASN.1 (Abstract Syntax Notation One) でエンコードされたデータをバイト配列表現で取得または設定します。 ( AsnEncodedData から継承されます。) |
![]() | SubjectKeyIdentifier | 証明書のサブジェクト キー識別子 (SKI) を表す文字列を取得します。 |

X509SubjectKeyIdentifierExtension メソッド

名前 | 説明 | |
---|---|---|
![]() | CopyFrom | オーバーライドされます。 エンコード済みデータから情報をコピーして、X509SubjectKeyIdentifierExtension クラスの新しいインスタンスを作成します。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | Format | ASN.1 (Abstract Syntax Notation One) でエンコードされたデータを、文字列として書式設定して返します。 ( AsnEncodedData から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

X509SubjectKeyIdentifierExtension メンバ
証明書のサブジェクト キー識別子 (SKI: Subject Key Identifier) を示す文字列を定義します。このクラスは継承できません。
X509SubjectKeyIdentifierExtension データ型で公開されるメンバを以下の表に示します。

名前 | 説明 | |
---|---|---|
![]() | X509SubjectKeyIdentifierExtension | オーバーロードされます。 X509SubjectKeyIdentifierExtension クラスの新しいインスタンスを初期化します。 |

名前 | 説明 | |
---|---|---|
![]() | Critical | 拡張機能がクリティカルであるかどうかを示すブール値を取得します。(X509Extension から継承されます。) |
![]() | Oid | AsnEncodedData オブジェクトの Oid 値を取得または設定します。(AsnEncodedData から継承されます。) |
![]() | RawData | ASN.1 (Abstract Syntax Notation One) でエンコードされたデータをバイト配列表現で取得または設定します。(AsnEncodedData から継承されます。) |
![]() | SubjectKeyIdentifier | 証明書のサブジェクト キー識別子 (SKI) を表す文字列を取得します。 |

名前 | 説明 | |
---|---|---|
![]() | CopyFrom | オーバーライドされます。 エンコード済みデータから情報をコピーして、X509SubjectKeyIdentifierExtension クラスの新しいインスタンスを作成します。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | Format | ASN.1 (Abstract Syntax Notation One) でエンコードされたデータを、文字列として書式設定して返します。 (AsnEncodedData から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

- X509SubjectKeyIdentifierExtensionのページへのリンク