0
0

More than 1 year has passed since last update.

ACM for Nitro Enclaves が Apache HTTP ウェブサーバーのサポートを開始したので試してみる

Last updated at Posted at 2022-09-27

ACM for Nitro Enclaves が Apache HTTP ウェブサーバーのサポートを開始

ドキュメント

やってみる

ドキュメントに従って試してみました。

EC2

いずれかの方法でEC2を準備します。

a.AWS Marketplace から Nitro Enclaves AMI 用の ACM を使用する。
b.RPM パッケージを使用して Nitro Enclaves 用の ACM とウェブサーバーをインストールする。

こんかいは、b.の方法で実施します。

利用可能なインスタンスタイプを指定します。

スクリーンショット 2022-09-26 19.24.13.png

Nitro Enclave を有効化します。

スクリーンショット 2022-09-26 19.06.42.png

SSH などで入り、Amazon Linux Extras リポジトリから Nitro Enclaves 用の ACM をインストールします。

# aws-nitro-enclaves-cliAmazon Linux Extras ライブラリでトピックを有効にします。
$ sudo amazon-linux-extras enable aws-nitro-enclaves-cli

# Apache と SSLモジュールをインストールします。
$ sudo yum -y install httpd mod_ssl

# Amazon Linux Extras ライブラリから Nitro Enclaves 用の ACM をインストールします。
$ sudo yum install aws-nitro-enclaves-acm -y

IAM ロールを準備する

次の信頼関係を付与したIAMロールを準備します。

IAMロール:信頼関係
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

IAMロールとACM証明書を紐付けます。

$ aws ec2 --region ap-northeast-1 associate-enclave-certificate-iam-role --certificate-arn <certificate_ARN> --role-arn <role_ARN>

{
    "CertificateS3BucketName": "aws-ec2-enclave-certificate-ap-northeast-1-prod",
    "CertificateS3ObjectKey": "arn:aws:iam::XXXXXXXXXXXX:role/acm-role/arn:aws:acm:ap-northeast-1:XXXXXXXXXXXX:certificate/XXX-XXX-XXX-XXX",
    "EncryptionKmsKeyId": "XXX-XXX-XXX-XXX-XXX"
}

証明書と暗号化キーにアクセスするIAMポリシーを作成しロールに付与する。

IAMポリシー:許可
{
  "Version": "2012-10-17",
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
        "s3:GetObject"
        ],
        "Resource": ["arn:aws:s3:::<CertificateS3BucketName>/*"]
    },
    {
        "Effect": "Allow",
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": "arn:aws:kms:ap-northeast-1:*:key/<EncryptionKmsKeyId>"
    },
    {
         "Effect": "Allow",
         "Action": "iam:GetRole",
         "Resource": "arn:aws:iam::<123456789012>:role/<acm-role>"
    }
  ]
}

EC2にIAMロールをアタッチする。

#インスタンスプロファイルを作成する。
$ aws iam create-instance-profile --instance-profile-name acm-instance-profile

#IAMロールにインスタンスプロファイルを追加する。
$ aws iam add-role-to-instance-profile --instance-profile-name acm-instance-profile --role-name acm-role

#EC2インスタンスにインスタンスプロファイルをアタッチする。
$ aws ec2 --region ap-northeast-1 associate-iam-instance-profile --instance-id <instance_id> --iam-instance-profile Name=acm-instance-profile

Nitro Enclaves に ACM を使用するように Web サーバーを構成する

Nitro Enclaves の構成ファイルをリネームする。

$ sudo mv /etc/nitro_enclaves/acm-httpd.example.yaml /etc/nitro_enclaves/acm.yaml

リネームした構成ファイルを開き、certificate_arnにACM証明書のarnを記述し、保存する。

/etc/nitro_enclaves/acm.yaml
certificate_arn:"<ACM証明書のarn>"

Apache HTTPサーバーのの構成ファイルを編集する。

/etc/httpd/conf.d/httpd-acm.conf
<VirtualHost *:443>
ServerName <www.example.com>
SSLEngine on
SSLProtocol -all +TLSv1.2
SSLCertificateKeyFile "/etc/pki/tls/private/localhost.key"
SSLCertificateFile "/etc/pki/tls/certs/localhost.crt"
</VirtualHost>

Apache HTTP サーバーの構成ファイルをリネームする。

$ sudo mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/httpd-acm.conf

ACM for Nitro Enclaves サービスを開始し、インスタンスの起動時に自動的に開始されるようにする。

$ sudo systemctl start nitro-enclaves-acm.service
$ sudo systemctl enable nitro-enclaves-acm

テストする。

$ curl https://www.example.com
0
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
0
0