てくなべ (tekunabe)

ansible / network automation / 学習メモ

[AWS] ALB への証明書インポート時の互換性エラー(Common Name 未設定の凡ミス)

はじめに

ALB のリスナーの設定として、証明書をインポートしようとしたら以下のエラーが発生しました。

ただの凡ミスだったのですが、その症状と原因と対処です。

同じエラーメッセージでも複数の原因があるかと思います。

症状

表示されたのは以下の証明書の互換性エラーです。

f:id:akira6592:20210102115535p:plain
証明書の互換性エラー

新しいリスナーの追加。 各 リスナー には 転送, リダイレクト, 固定レスポンス タイプのアクションの 1 つが含まれている必要があります。 リスナーの作成中にエラーが発生しました インポートされた証明書の設定に互換性がないため、リスナーの使用可能な証明書のリストには表示されません。別の証明書を選択またはアップロードして、やり直してください。

先に同じのもを ACM に登録してもリスナー設定画面ではその証明書は一覧に表示されませでした。

原因

最初は鍵長などを疑ったのですが、結局 CSR 生成時に Common Name を空してしまったためという凡ミスです。

対処

Common Name を指定して CSR の再生成と、証明書の再生成してインポートし直したところ無事にインポートされました。

Common Name には ALBのDNS名(例: hogehoge-elb-xxxxxxxxxx.us-east-2.elb.amazonaws.com )を指定しました。

# CSR の生成
$ openssl req -new -key ./server.key -out ./server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter 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) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:
Common Name (eg, fully qualified host name) []:     ★ここに ALB の DNS 名を指定
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:

# 証明書の生成
$ openssl x509 -in server.csr -days 365 -req -signkey server.key -out server.crt
Signature ok
subject=/C=JP/CN=hogehoge-elb-xxxxxxxxxx.us-east-2.elb.amazonaws.com
Getting Private key