この記事では、CentOS 6(ここでは6.9)でChrome 58以降のバージョンに対応したSSL自己証明書を作成する方法をご解説します。
Google Chrome をバージョン58 にアップデートすると、SSL自己証明書(オレオレ証明書)を使っているサイトで「NET::ERR_CERT_COMMON_NAME_INVALID」といったエラーが表示されることがあります。
これは、Chromeが該当のバージョンからコモンネームの設定を非推奨化したためです。自己証明書を作成する際、SubjectAltName(SAN)の設定をすることでエラーが表示されないようにすることができます。
目次
設定手順
まずユーザーのホーム>ディレクトリなどに移動し、以下のコマンドで秘密鍵を作成します。
$ cd ~/
$ sudo openssl genrsa -des3 -out server.key 2048 -sha256
SAN対応の証明書を作成するために設定ファイルを作成します。
$ cd /etc/pki/tls/
$ sudo cp openssl.cnf openssl_san.cnf #OpenSSLの設定ファイルを別名でコピー
新しく作成したファイルを開き、該当箇所を以下のように編集します。
$ sudo vi openssl_san.cnf
...
[ req ]
default_bits = 2048
default_md = sha256
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca
req_extensions = v3_req #コメント解除
...
[ usr_cert ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
nsComment = "OpenSSL Generated Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier=keyid,issuer:always #:alwaysを追加
...
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names #追加
...
[ alt_names ] # v3_req直下にセクション追加
DNS.1 = hitori-josys.me
DNS.2 = *.hitori-josys.me
...
以下のコマンドで証明書を作成します。『-config』のオプションを使用し、前項で作成した新しい設定ファイルから証明書を作成します。
# openssl req -new -key server.key -x509 -days 3650 -out server.crt -sha256 -subj '/C=JP/ST=Tokyo/L=Shinjuku-ku/O=-/CN=*.hitori-josys.me' -extensions v3_req -config /etc/pki/tls/openssl_san.cnf
作成した証明書の内容を確認します。証明書のパスは自身の環境に合わせてください。
$ openssl x509 -text -noout -in ~/server.crt
証明書の内容を確認し、以下のようにSANに関する記載があれば完了です。秘密鍵と証明書を任意の場所設置し、Apacheの設定ファイルから読み込むようにしましょう。自身のブラウザに新しく作成した自己証明書をインストールすことも忘れずに。
…
X509v3 Subject Alternative Name:
DNS:hitori-josys.me, DNS:*.hitori-josys.me
…