本文へスキップ
ecdsa.com
GNU Wget (GnuTLS build); the alias is the OpenSSL build's wordingcurl

エラーメッセージ

The certificate's owner does not match hostname 'api.example.com'

別の表記

  • ERROR: no certificate subject alternative name matches

GnuTLS でビルドされた wget はこの行を出力します。OpenSSL でビルドされた wget は「ERROR: no certificate subject alternative name matches」と出力し、次の行に「requested host name '<host>'.」が続きます。表示されるホストは、URL に指定したものです。

このエラーの意味

証明書の検証自体は成功しましたが、証明書が URL のホストとは別の名前に対して発行されているため、wget は処理を中止します。ホストは、証明書のサブジェクト代替名拡張に含まれる DNS 名と比較されます。現在の CA はすべて、証明書がカバーする名前をこの拡張に記載しています。wget は終了ステータス 5 で終了します。

発生する理由

修正方法

  1. 1.

    証明書がカバーする名前を一覧表示する

    subjectAltName のエントリを URL のホストと比較してください。

    bash
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \
      | openssl x509 -noout -ext subjectAltName
  2. 2.

    不足している名前を含めて証明書を再発行する

    クライアントが使うすべてのホスト名を証明書のリクエストに追加し、その後デプロイしてリロードしてください。

    bash
    sudo certbot certonly --nginx -d example.com -d www.example.com -d api.example.com
  3. 3.

    証明書に記載されている名前を使う

    記載されている名前でサーバーにアクセスできる場合は、IP アドレスやエイリアスの代わりにその名前を URL に使ってください。

    bash
    # Download through a name the certificate lists, not an IP or alias
    wget https://www.example.com/file.tar.gz

関連するエラー

署名エラーデータベースをすべて見る