3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Active Directory証明書サーバで証明書を発行してALBに設定する

3
Posted at

概要

Active Directory証明書サーバ(ADCS)を構築後、証明書を発行します。発行した証明書をALBに設定して、HTTPS通信する際の手順について記載します。手順の中でADCSはALBおよびEC2にアクセス確認する際のクライアントとしても使用しているため、パソコンのアイコンを使用しています。また、今回の手順には登場しませんが、AWS Managed Microsoft AD環境におけるドメイン環境において、ADドメインに対するワイルドカード証明書を発行する想定としています。

image100.png

前提条件

  • VPCの作成および設定
  • EC2(Windows Server 2025)の作成および設定

全体の流れ

  • ADCSの機能の追加と設定
  • 証明書テンプレートの作成
  • 証明書の発行
  • 証明書の変換
  • ACMに証明書登録
  • セキュリティグループの作成
  • WEBサーバの設定
  • ターゲットグループの作成
  • ALBの作成
  • 接続確認

設定手順

ADCS機能の追加と設定

「サーバーマネージャー」から「サーバーの役割の選択」を選択後、「Active Directory証明書サービス」にチェックします。

image002.png

「管理ツールを含める」にチェック後、「機能の追加」をクリックします。

image004.png

役割サービスの選択から「証明機関」にチェック後、「次へ」をクリックします。

image006.png

「必要に応じて対象サーバーを自動的に再起動する」にチェック後、インストールをクリックします。

image008.png

AD CSの機能インストール後、展開後構成を選択します。

image010.png

資格情報を入力後、「次へ」をクリックします。

image012.png

「証明機関」チェック後、「次へ」をクリックします。

image014.png

「エンタープライズCA」を選択後、「次へ」をクリックします。

image016.png

「ルートCA」を選択後、「次へ」をクリックします。

image018.png

「新しい秘密キーを作成する」を選択後、「次へ」をクリックします。

image020.png

暗号化オプション選択後、「次へ」をクリックします。

image022.png

「このCAの共通名」を入力後、「次へ」をクリックします。

image024.png

「有効期限」入力後、「次へ」をクリックします。

image026.png

「データベースの場所」を入力後、「次へ」をクリックします。

image028.png

内容確認後、「構成」をクリックします。

image030.png

「構成に成功しました」の表示確認後、「閉じる」をクリックします。

image032.png

証明書テンプレートの作成

「certsrv.msc」実行後、「証明書テンプレート」→「管理」をクリックします。

image034.png

「Computer」→「テンプレートの複製」をクリックします。

image036.png

「全般」タブをクリック後、「テンプレート表示名」を変更します。必要に応じて「有効期限」を変更します。

image038.png

「要求処理」タブ選択後、「秘密キーのエクスポートを許可する」をチェックします。

image040.png

「サブジェクト名」タブ選択後、「要求に含まれる」にチェック後、「OK」をクリックします。

image042.png

「証明書テンプレート」→「新規作成」→「発行する証明書テンプレート」をクリックします。

image044.png

先ほど作成したテンプレート選択後、「OK」をクリックします。

image046.png

追加したテンプレートが「証明書テンプレート」一覧に表示されることを確認します。

image048.png

証明書の発行

「certlm.msc」実行後、「証明書」→「すべてのタスク」→「新しい証明書の要求」をクリックします。

image050.png

「次へ」をクリックします。

image052.png

「Active Directory登録ポリシー」を選択後、「次へ」をクリックします。

image054.png

「この証明書を登録するには情報が不足しています。~」をクリックします。

image056.png

サブジェクト名、別名に下記情報入力後、「追加」をクリックします。

  • サブジェクト名:種類:共通名、値:.ドメイン名(例.example.com)
  • 別名:種類:DNS、値:.ドメイン名(例.example.com)

image058.png

入力項目が追加されることを確認後、「OK」をクリックします。

image060.png

作成した証明書テンプレートを選択後、「登録」をクリックします。

image062.png

証明書が発行されたことを確認します。

image064.png

作成された証明書を選択後、「すべてのタスク」→「エクスポート」をクリックします。

image066.png

「次へ」をクリックします。

image068.png

「はい、秘密キーをエクスポートします」にチェック後、「次へ」をクリックします。

image070.png

デフォルト設定のまま「次へ」をクリックします。

image072.png

パスワードを入力後、「次へ」をクリックします。

image074.png

証明書のファイル名、ファイルパスを選択後、「保存」をクリックします。

image076.png

「次へ」をクリックします。

image078.png

「完了」をクリックします。

image080.png

証明書の変換

ACMに証明書をインポート前に.pfxファイルをPEM形式に変換する必要があります。WindowsサーバにOpenSSLツールキットをインストールするか、opensslコマンドが使用出来る環境にpfxファイルを転送します。今回は検証用に構築したAmazon Linux 2023サーバがありましたのでそちらに証明書送付後、変換処置を行います。

  • 証明書ファイルをOpensslコマンドを使用出来るLinuxサーバに転送
C:\Users\admin\cert>dir
key.pem
server-cert-01.pfx
C:\Users\admin\cert>scp -i key.pem server-cert-01.pfx ec2-user@xx.xx.xx.xx:/home/ec2-user/
server-cert-01.pfx
  • Linuxサーバで証明書ファイルを変換
cd /home/ec2-user/

ls
server-cert-01.pfx

openssl pkcs12 -in server-cert-01.pfx -out all.pem -nodes
Enter Import Password:

ls
all.pem  server-cert-01.pfx

cat all.pem

-----BEGIN PRIVATE KEY-----

この箇所を「ACMに証明書登録」の「②証明書のプライベートキー」の箇所に入力

-----END PRIVATE KEY-----

-----BEGIN CERTIFICATE-----

この箇所を「ACMに証明書登録」の「①証明書本文」の箇所に入力

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

この箇所を「ACMに証明書登録」の「③証明書チェーン - オプション」の箇所に入力

-----END CERTIFICATE-----

ACMに証明書登録

AWSコンソールからACMをクリックします。

image086.png

「証明書をインポート」を選択します。

image088.png

「証明書変換」で取得した情報を入力後、証明書をインポートをクリックします。

image090.png

証明書がインポートされたことを確認します。

image092.png

セキュリティグループの作成

ALB用のセキュリティグループを作成します。VPCからのHTTPSを許可します。

image004.png

EC2用のセキュリティグループを作成します。VPCからのHTTP許可と上記作成したALB用セキュリティグループからのHTTPS通信を許可します。

image006.png

WEBサーバの設定

nginxのインストールを行います。

dnf install nginx -y

nginxのConfig修正を行います。

vim /etc/nginx/nginx.conf
下記を追加
        # test1
        location /html-test1/ {
                alias /usr/share/nginx/html-test1/;
                index index-test1.html;
        }

nginxのConfigの反映を行います。

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

systemctl restart nginx

テスト用HTMLを作成します。

cd /usr/share/nginx/
mkdir html-test1

vim html-test1/index-test1.html
test1

Windowsサーバからアクセス確認を行います。ADCSのサーバでブラウザを起動してhttp://EC2のIPアドレス/html-test1/index-test1.htmlにアクセス後、「test1」と表示されることを確認します。

image002.png

ターゲットグループの作成

ALB用のターゲットグループを作成します。ターゲットの種類は「インスタンス」を選択後、ターゲットグループ名を入力します。プロトコル、ポートはHTTP:80を指定します。

image008.png

VPCを選択します。

image010.png

上記、nginxを設定したEC2を選択後、「保留中として以下を含める」をクリックします。

image012.png

ターゲットグループのターゲットとしてEC2が登録されます。

image014.png

しばらくすると、ターゲットタブからヘルスステータスが「Healthy」になっていることを確認出来ます。

image016.png

ALBの作成

ELBの作成画面からApplicaton Load Balancerの作成をクリックします。

image018.png

ロードバランサー名を入力後、「内部」を選択します。

image020.png

VPCおよび2つのサブネットを選択します。

image022.png

先ほど作成したセキュリティグループを選択します。

image024.png

プロトコルをHTTPS:443とします。ターゲットグループは上記で作成したものを選択します。

image026.png

「デフォルトSSL/TLSサーバー証明書」の箇所で「ACMから」を選択後、上記でインポートした証明書を選択します。

image028.png

上記設定でALB作成後、しばらくするとリソースマップから正常性を確認することが出来ます。

image030.png

接続確認

AD CSをインストールしたWindowsサーバからブラウザを起動後、https://ALBのDNS名//html-test1/index-test1.htmlにアクセスし、test1と表示されることを確認します。

image032.png

今回、名前解決の設定までは行っておらず、ALBのドメイン名でアクセスしているため、セキュリティ警告が表示されています。本番環境では、DNSサーバにレコード作成後、ドメイン名でのアクセスを行い、ルート証明書をクライアント側に配布することにより、警告表示を抑制します。

今回、名前解決の設定までは行っておらず、ALBのドメイン名でアクセスしているため、セキュリティ警告が表示されています。本番環境では、以下の対応により警告を解消します。

  • DNSレコードの作成
    DNSサーバにALBのエイリアスレコードを作成し、独自ドメイン名でアクセス可能にする

  • ルート証明書の配布
    ADCSのルート証明書をクライアント端末に配布する

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?