localhostのCNに自己署名入りのSSL証明書を作成しました。Firefoxでは、最初は文句を言っていましたが、予想通りこの証明書を受け入れました。しかし、ChromeとIEは、システムの証明書ストアの「信頼できるルート」に証明書を追加しても、この証明書を受け入れません。Chrome'のHTTPSポップアップで"View certificate information"をクリックすると、証明書が正しくインストールされていると表示されるにもかかわらず、証明書を信頼できないと主張します。
Chromeが証明書を受け入れ、文句を言わないようにするにはどうしたらいいでしょうか?
Macでは、キーチェーンアクセスユーティリティーを使って自己署名証明書をシステムキーチェーンに追加すると、Chromeがそれを受け入れるようになります。ステップバイステップの手順はこちらにありました。
Google Chrome, Mac OS X and Self-Signed SSL Certificatesを参照してください。
基本的には
Linuxをお使いの方は、こちらの公式Wikiページもご参照ください。
基本的には
以下のコマンドを実行すると、証明書が追加されます(YOUR_FILEはエクスポートしたファイルです)。
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE
すべての証明書を一覧表示するには、次のコマンドを実行します。
certutil -d sql:$HOME/.pki/nssdb -L
それでもうまくいかない場合は、このバグの影響を受けている可能性があります。 問題55050:Ubuntu SSLエラー8179を参照してください。
追伸:上記のコマンドを使用する前に、libnss3-tools
がインストールされているかどうかも確認してください。
もし持っていない場合は、以下の方法でインストールしてください。
sudo apt-get install libnss3-tools # on Ubuntu
sudo yum install nss-tools # on Fedora, Red Hat, etc.
おまけに、以下のような便利なスクリプトが使えます。
$ cat add_cert.sh
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n $1 -i $1
$ cat list_cert.sh
certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs
$ cat download_cert.sh
echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p'
使用法です。
add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]
--auto-ssl-client-auth
パラメータを指定してChromeを実行する。
google-chrome --auto-ssl-client-auth
。
サイトが提供されているアドレスが証明書と同じであることを確認していますか?私もChromeと自己署名証明書で同じ問題が発生しましたが、最終的には証明書上のドメイン名の検証に非常にこだわっていたことがわかりました(当然ですが)。
Chromeは独自の証明書ストアを持っておらず、Windowのものを使用しています。しかし、Chromeには証明書をストアにインポートする方法がないので、代わりにIEで証明書を追加する必要があります。
Google Chromeでの証明書のインストールを参照してください。
Internet Explorerへの証明書のインストールを参照してください。
また、自己署名証明書を作成するためのいくつかの異なるアプローチについては、こちらを参照してください(言及されていないので、IISを使用していると仮定しています)。