1. ホーム
  2. google-chrome

[解決済み】自己署名付きlocalhost証明書をChromeが受け入れるようにする方法

2022-03-18 07:15:38

質問

ローカルホストのCNに自己署名のSSL証明書を作成しました。Firefoxはこの証明書について最初に文句を言った後、予想通りこの証明書を受け入れました。しかし、ChromeとIEは、Trusted Rootsの下でシステムの証明書ストアに証明書を追加した後でも、この証明書を受け入れようとしません。Chrome の HTTPS ポップアップで "View certificate information" をクリックすると、証明書が正しくインストールされたと表示されるにもかかわらず、証明書は信頼できないと主張されます。

どうすれば、Chromeが証明書を受け入れ、文句を言わなくなるのでしょうか?

解決方法は?

のみ 5 openssl コマンド を使えば、こんなことが実現できます。

( ブラウザのセキュリティ設定を変更しないでください。 )

以下のコードで、(1)自分のCAになり、(2)そしてCAとしてSSL証明書に署名することができます。(3) それから、CA証明書(SSL証明書ではなく、あなたのサーバーに入るもの)をChrome/Chromiumにインポートする。(そう、これはLinuxでも動作します)。

注:Windowsの場合、いくつかの報告によると openssl と一緒に実行する必要があります。 winpty を使用すると、クラッシュを回避することができます。

######################
# Become a Certificate Authority
######################

# Generate private key
openssl genrsa -des3 -out myCA.key 2048
# Generate root certificate
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 825 -out myCA.pem

######################
# Create CA-signed certs
######################

NAME=mydomain.com # Use your own domain name
# Generate a private key
openssl genrsa -out $NAME.key 2048
# Create a certificate-signing request
openssl req -new -key $NAME.key -out $NAME.csr
# Create a config file for the extensions
>$NAME.ext cat <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $NAME # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
DNS.2 = bar.$NAME # Optionally, add additional domains (I've added a subdomain here)
IP.1 = 192.168.0.13 # Optionally, add an IP address (if the connection which you have planned requires it)
EOF
# Create the signed certificate
openssl x509 -req -in $NAME.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial \
-out $NAME.crt -days 825 -sha256 -extfile $NAME.ext

おさらいすると

  1. CAになる
  2. CAの証明書+鍵を使って証明書に署名する
  3. インポート myCA.pem として、quot;Authority" ( ない を、Chromeの設定(設定 > 証明書の管理 > 認証局 > インポート)で、"Your Certificates"に入力します。)
  4. を使用します。 $NAME.crt$NAME.key ファイルをサーバーに保存します。

余分な手順(少なくともMacの場合)。

  1. ファイル>インポートファイル"でCA証明書をインポートし、リスト内で右クリックして展開し、"信頼"を選択し、"常に"を選択してください。
  2. 追加 extendedKeyUsage=serverAuth,clientAuth 以下 basicConstraints=CA:FALSE と同じになるように設定してください。 $NAME セットアップを要求されたとき

作品を確認することができます を使用して、証明書が正しくビルドされたことを確認します。

openssl verify -CAfile myCA.pem -verify_hostname bar.mydomain.com mydomain.com.crt