powershellで自己証明書を作成してみた

Powershell Powershell

自己証明書は自分自身が認証局(CA)となるような証明書であり、webで検索すると「オレオレ証明書」などとも呼ばれることが多いものです。

今回は自己証明書をPowerShellで作成し、作成した自己証明書をIISに適用させてhttpsの通信ができるのか確認してみました。

OSはwindowsOSとなります。

広告

自己証明書を作成する

「New-SelfSignedCertificate」コマンドを利用して作成します。

・以下のコマンドをPowerShellで実行します
 ※この時PowerShellは管理者権限で起動してください。
   以下でも記載していますが、通常の権限で実行するとエラーとなります。

New-SelfSignedCertificate -subject hogehoge.com

オプションは最低限「-subject」だけを指定すれば作成することが可能です。
「New-SelfSignedCertificate」コマンドのオプションについては以下の公式ドキュメントに記載してあります。

New-SelfSignedCertificate (pki)
Use this topic to help manage Windows and Windows Server technologies with Windows PowerShell.

特に期間を指定せずに作成した証明書の期限は1年間となっているそうです。

上記コマンドの実行結果は以下の通りです。

PS C:\Windows\system32> New-SelfSignedCertificate -subject hogehoge.com


   PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\MY

Thumbprint                                Subject
----------                                -------
0B16A4B8788C844572593098269F2E740FDEB8F6  CN=hogehoge.com


PS C:\Windows\system32>

・証明書マネージャー(ローカルコンピューター)で作成された証明書を確認します
 ※証明書マネージャーは、開いているPowerShell上で[certlm.msc] と入力すれば開くことができます。

証明書マネージャー(ローカルコンピューター)で作成された証明書を確認

自己証明書の作成は以上です。

[注意点] コマンドを管理者権限で実行としないとエラーとなる

通常権限のpowershellを起動してコマンド実行するとエラーが出ます

通常権限のpowershellを起動してコマンド実行するとエラーが出る

なので、PowerShell実行時に「管理者として起動する」から起動してください。

PowerShell実行時に「管理者として起動する」から起動

IISに証明書を設定する

IISはインストールされている前提ですが、
未インストールの場合はPowerShellでもインストール可能ですので、以下の記事も参考にしてインストールしてみてください。

【Powershell】IISをwindowsサーバーにインストールする方法
Powershellを利用してIISをインストールする方法をまとめました。この記事ではIISマネージャを含むインストールをpowershellで実行し、インストールされたかどうかの確認までの流れを、実際に利用するコマンドやそのコマンドの実行結果とともに紹介していきます。

・IISマネージャーの「バインド」の設定で証明書を設定します

IISマネージャーの「バインド」の設定で証明書を設定する

これでIISへの設定は完了です。

[参考] hostsファイルを編集してサイトにアクセスできるようにする

実際にIISのサイトにアクセスしてみようと思いますが、その前に一つだけやることがあります。

この時点でIISへ証明書は設定されましたが、実際に設定したサイトにアクセスするためにドメインを指定してアクセスする必要があります。

今回、「hoghoge.com」というドメインは勝手に個人で作成したものなので、何も設定せずに名前解決をするとIISで設定したサイトとは別のサイトにアクセスすることになります

なので今回はアクセス元の端末のhostsファイルを編集して、[hogehoge.com] に名前解決できるようにさせます。

hostsファイルの編集方法は以下の記事で紹介していますので参考にしてください。

hostsファイルを編集して名前解決させてみた
自分で定義した独自ドメイン(例えば hogehoge.com など)を利用して検証しようとするときには、hostsファイルを編集して登録すると便利です。 自分で定義したドメインをDNSに登録しなくても名前解決して正常にアクセスさせることがで...

実際のサイトにアクセスしてみる

実際に「https://hogehoge.com」にアクセスしてみます。

「https://hogehoge.com」にアクセスした結果

IISで設定したページが開かれることを確認できました。

次に今回作成した証明書が適用されているのかについても確認します。

「保護されていない通信」をクリックし、
「証明書が無効です」と表示されている部分もクリックして証明書の情報を開きます。

「保護されていない通信」をクリックし、「証明書が無効です」と表示されている部分もクリックして証明書の情報を開く
証明書情報が開かれる

すると、この証明書のルート証明書が信頼できないものである旨が表示されますが、
今回作成したhogehoge.comの証明書であることは確認できました。

さいごに

私の場合、最初に証明書を作成する際にpowershellを管理者権限で起動していなかったのでエラーが吐かれ、その部分から躓いてしまいました。

エラー画面では「アクセスが拒否されました」と出てきていたので気づくことができましたが、
[権限がありません] などもっとダイレクトに原因について教えてくれると親切なのになと思いました。

タイトルとURLをコピーしました