(自分の勉強用)Powershell(.NET Framework)を確認を使って自己証明書の作成する、そして、作成した自己証明書の内容を確認するためのサンプル。サンプルコードはGPTベースで一部自分でカスタマイズ。
自己証明書とは
自分自身によって署名されたSSL証明書。自己証明書は、正規の認証局によって署名された証明書と同じようにサーバーとクライアント間の通信においてデータの暗号化を可能。ただし、あくまで自分で自分を証明したもので、正規の認証局によって署名された証明書に比べて、自己証明書は信頼性が低く、ユーザーが手動で信頼する必要がある場合がある。自己証明書は、テスト環境や社内ネットワークなど、公開されていない環境でのみ使用することが望ましい。オレオレ証明書等とも言われるらしい
自己署名証明書とは – 意味をわかりやすく – IT用語辞典 e-Words
スクリプト例
Powershell(.NET Framework) でのサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#Step1 自己証明書の作成 # RSA鍵ペアの作成 $rsa = [System.Security.Cryptography.RSA]::Create() #所有者名を指定 #所有者情報を CN=example.com,O=Example Organization,C=US として証明書を作成しています。 #CN は証明書の名前、 O は組織名、 C は国名を表します。 #所有者情報を設定することで、作成された証明書の所有者は CN=example.com,O=Example Organization,C=US となります。 $subject = "CN=example.com,O=Example Organization,C=US" # 所有者情報 # 証明書要求の作成 $request = New-Object System.Security.Cryptography.X509Certificates.CertificateRequest ` -ArgumentList @($subject, $rsa, [System.Security.Cryptography.HashAlgorithmName]::SHA256, ` [System.Security.Cryptography.RSASignaturePadding]::Pkcs1) # 自己署名証明書の生成 $cert = $request.CreateSelfSigned([System.DateTimeOffset]::Now, [System.DateTimeOffset]::Now.AddYears(1)) # 証明書のPFX形式のエクスポート $certData = $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx, "password") $currentDir = Get-Location $Fullpath = $currentDir.ToString() + "\" + "certificate.pfx" [System.IO.File]::WriteAllBytes($Fullpath, $certData) #Step1 自己証明書の確認 #証明書ファイルを読み込み、証明書オブジェクトを作成 $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 #X509Certificate2クラスのImportメソッドを使って、PFXファイルを証明書オブジェクトに読み込む #引数1: 読み込むPFXファイルのフルパス #引数2: PFXファイルのパスワード #引数3: キーストアに追加するためのフラグを指定 $cert.Import($Fullpath, "password", [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet) #証明書の情報を表示 $cert.Subject # 証明書に記載された主体名を表示 $cert.Issuer # 証明書に記載された発行者名を表示 $cert.SerialNumber # 証明書のシリアル番号を表示 $cert.NotBefore # 証明書の有効期限開始日を表示 $cert.NotAfter # 証明書の有効期限終了日を表示 $cert.PublicKey.Key # 証明書に関連付けられた公開鍵を表示 |
今度は、ここで作成した証明書を使ってみようかな。
コメント