自己証明書は自分自身が認証局(CA)となるような証明書であり、webで検索すると「オレオレ証明書」などとも呼ばれることが多いものです。
今回は自己証明書をPowerShellで作成し、作成した自己証明書をIISに適用させてhttpsの通信ができるのか確認してみました。
OSはwindowsOSとなります。
自己証明書を作成する
「New-SelfSignedCertificate」コマンドを利用して作成します。
・以下のコマンドをPowerShellで実行します
※この時PowerShellは管理者権限で起動してください。
以下でも記載していますが、通常の権限で実行するとエラーとなります。
New-SelfSignedCertificate -subject hogehoge.com
オプションは最低限「-subject」だけを指定すれば作成することが可能です。
「New-SelfSignedCertificate」コマンドのオプションについては以下の公式ドキュメントに記載してあります。
特に期間を指定せずに作成した証明書の期限は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実行時に「管理者として起動する」から起動してください。
IISに証明書を設定する
IISはインストールされている前提ですが、
未インストールの場合はPowerShellでもインストール可能ですので、以下の記事も参考にしてインストールしてみてください。
・IISマネージャーの「バインド」の設定で証明書を設定します
これでIISへの設定は完了です。
[参考] hostsファイルを編集してサイトにアクセスできるようにする
実際にIISのサイトにアクセスしてみようと思いますが、その前に一つだけやることがあります。
この時点でIISへ証明書は設定されましたが、実際に設定したサイトにアクセスするためにドメインを指定してアクセスする必要があります。
今回、「hoghoge.com」というドメインは勝手に個人で作成したものなので、何も設定せずに名前解決をするとIISで設定したサイトとは別のサイトにアクセスすることになります。
なので今回はアクセス元の端末のhostsファイルを編集して、[hogehoge.com] に名前解決できるようにさせます。
hostsファイルの編集方法は以下の記事で紹介していますので参考にしてください。
実際のサイトにアクセスしてみる
実際に「https://hogehoge.com」にアクセスしてみます。
IISで設定したページが開かれることを確認できました。
次に今回作成した証明書が適用されているのかについても確認します。
「保護されていない通信」をクリックし、
「証明書が無効です」と表示されている部分もクリックして証明書の情報を開きます。
すると、この証明書のルート証明書が信頼できないものである旨が表示されますが、
今回作成したhogehoge.comの証明書であることは確認できました。
さいごに
私の場合、最初に証明書を作成する際にpowershellを管理者権限で起動していなかったのでエラーが吐かれ、その部分から躓いてしまいました。
エラー画面では「アクセスが拒否されました」と出てきていたので気づくことができましたが、
[権限がありません] などもっとダイレクトに原因について教えてくれると親切なのになと思いました。