概要
Active Directory証明書サーバ(ADCS)を構築後、証明書を発行します。発行した証明書をALBに設定して、HTTPS通信する際の手順について記載します。手順の中でADCSはALBおよびEC2にアクセス確認する際のクライアントとしても使用しているため、パソコンのアイコンを使用しています。また、今回の手順には登場しませんが、AWS Managed Microsoft AD環境におけるドメイン環境において、ADドメインに対するワイルドカード証明書を発行する想定としています。
前提条件
- VPCの作成および設定
- EC2(Windows Server 2025)の作成および設定
全体の流れ
- ADCSの機能の追加と設定
- 証明書テンプレートの作成
- 証明書の発行
- 証明書の変換
- ACMに証明書登録
- セキュリティグループの作成
- WEBサーバの設定
- ターゲットグループの作成
- ALBの作成
- 接続確認
設定手順
ADCS機能の追加と設定
「サーバーマネージャー」から「サーバーの役割の選択」を選択後、「Active Directory証明書サービス」にチェックします。
「管理ツールを含める」にチェック後、「機能の追加」をクリックします。
役割サービスの選択から「証明機関」にチェック後、「次へ」をクリックします。
「必要に応じて対象サーバーを自動的に再起動する」にチェック後、インストールをクリックします。
AD CSの機能インストール後、展開後構成を選択します。
資格情報を入力後、「次へ」をクリックします。
「証明機関」チェック後、「次へ」をクリックします。
「エンタープライズCA」を選択後、「次へ」をクリックします。
「ルートCA」を選択後、「次へ」をクリックします。
「新しい秘密キーを作成する」を選択後、「次へ」をクリックします。
暗号化オプション選択後、「次へ」をクリックします。
「このCAの共通名」を入力後、「次へ」をクリックします。
「有効期限」入力後、「次へ」をクリックします。
「データベースの場所」を入力後、「次へ」をクリックします。
内容確認後、「構成」をクリックします。
「構成に成功しました」の表示確認後、「閉じる」をクリックします。
証明書テンプレートの作成
「certsrv.msc」実行後、「証明書テンプレート」→「管理」をクリックします。
「Computer」→「テンプレートの複製」をクリックします。
「全般」タブをクリック後、「テンプレート表示名」を変更します。必要に応じて「有効期限」を変更します。
「要求処理」タブ選択後、「秘密キーのエクスポートを許可する」をチェックします。
「サブジェクト名」タブ選択後、「要求に含まれる」にチェック後、「OK」をクリックします。
「証明書テンプレート」→「新規作成」→「発行する証明書テンプレート」をクリックします。
先ほど作成したテンプレート選択後、「OK」をクリックします。
追加したテンプレートが「証明書テンプレート」一覧に表示されることを確認します。
証明書の発行
「certlm.msc」実行後、「証明書」→「すべてのタスク」→「新しい証明書の要求」をクリックします。
「次へ」をクリックします。
「Active Directory登録ポリシー」を選択後、「次へ」をクリックします。
「この証明書を登録するには情報が不足しています。~」をクリックします。
サブジェクト名、別名に下記情報入力後、「追加」をクリックします。
- サブジェクト名:種類:共通名、値:.ドメイン名(例.example.com)
- 別名:種類:DNS、値:.ドメイン名(例.example.com)
入力項目が追加されることを確認後、「OK」をクリックします。
作成した証明書テンプレートを選択後、「登録」をクリックします。
証明書が発行されたことを確認します。
作成された証明書を選択後、「すべてのタスク」→「エクスポート」をクリックします。
「次へ」をクリックします。
「はい、秘密キーをエクスポートします」にチェック後、「次へ」をクリックします。
デフォルト設定のまま「次へ」をクリックします。
パスワードを入力後、「次へ」をクリックします。
証明書のファイル名、ファイルパスを選択後、「保存」をクリックします。
「次へ」をクリックします。
「完了」をクリックします。
証明書の変換
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をクリックします。
「証明書をインポート」を選択します。
「証明書変換」で取得した情報を入力後、証明書をインポートをクリックします。
証明書がインポートされたことを確認します。
セキュリティグループの作成
ALB用のセキュリティグループを作成します。VPCからのHTTPSを許可します。
EC2用のセキュリティグループを作成します。VPCからのHTTP許可と上記作成したALB用セキュリティグループからのHTTPS通信を許可します。
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」と表示されることを確認します。
ターゲットグループの作成
ALB用のターゲットグループを作成します。ターゲットの種類は「インスタンス」を選択後、ターゲットグループ名を入力します。プロトコル、ポートはHTTP:80を指定します。
VPCを選択します。
上記、nginxを設定したEC2を選択後、「保留中として以下を含める」をクリックします。
ターゲットグループのターゲットとしてEC2が登録されます。
しばらくすると、ターゲットタブからヘルスステータスが「Healthy」になっていることを確認出来ます。
ALBの作成
ELBの作成画面からApplicaton Load Balancerの作成をクリックします。
ロードバランサー名を入力後、「内部」を選択します。
VPCおよび2つのサブネットを選択します。
先ほど作成したセキュリティグループを選択します。
プロトコルをHTTPS:443とします。ターゲットグループは上記で作成したものを選択します。
「デフォルトSSL/TLSサーバー証明書」の箇所で「ACMから」を選択後、上記でインポートした証明書を選択します。
上記設定でALB作成後、しばらくするとリソースマップから正常性を確認することが出来ます。
接続確認
AD CSをインストールしたWindowsサーバからブラウザを起動後、https://ALBのDNS名//html-test1/index-test1.htmlにアクセスし、test1と表示されることを確認します。
今回、名前解決の設定までは行っておらず、ALBのドメイン名でアクセスしているため、セキュリティ警告が表示されています。本番環境では、DNSサーバにレコード作成後、ドメイン名でのアクセスを行い、ルート証明書をクライアント側に配布することにより、警告表示を抑制します。
今回、名前解決の設定までは行っておらず、ALBのドメイン名でアクセスしているため、セキュリティ警告が表示されています。本番環境では、以下の対応により警告を解消します。
-
DNSレコードの作成
DNSサーバにALBのエイリアスレコードを作成し、独自ドメイン名でアクセス可能にする -
ルート証明書の配布
ADCSのルート証明書をクライアント端末に配布する




























































