🦈

AWS-CLIでCertificate Managerに証明書がインポートできない

2021/05/19に公開

やりたかったこと

awsでClient VPNを使用して固定IPでの通信を実現しようと思い、Client VPNで必要な相互認証のための、証明書を独自に発行。
acmにインポートしたが、エラーで通らなかったので解決策を忘備録として残します。

エラー内容

まず、証明書の発行

$ git clone https://github.com/OpenVPN/easy-rsa.git
$ cd easy-rsa/easyrsa3
$ ./easyrsa init-pki
$ ./easyrsa build-ca nopass

# サーバー証明書とクライアント証明書の発行
$ ./easyrsa build-server-full test-server nopass
$ ./easyrsa build-client-full test-client nopass

acmに証明証のインポートをしようとしたところ、

aws acm import-certificate --certificate file://pki/issued/test-server.crt --private-key file://pki/private/test-server.key --certificate-chain file://pki/ca.crt --region ap-northeast-1

aws acm import-certificate --certificate file://pki/issued/test-client.crt --private-key file://pki/private/test-client.key --certificate-chain file://pki/ca.crt --region ap-northeast-1

以下のエラーが出てしまった。

Invalid base64: "-----BEGIN CERTIFICATE-----
#...省略

解決

aws-cli v1aws-cli v2 で変更が入ったため発生していたようです。
詳しくは以下のissueにあります。
https://github.com/aws/aws-cli/issues/4978

対応は、file:// -> fileb://に変更するだけ

aws acm import-certificate --certificate fileb://pki/issued/test-server.crt --private-key fileb://pki/private/test-server.key --certificate-chain fileb://pki/ca.crt --region ap-northeast-1
{
    "CertificateArn": ...省略
}

こう出ればしっかりとインポートされているのでwebコンソールで確認してみてください

Discussion