4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

「Develop fun!」を体現する Works Human Intelligence #2Advent Calendar 2020

Day 15

ACM PrivateCAをAzureに上に作成したRootCA(ADCS)の下位CAにしてみた

Last updated at Posted at 2020-12-14

本記事は株式会社Works Human Intelligenceのアドベントカレンダー、「Develop fun!」を体現する Works Human Intelligence #2の15日目になります。
弊社ではアドベントカレンダーを2枚実施しておりますので、1枚目もぜひご覧ください!

#なにこれ

AWSに構築されているPrivateCAをAzureに構築されているRootCAの下位CAとして利用するために
CA証明書を発行し、インポートした記録です。
webに情報が少なかったので共有の意味を込めて記事にいたします。

本当はサーバールーム移設作業を絶賛行っており内容も盛りだくさんなので書こうと思ったのですが
時間が足りず諸般の事情により見送りました。

#前提

  • AzureADCSにてRootCAが作成済み
  • AWS上にてACMPCAが作成されている(階層構造は無し)

#手順概要

  • ACMPCAにて署名リクエストCSRを取得
  • RootCAに署名リクエストと取り込む
  • RootCAにてリクエストから証明書を発行する
  • 発行された証明書をPEM形式でエクスポートする
  • RootCAのCA証明書をPEM形式でエクスポートする
  • ACMPCAに署名された証明書をインポートする
  • ACMPCAから証明書を発行し、階層化されているかを確認する

ではやっていきましょう。

#構築

ACMPCAにて署名リクエストCSRを取得

AWS PCAのプライベートCAの画面を開きます

image.png
対象のCAを選択し
アクション→CA証明書をインポートする→「外部プライベートCA」を選択
image.png
CSRが表示されるのでその内容をコピーする
image.png

##ACMPCAにて署名リクエストCSRを取得
RootCA(ADCS)の起動している端末(インスタンス)にアクセスする。
先程コピーしたCSRの内容をメモ帳にペーストし「REQ」ファイルとして保存する(あるいはCSRファイルを配置する)

image.png

certsrv.mscを起動する。
起動したらRootCAを選択し右クリック→All Tasks → Submit new request

image.png
先程作成したREQファイルを選択する
image.png
するとPendin Requestsに追加される

##RootCAにてリクエストから証明書を発行する

追加されたPending Requestsを選択し右クリック
All Tasks -> Issue
を選択し、証明書を発行する
image.png
するとIssued Certificatesに証明書が追加される
image.png
確かにACMPCAに対する証明書が作成されました!

##発行された証明書をPEM形式でエクスポートする

発行された証明書をダブルクリック→Detailsのタブを選択→Copy to Fileを選択
image.png
次のようにダイアログに従って進めていく
image.png
フォーマットは[Base-64 encoded X.509]を選択する
image.png
image.png
image.png
これでエクスポートが完了する①。中身を確認すると次のようになっている(これを後でPCAにインポートする)
image.png
##RootCAのCA証明書をPEM形式でエクスポートする

この証明書はチェーン証明書としてPCAにインポートする証明書になる。
C:\Windows\System32\CertSrv\CertEnroll
を開き、RootCAのルート証明書を選択する。バイナリデータの場合(今回)一度Base-64 encordedに変更して上げる必要がある。
対象のルート証明書をダブルクリック→Detailsのタブを開き[Copy to File...]をクリックする。
先程と同様のダイアログが表示されるので[Base-64 encoded]を選択して証明書をエクスポートする。②

##ACMPCAに署名された証明書をインポートする
準備は整いましたので署名された証明書をインポートしていきます。

ACMPCAの画面を開き
証明書本文の欄に①のRootCAで署名されたPCAの証明書をコピペ
証明書チェーンの欄に②のRootCAのCA証明書をコピペ
する。[続行]をクリックし確認画面を表示。
インポートを完了させる
image.png
##ACMPCAから証明書を発行し、階層化されているかを確認する
CA証明書のインポートが出来たら、実際に証明書をエクスポートしてみる。
Certificate Managerを開き[証明書のリクエスト]をクリック
image.png
プライベート証明書を選択
image.png
作成したCAを選択
image.png
今回は検証として midnight.worksというホストの証明書を発行してみる
image.png
後は内容を確認し、証明書を発行。
発行されているのを確認。アクション→エクスポートを選択する
image.png

パスフレーズを要求されるので適当なパスフレーズを入力(空欄不可。後にサーバーに配置した際に必要になります)
すると次にように証明書が出力されるのでサーバーに配置してみます。
image.png
それぞれ

  • 証明書
  • チェーン証明書
  • 秘密鍵
    となっております。

###サーバーへの配置

実際にサーバーに配置してみます。今回は検証用の端末に配置。

root@midnight:/etc/ssl/certs# ls *acm* -lth
-rw-r--r-- 1 root root 2.8K Oct  6 12:24 midnight-acm-chain.pem
-rw-r--r-- 1 root root 1.4K Oct  6 12:23 midnight-acm.pem
root@midnight:/etc/ssl/certs# ls ../private/*acm* -lth
-rw-r--r-- 1 root root 1.9K Oct  6 12:24 ../private/midnight-acm.key
root@midnight:/etc/ssl/certs#
  • 証明書 midnight-acm.pem
  • チェーン証明書 midnight-acm-chain.pem
  • 秘密鍵 midnight-acm.key

として配置。このサーバーではapacheを利用しているのでapacheのSSLに関するCONFIGを書き換える
配置、設定変更が完了したら、サービスを再起動する。その際にエクスポートの際に求められたパスフレーズを入力する必要があります。

###ルート証明書のインポート

アクセスするローカルマシンにRootCAの証明書をインポートする。
ルート証明書のCERファイルを右クリック→証明書のインストール
保存場所をローカルユーザーに変更、次へを押し、「信頼できるルート証明期間」を選択する

image.png

後はダイアログに従ってインストールを行う。
Windowsの検索画面に「証明書」と入力して「ユーザー証明書の管理を開く」
「信頼されたルート証明期間」→「証明書」を選択
「作成したRootCA名」があるのを確認する
###確認

実際にブラウザからアクセスしてみる。

  • HTTPS通信ができる
  • 証明書のパスが階層化されている

ので無事にACMPCAを下位CAとして利用することができていることが確認できた。

image.png

無事下位CAにすることができ、証明書の発行を行うことができました。

#終わりに

ここまで読んでいただきありがとうございました!
記事を書くのは初めてでしたがいい経験になりました。
ご興味のある方ぜひとも一緒に仕事しましょう!

4
0
0

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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?