はじめに
CloudFrontで外部証明書を使う要件があり、
GlobalSignのクイック認証SSLで証明書を発行し、
AWS Certificate Manager(以下ACM)にインポートしました。
クイック認証SSL
https://jp.globalsign.com/service/ssl/quickssl.html
GlobalSignの証明書はCloudFrontに対応
https://jp.globalsign.com/info/news_press/2013/07/463.html
CSR作成から証明書インポートするまでのメモを公開します。
2019年1月時点の情報となります。
証明書の発行依頼
CSR と秘密鍵のペアを作成し、証明書の発行を依頼します。
% openssl genrsa -des3 -out private.key 2048
% openssl req -new -key private.key -out cloudfront.csr
Enter pass phrase for private.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter /your/path/cloudfront.csr is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:JP
State or Province Name (full name) []:xxxxx
Locality Name (eg, city) []:xxxxx
Organization Name (eg, company) []:xxxxx
Organizational Unit Name (eg, section) []:xxxxx
Common Name (eg, fully qualified host name) []:*.example.com
Email Address []:postmaster@example.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
証明書発行
クリック認証SSLに申し込みを行います。
申込時に作成したCSRが必要になります。
審査などクリアすると、発行された証明書がメールで届きます。
インポートの準備
証明書チェーンを作成し、さらにAWSにインポート可能な形式へ証明書を変換します。
-
メール本文中の証明書本体を
domain.crt
として保存します。 -
メール本文中の中間証明書を
intermediate.cer
として保存します。 -
https://jp.globalsign.com/repository/からルート証明書(
rootcacert_r1.cer
)をダウンロードします。 -
中間証明書とルート証明書を結合し
chain.cer
を作成します。cat intermediate.cer rootcacert_r1.cer > chain.cer
-
domain.crt
とchain.cer
を pem 形式に変換します。openssl x509 -in ./domain.crt -outform pem -out ./domain.pem openssl x509 -in ./chain.cer -outform pem -out ./chain.pem
-
秘密鍵のパスフレーズを外し、pem 形式にします。
openssl rsa -in ./private.key -outform PEM -out private.key.pem # パスフレーズの入力が必要
証明書のインポート
-
AWS Console で
us-east-1
リージョンを選択し、「AWS Certificate Manager」から「証明書のインポート」をクリックします。 -
PEM 形式の証明書(
domain.pem
)、秘密鍵(private.key.pem
)、証明書チェーン(chain.pem
)を入力します。 -
インポートします。
補足
この手順で発行する証明書はSNI対応しているものになります。
https://aws.amazon.com/jp/cloudfront/custom-ssl-domains/
CSRの作成方法は以下にまとめられていますが、2019年4月時点でAWS向けの手順はまとめられていません。
https://jp.globalsign.com/support/ssl/?cat=csr