脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

openssl.cnfは編集せずにオレオレ証明書をSAN対応させてchrome58へinstallする

前回自己証明書の作成方法を書いたんですが、IEとかはその証明書を使えば警告なしでアクセスできるようになるんですがChromeの場合は以下のような警告が出てしまいます
f:id:portaltan:20171016173917p:plain

これはChromeが今年の春らへんにリリースしたv58から証明書の中の項目のCN(Common Name)の利用を非推奨化し、SAN(Subject Alternative Name)の方を利用しなさいという仕様になったためです

手順の途中でFQDNを入力するところがあったと思いますが、通常ではここで入力した値はCNという項目の値になります
しかしChromeではCNではなくSANの方へ入力したいので少し追加で操作が必要です

調べているとopenssl.cnfを編集する方法がよく出てきますが、サイトによって編集箇所や記述も違い、かつ編集量も多いので、色々調べていった結果以下のようにSANの情報だけ別ファイルにエクステンションとして切り出し、そのファイルをオプションで読み込ませてやることでopenssl.cnfは編集せずSAN対応版の証明書を作成することができました

# 秘密鍵とCSRは普通に作成(以前作成したものでよい)

## extension fileの作成
$ echo subjectAltName=DNS:${FQDN} > san.ext
 
# 自己証明書の作成
$ openssl x509 -days 3650 -req -signkey ${name}.key < ${name}.csr > ${name}.crt -extfile san.ext
  • ${FQDN}にはCNに入力していたFQDN(fizzbaz.foobar.comみたいな)を入力
  • ${name}は作成した秘密鍵CSR等の名前をそれぞれいれる

本当にSAN情報が付加されているかは以下のコマンドで確認できます

$ openssl x509 -text -noout -in ${name}.crt
Certificate:
     .
     .
    Signature Algorithm: sha256WithRSAEncryption
     .
     .
      X509v3 extensions:
         X509v3 Subject Alternative Name:
             DNS:fizzbaz.foobar.com
     .
     .