Active Directory 証明書サービス(AD CS)で作成したサーバ証明書がEdgeやChromeで蹴られるとき

PoC内のWebサーバ用に、普通のCSと同じ手順を使い(?)AD CSでWebサーバ証明書を作ると、『NET::ERR_CERT_COMMON_NAME_INVALID』にて蹴られてしまうことに気付きました。

証明書の中身やチェーンの状況、CA証明書のインストール状態を見ても問題は無いような感じです。

暫く嵌まったのですが、証明書内にSAN属性を登録していない場合、本事象が発生する事がわかりました。

以下、対処方法を記します。

  1. テキストファイル『openssl-san.txt』を作る
    以下手順およびファイル内の”contoso.com”は環境に合わせて変更下さい

    [req]
    default_bits=2048
    distinguished_name=req_distinguished_name
    req_extensions=v3_req
    
    [ v3_req ]
    basicConstraints=CA:FALSE
    keyUsage=nonRepudiation, digitalSignature, keyEncipherment
    subjectAltName=@alt_names
    
    [req_distinguished_name]
    countryName=Country Name (2 letter code)
    stateOrProvinceName=State or Province Name (full name)
    localityName=Locality Name (eg, city)
    organizationName=Organization Name (eg, company)
    organizationalUnitName=Organizational Unit Name (eg, section)
    commonName=Common Name (e.g. server FQDN or YOUR name)
    commonName_max=64
    
    [alt_names]
    DNS.1=contoso.com
    DNS.2=*.contoso.com

     

  2. CSRを作成
  3. 出来上がったCSRファイル、『contoso.com.csr』をAD CSに喰わせる
  4. AD CSから証明書ファイルをダウンロードし、秘密鍵『contoso.com.key』と併せてWebサーバに適用
  5. AD CSからCA証明書を入手し、クライアントに配布

以上です。