■トラストストアとは🤔?
コンピュータ、OS、ブラウザ、アプリケーションが「信頼できる」とみなす証明書(ルート証明書や中間CA証明書)を格納したデータベース(ファイル)のこと
■構築手順
-
事前準備
-
PrivateCAで各証明書を発行する
AWS Private CA を基礎から学び、CloudFormationで組んでみる を参照 -
トラストストア用S3バケットを作成する
→バケットポリシーは設定不要(トラストストアからのみアクセス出来れば良いため)
-
-
構築
-
トラストストア用S3バケットに下位CA証明書を格納する
以下をCloudShellで実行する# 下位CAの証明書情報を取得して、pemファイルを作成する aws acm-pca get-certificate-authority-certificate \ --certificate-authority-arn <下位CAのARN> | \ jq -r '.Certificate, .CertificateChain' > <pemファイル名>.pem # 作成したpemファイルをトラストストア用S3バケットへアップロードする aws s3 cp <pemファイル名>.pem s3://<バケット名>/<pemファイル名>.pem # CloudShellからファイル削除 rm -f <pemファイル名>.pem -
トラストストア用S3バケットを指定してトラストストアを構築する
- AWSマネージドコンソール
EC2 > トラストストア > トラストストアを作成- トラストストアの名前
任意の名前を設定する - S3URI
トラストストア用S3バケットに格納したpemファイルを指定する - 証明書失効リスト
漏洩した証明書を失効としてリストに登録することでその証明書でのアクセスができなくなる - リソース共有
別アカウントに共有できる
- トラストストアの名前
- CFn
- AWSマネージドコンソール
-
```yaml
Resources:
# ----------------------------------------------------------
# TrustStore
# ----------------------------------------------------------
TrustStore:
Type: AWS::ElasticLoadBalancingV2::TrustStore
Properties:
CaCertificatesBundleS3Bucket: !Ref ${BuketName} # トラストストア用S3バケット名
CaCertificatesBundleS3Key: !Ref ${PemFileName} # pemファイル名
Name: truststore
Tags:
- Key: Name
Value: truststore
```
■トラストストア用のS3バケットポリシーについて
- 基本的に、バケットポリシーは設定不要でOK
- PrivateCAは、証明書を発行するだけなので、S3へアクセスすることはないため
- ALBは、S3ではなくトラストストアから情報を取得するため
- CRL(証明書失効リスト)の自動更新機能を有効化する場合は、PrivateCAからのアクセス許可が必要になる