web-dev-qa-db-ja.com

Chromeに自己署名ローカルホスト証明書を許可する

Localhost CN用の自己署名SSL証明書を作成しました。期待どおりに、Firefoxは最初にそれについて不平を言った後にこの証明書を受け入れます。ただし、ChromeとIEは、信頼されたルートの下のシステム証明書ストアに証明書を追加した後でも、それを受け入れることを拒否します。 ChromeのHTTPSポップアップで[証明書情報の表示]をクリックしたときに証明書が正しくインストールされていると表示されていても、証明書は信頼できないと主張しています。

Chromeに証明書を受け入れてもらい、その不平を言うのをやめるにはどうすればよいですか。

967
pjohansson

localhostのみ:

これをあなたのクロムに貼り付けるだけです。

chrome://flags/#allow-insecure-localhost

強調表示されたテキストが表示されるはずです。localhostからロードされたリソースに対して無効な証明書を許可する

Enableをクリックしてください。

536
Chris

これは私のために働いた:

  1. Chromeを使用して、HTTPS経由でサーバー上のページにアクセスし、赤い警告ページを過ぎて続けます(まだ行っていないと仮定します)。
  2. Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificatesを開きます。
  3. Authoritiesタブをクリックし、下にスクロールして、証明書に付けた組織名の下に自分の証明書を見つけます。
  4. 選択して[編集]をクリックし( _ note _ :最近のバージョンのChromeでは、ボタンは[編集]ではなく[詳細]になっています)、すべてのチェックボックスをオンにして[OK]をクリックします。 Chromeを再起動する必要があります。

あなたは今あなたのページにNice green lockをかけるべきです。

編集: 新しいマシンでこれを再試行しましたが、赤い信頼できない証明書ページから続行するだけで、証明書の管理ウィンドウに証明書が表示されませんでした。私は次のことをしなければなりませんでした:

  1. 信頼できない証明書があるページ(https://は赤で表示されています)で、カギ>証明書情報の順にクリックします。 注: chromeの新しいバージョンでは、Developer Tools > Securityを開いてView certificateを選択する必要があります。
  2. Details tab > Exportをクリックしてください。ファイル形式としてPKCS #7, single certificateを選択してください。
  3. それから私の元の指示に従ってManage Certificatesページにアクセスしてください。 Authorities tab > Importをクリックして証明書をエクスポートしたファイルを選択し、必ず選択してくださいPKCS #7, single certificateファイルタイプとしてを選択します。
  4. 認証ストアを要求されたら、Trusted Root Certificate Authoritiesを選択します。
  5. すべてのチェックボックスをオンにして[OK]をクリックします。 Chromeを再起動してください。
464
kellen

CHROME 58+のアップデート(2017-04-19リリース済み)

Chrome 58現在、commonNameのみを使用してホストを識別しています 削除中ここでの議論 および ここでのバグ追跡 を参照してください。以前は、subjectAltNameはマルチホスト証明書にのみ使用されていたため、一部の内部CAツールにはマルチホスト証明書が含まれていません。

過去に自己署名証明書が正常に機能していたが、Chrome 58で突然エラーを生成し始めた場合、これが理由です。

そのため、自己署名証明書(または自己署名CAによって署名された証明書)を生成するために使用する方法は何でも、サーバーの証明書に適切なsubjectAltNameおよび/またはDNSエントリ/エントリを持つIPが含まれていることを確認してください単一のホスト用であっても

Opensslの場合、これは OpenSSL config (Ubuntuでは/etc/ssl/openssl.cnf)が単一のホストに対して次のようなものになることを意味します。

[v3_ca]   # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com

または複数のホストの場合:

[v3_ca]   # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com, DNS:Host1.example.com, DNS:*.Host2.example.com, IP:10.1.2.3

Chromeの証明書ビューアー(F12の[セキュリティ]タブに移動)で、Extensionsの下にCertificate Subject Alternative Nameとしてリストされます。

Chrome cert viewer

137
Toby J

Macでは、キーチェーンアクセスユーティリティを使用して自己署名証明書をシステムキーチェーンに追加すると、Chromeがそれを受け入れます。私はここでステップバイステップの説明を見つけました:

Google Chrome、Mac OS X、および自己署名SSL証明書

基本的に:

  1. 鍵のアイコンをXでダブルクリックし、証明書のアイコンをデスクトップにドラッグアンドドロップします。
  2. このファイルを開く(拡張子.cerで終わる)。これにより、証明書を承認できるキーチェーンアプリケーションが開きます。
129
bjnord

UPDATE 11/2017:この答えはおそらくChromeの新しいバージョンのほとんどではうまくいかないでしょう。

2016年2月2日更新:Macユーザー向けのより良い説明書は こちら にあります。

  1. 追加したいサイトで、アドレスバーの赤いロックアイコンを右クリックします。enter image description here

    1. 接続 というラベルの付いたタブをクリックし、次に 証明書情報 をクリックします。

    2. 詳細 タブをクリックし、ボタン ファイルへコピー... をクリックします。これで証明書のエクスポートウィザードが開きます。 次へ をクリックして エクスポートファイル形式 画面に進みます。

    3. DERエンコードバイナリX.509(.CER) を選択し、 次へ をクリックします。

    4. 参照... をクリックして、ファイルをコンピュータに保存します。わかりやすい名前を付けます。 次へ をクリックし、次に 終了 をクリックします。

    5. Chromeの設定を開き、一番下までスクロールして、 詳細設定を表示... をクリックします。

    6. HTTPS/SSL の下にある 証明書の管理... をクリックします。

    7. 信頼されたルート証明機関 タブをクリックし、次に インポート... ボタンをクリックします。これにより証明書のインポートウィザードが開きます。 次へ をクリックして インポートするファイル 画面に進みます。

    8. 参照... をクリックして先ほど保存した証明書ファイルを選択し、次に 次へ をクリックします。

    9. すべての証明書を次のストアに配置します 。選択されたストアは 信頼されたルート証明機関 であるべきです。そうでない場合は、 参照... をクリックして選択します。 次へ および 終了 をクリック

    10. セキュリティ警告で はい をクリックします。

    11. Chromeを再起動してください。

90
kmgdev

Linux

Linuxを使用している場合は、この公式Wikiページにも従うことができます。

基本的に:

  • xの付いた鍵のアイコンをクリックします。
  • 証明書情報を選択してください
  • 詳細タブに移動します
  • エクスポート...をクリックします(ファイルとして保存)

これで、次のコマンドは証明書を追加します(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

P.S上記のコマンドを使用する前に、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

88
kenorb

ページ上の任意の場所をクリックして、BYPASS_SEQUENCEと入力します。

"thisisunsafe"はChromeバージョン65のBYPASS_SEQUENCEです

"badidea" Chromeバージョン62 - 64。

以前のバージョンのChromeでは "danger"が機能していました

入力フィールドを探す必要はありません。入力するだけです。それは奇妙に感じますがそれは働いています。

私はMac High Sierraで試した。

彼らが再びそれを変更したかどうかを二重チェックするためにはLatestクロムに行きなさい ソースコード

BYPASS_SEQUENCEを探すと、現時点では次のようになります。

var BYPASS_SEQUENCE = window.atob('dGhpc2lzdW5zYWZl');

偽装されていますが、実際のBYPASS_SEQUENCEを確認するには、ブラウザコンソールで次の行を実行します。

console.log(window.atob('dGhpc2lzdW5zYWZl'));
87

Macでは、次のようにしてシステムレベルでChromeとSafariから完全に信頼されている証明書を作成できます。

# create a root authority cert
./create_root_cert_and_key.sh

# create a wildcard cert for mysite.com
./create_certificate_for_domain.sh mysite.com

# or create a cert for www.mysite.com, no wildcards
./create_certificate_for_domain.sh www.mysite.com www.mysite.com

上記は、以下のスクリプトと補助ファイルv3.extを使用して サブジェクト代替名の欠落エラーを回避します

自分のルート認証局を使用して完全に信頼された新しい自己署名証明書を作成したい場合は、これらのスクリプトを使用してそれを実行できます。

create_root_cert_and_key.sh

#!/usr/bin/env bash
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

create_certificate_for_domain.sh

#!/usr/bin/env bash

if [ -z "$1" ]
then
  echo "Please supply a subdomain to create a certificate for";
  echo "e.g. www.mysite.com"
  exit;
fi

if [ ! -f rootCA.pem ]; then
  echo 'Please run "create_root_cert_and_key.sh" first, and try again!'
  exit;
fi
if [ ! -f v3.ext ]; then
  echo 'Please download the "v3.ext" file and try again!'
  exit;
fi

# Create a new private key if one doesnt exist, or use the xeisting one if it does
if [ -f device.key ]; then
  KEY_OPT="-key"
else
  KEY_OPT="-keyout"
fi

DOMAIN=$1
COMMON_NAME=${2:-*.$1}
SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
NUM_OF_DAYS=999
openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr
cat v3.ext | sed s/%%DOMAIN%%/"$COMMON_NAME"/g > /tmp/__v3.ext
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext 

# move output files to final filenames
mv device.csr "$DOMAIN.csr"
cp device.crt "$DOMAIN.crt"

# remove temp file
rm -f device.crt;

echo 
echo "###########################################################################"
echo Done! 
echo "###########################################################################"
echo "To use these files on your server, simply copy both $DOMAIN.csr and"
echo "device.key to your webserver, and use like so (if Apache, for example)"
echo 
echo "    SSLCertificateFile    /path_to_your_files/$DOMAIN.crt"
echo "    SSLCertificateKeyFile /path_to_your_files/device.key"

v3.ext

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = %%DOMAIN%%

もう1つのステップ - 自己署名証明書をChrome/Safariで完全に信頼させる方法

自己署名証明書をChromeおよびSafariで完全に信頼できるようにするには、新しい認証局をMacにインポートする必要があります。そうするためには、これらの指示に従うか、またはこの一般的なプロセスに関するより詳細な指示に従ってください mitmproxyウェブサイト上の

あなたはあなたのパスワードの入力を促すこのコマンドを使用して、コマンドラインで、2つの方法のうちの1つを行うことができます。

$ Sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain rootCA.pem

またはKeychain Accessアプリを使用して:

  1. オープンキーチェーンアクセス
  2. 「キーチェーン」リストで「システム」を選択します
  3. [カテゴリ]リストで[証明書]を選択します
  4. [ファイル]メニューの[アイテムのインポート]をクリックします。
  5. 上記で作成したファイル "rootCA.pem"を参照して選択し、[開く]をクリックします。
  6. [証明書]リストで新しくインポートした証明書を選択します。
  7. [i]ボタンをクリックするか、証明書を右クリックして[情報を見る]を選択します。
  8. [信頼]オプションを展開します
  9. [この証明書を使用するとき]を[常に信頼する]に変更します。
  10. ダイアログを閉じると、パスワードの入力を求められます。
  11. ターゲットドメインを使用しているタブをすべて閉じてからもう一度開くと、安全に読み込まれます。

また、証明書を信頼するためにJavaクライアントが必要な場合は、証明書をJavaキーストアにインポートすることで信頼できます。変更された場合には更新する必要があるため、これによってキーストアから証明書がすでに存在する場合は削除されます。もちろん、これはインポートされている証明書に対してのみ行われます。

import_certs_in_current_folder_into_Java_keystore.sh

KEYSTORE="$(/usr/libexec/Java_home)/jre/lib/security/cacerts";

function running_as_root()
{
  if [ "$EUID" -ne 0 ]
    then echo "NO"
    exit
  fi

  echo "YES"
}

function import_certs_to_Java_keystore
{
  for crt in *.crt; do 
    echo prepping $crt 
    keytool -delete -storepass changeit -alias alias__${crt} -keystore $KEYSTORE;
    keytool -import -file $crt -storepass changeit -noprompt --alias alias__${crt} -keystore $KEYSTORE
    echo 
  done
}

if [ "$(running_as_root)" == "YES" ]
then
  import_certs_to_Java_keystore
else
  echo "This script needs to be run as root!"
fi
73
Brad Parks

Macの場合 で、エクスポートタブが表示されない、または証明書を取得する方法が表示されない場合は、これが役に立ちます。

  1. Https://の前にあるカギをクリックします
  2. [接続]タブに移動します
  3. 「証明書情報」をクリック

    今、あなたはこれを見るべきです: Different information of course and yours should be marked as trusted yet (otherwise you probably wouldn't be here)

  4. その小さな証明書アイコンをデスクトップ(またはどこかに)ドラッグします。

  5. ダウンロードされた.cerファイルをダブルクリックしてください、これはあなたのキーチェーンにそれをインポートし、証明書のリストへのキーチェーンアクセスを開くはずです。

    場合によっては、これで十分なので、ページを更新できます。

    さもないと:

  6. 新しく追加した証明書をダブルクリックします。
  7. 信頼のドロップダウンの下にある[この証明書を使用するとき]オプションを[常に信頼する]に変更します。

今問題のページをリロードすれば問題解決されるはずです!お役に立てれば。


から編集します - Wolph

これをもう少し簡単にするために、次のスクリプトを使うことができます( source ):

  1. 次の スクリプトwhitelist_ssl_certificate.sshとして保存します。

    #!/usr/bin/env bash -e
    
    SERVERNAME=$(echo "$1" | sed -E -e 's/https?:\/\///' -e 's/\/.*//')
    echo "$SERVERNAME"
    
    if [[ "$SERVERNAME" =~ .*\..* ]]; then
        echo "Adding certificate for $SERVERNAME"
        echo -n | openssl s_client -connect $SERVERNAME:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | tee /tmp/$SERVERNAME.cert
        Sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" /tmp/$SERVERNAME.cert
    else
        echo "Usage: $0 www.site.name"
        echo "http:// and such will be stripped automatically"
    fi
    
  2. スクリプトを(シェルから)実行可能にします。

    chmod +x whitelist_ssl_certificate.ssh
    
  3. 必要なドメイン用のスクリプトを実行します(URLの全機能をコピー/ペーストするだけです)。

    ./whitelist_ssl_certificate.ssh https://your_website/whatever
    
56
LunaCodeGirl

_更新済み_ 2016年4月3日

Chromiumチームが推奨

https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins#TOC-Testing-Powerful-Features

クイック超簡単ソリューション

セキュリティエラーが発生してもChromeが処理を続行するためにエラーページに入力できる秘密のバイパスフレーズがあります。 thisisunsafe (Chromeの以前のバージョンでは、 badidea と、さらに以前の 危険 )。 DO _ not _ を使用してください正確に理解できない限り使用してください。

ソース:

https://chromium.googlesource.com/chromium/src/+/d8fc089b62cd4f8d907acff6fb3f5ff58f168697%5E%21/ /

window.atob('dGhpc2lzdW5zYWZl')thisisunsafeに解決されることに注意してください)

ソースの最新バージョンは@ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.js およびwindow.atobです。関数はJSコンソールで実行できます。

Chromeチームがバイパスフレーズを変更した理由(初めて)の背景

https://bugs.chromium.org/p/chromium/issues/detail?id=581189

他のすべてが失敗した場合

"Proceed Anyway"オプションが利用できない場合や、バイパスフレーズが機能しない場合の一時的な一時停止の場合、このハックはうまく機能します。

  1. このフラグを有効にしてlocalhostからの証明書エラーを許可します(Chromeはフラグ値を変更した後に再起動が必要です)。

    chrome://flags/#allow-insecure-localhost

    (そして投票の回答 https://stackoverflow.com/a/31900210/430128 @Chrisによる)

  2. 接続したいサイトがlocalhostであれば、完了です。それ以外の場合は、TCPトンネルを設定してポート8090でローカルに待機し、ポート443でbroken-remote-site.comに接続します。socatがインストールされていることを確認し、端末ウィンドウで次のように実行します。

    socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443

  3. ブラウザで https:// localhost:8090 にアクセスします。

39
Raman

テスト環境用

Chromeを起動するときに--ignore-certificate-errorsをコマンドラインパラメータとして使用できます(Ubuntuのバージョン28.0.1500.52で作業中)。

これによりエラーが無視され、警告なしに接続されます。すでにchromeのバージョンを実行している場合は、コマンドラインから再起動する前にこれを閉じる必要があります。そうしないと新しいウィンドウが開きますが、パラメータは無視されます。

テストサーバーには有効な証明書がないため、デバッグを行うときには、この方法でクロムを起動するようにIntellijを構成します。

証明書の確認は重要なセキュリティ機能であるため、このような通常のブラウジングはお勧めしませんが、これは一部の人には役立つ場合があります。

35
Kieran Moore

誰かが指摘したように、ブラウザウィンドウだけではなく、Chromeのすべてを再起動する必要があります。これを行う最も速い方法はタブを開くことです...

chrome://restart

18
DejerNet

WINDOWS 6月/ 2017 Windows Server 2012

私は@Brad Parksの回答に従った。 Windowsでは、Trusted Root Certificates AuthoritiesストアにrootCA.pemをインポートする必要があります。

私は以下の手順を実行しました。

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -newkey rsa:4096 -sha256 -days 1024 -out rootCA.pem
openssl req -new -newkey rsa:4096 -sha256 -nodes -keyout device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 2000 -sha256 -extfile v3.ext

V3.extは次のとおりです。

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
IP.1 = 192.168.0.2
IP.2 = 127.0.0.1

それから、私の場合は自己ホスト型のWebアプリケーションを使用しているので、証明書をIPアドレスとポートにバインドする必要があります。証明書は秘密鍵情報とともにMYストアにあるので、pfx形式にエクスポートします。

openssl pkcs12 -export -out device.pfx -inkey device.key -in device.crt

Mmcコンソール(ファイル/スナップインの追加と削除/証明書/追加/コンピュータアカウント/ローカルコンピュータ/ OK)を使用して、パーソナルストアにpfxファイルをインポートしました。

後で証明書をバインドするためにこのコマンドを使いました(あなたはHttpConfigツールを使うこともできます):

netsh http add sslcert ipport=0.0.0.0:12345 certhash=b02de34cfe609bf14efd5c2b9be72a6cb6d6fe54 appid={BAD76723-BF4D-497F-A8FE-F0E28D3052F4}

certhash =証明書Thumprint

appid = GUID(あなたの選択)

最初に、信頼されたルート証明機関の証明書 "device.crt"をさまざまな方法でインポートしようとしましたが、それでも同じエラーが発生します。

enter image description here

しかし、ドメインの証明書ではなく、ルート認証局の証明書をインポートする必要があることに気付きました。そのため、mmcコンソール(ファイル/スナップインの追加と削除/証明書/追加/コンピュータアカウント/ローカルコンピュータ/ OK)を使用して、信頼できるルート証明機関ストアにrootCA.pemをインポートしました。

enter image description here

Chromeを再起動してください。

Localhostの場合:

enter image description here

またはIPアドレス付き:

enter image description here

私が達成できなかった唯一のことは、それが時代遅れの暗号(写真の赤い四角)を持っているということです。この点で助けは大歓迎です。

MakecertではSAN情報を追加することはできません。 New-SelfSignedCertificate(Powershell)を使えば、SAN情報を追加でき、それも機能します。

17
UUHHIVS

サイトのアドレスが証明書と同じであることを確認していますか? Chromeと自己署名証明書についても同じ問題がありましたが、最終的には証明書のドメイン名の検証について非常にうるさいことがわかりました。

Chromeは独自の証明書ストアを持っておらず、Window自身を使用しています。ただし、Chromeには証明書をストアにインポートする方法がないため、代わりにIEを使用して証明書を追加する必要があります。

Google Chromeに証明書をインストールする

Internet Explorerに証明書をインストールする

また、自己署名証明書を作成するためのいくつかの異なるアプローチについても見てください(私はあなたが言及していないようにIISを使っていると思います)。

IIS 7に自己署名証明書を作成する方法 -

11
Ira Rainey

URLの横にある小さな×印のアイコンをクリックすると、次のようなボックスが表示されます。

enter image description here

証明書情報 リンクをクリックすると、次のダイアログが表示されます。

enter image description here

それはどの証明書ストアが正しいものかを教えてくれます、それは 信頼されたルート証明機関 storeです。

他の回答で概説されている方法の1つを使用してそのストアに証明書を追加することも、次のいずれかを使用することもできます。

certutil -addstore -user "ROOT" cert.pem
  • ROOTは、前述の証明書ストアの内部名です。
  • cert.pemは自己署名証明書の名前です。
7
Der Hochstapler

私はbjnordが提案したものを使用するプロセスを踏みました: Google Chrome、Mac OS Xおよび自己署名SSL証明書

ブログに表示されているものが機能しませんでした。

しかし、ブログへのコメントの1つは金でした:

Sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain site.crt

どのようにしてcertファイルを入手するかについてのブログをたどる必要があるでしょう。

6
James Oravec

この投稿には既に回答が殺到していますが、bashスクリプト他の回答に基づいて自己署名TLS証明書の生成Chromeで有効)を作成しました(Chrome 65.xでテスト済み))。他の人に役立つことを願っています。

self-signed-tls bashスクリプト

証明書をインストールした後(and trust)、Chromeを再起動することを忘れないでください(chrome://restart


チェックアウトする価値があるもう1つのツールは、CloudFlareのcfsslツールキットです。

cfssl

5
Logan

Linux上のChromium上でSSL証明書を管理するためのGUIが正しく機能しませんでした。しかし、彼らの文書は正しい答えを与えた。トリックは、自己署名SSL証明書をインポートする以下のコマンドを実行することでした。 <certificate-nickname>certificate-filename.cerの名前を更新してから、chromium/chromeを再起動してください。

ドキュメントから:

Linuxでは、ChromiumはNSS Shared DBを使用します。組み込みマネージャがうまくいかない場合は、NSSコマンドラインツールを使用して証明書を設定できます。

ツールを入手する

  • Debian/Ubuntu:Sudo apt-get install libnss3-tools

  • Fedora:su -c "yum install nss-tools"

  • Gentoo:su -c "echo 'dev-libs/nss utils' >> /etc/portage/package.use && emerge dev-libs/nss"(以下のすべてのコマンドをnssという接頭辞を付けて起動する必要があります。例:nsscertutil)opensuse:Sudo zypper install mozilla-nss-tools

自己署名サーバー証明書を信頼するには、 を使用します。

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n <certificate-nickname> -i certificate-filename.cer

すべての証明書を一覧表示する

certutil -d sql:$HOME/.pki/nssdb -L

TRUSTARGSは、コンマで区切られた0個以上の英字の3つのストリングです。それらは、証明書がSSL、電子メール、およびオブジェクトの署名に対してどのように信頼されるべきかを定義しており、certutilのドキュメントまたはMeenaの信頼フラグに関するブログ投稿で説明されています。

SSLクライアント認証用の個人証明書と秘密鍵を追加するコマンドを使用します。

pk12util -d sql:$HOME/.pki/nssdb -i PKCS12_file.p12

pKCS#12ファイルに格納されている個人証明書と秘密鍵をインポートします。個人証明書の信頼度は「u、u、u」に設定されます。

証明書を削除する certutil -d sql:$HOME/.pki/nssdb -D -n <certificate nickname>

抜粋: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md

5
TetraDev

Chrome 58以降、SANが見つからないため、 macOS で証明書エラーが発生し始めました。これがまたアドレスバーの緑色のロックを取得する方法です。

  1. 次のコマンドで新しい証明書を生成します。

    openssl req \
      -newkey rsa:2048 \
      -x509 \
      -nodes \
      -keyout server.key \
      -new \
      -out server.crt \
      -subj /CN=*.domain.dev \
      -reqexts SAN \
      -extensions SAN \
      -config <(cat /System/Library/OpenSSL/openssl.cnf \
          <(printf '[SAN]\nsubjectAltName=DNS:*.domain.dev')) \
      -sha256 \
      -days 720
    
  2. server.crtをKeyChainにインポートしてから証明書をダブルクリックし、 Trust を展開してAlways Trustを選択します。

Google Chromeで https://domain.dev のページを更新すると、緑色の錠が元に戻ります。

4
Adriano Rosa

私はすべてを試し、それがうまくいった理由:インポートするとき、正しいカテゴリを選択します、すなわち 信頼されたルート認証局

(申し訳ありませんがドイツ語ですが、画像に従うだけです)

enter image description here

2017-06-27最新の方法:

openssl req \
    -newkey rsa:2048 \
    -x509 \
    -nodes \
    -keyout yoursite.key \
    -new \
    -out yoursite.crt \
    -subj /CN=yoursite.dev \
    -reqexts SAN \
    -extensions SAN \
    -config <(cat /System/Library/OpenSSL/openssl.cnf \
        <(printf '[SAN]\nsubjectAltName=DNS:yoursite.dev')) \
    -sha256 \
    -days 3650

次に、yoursite.crtとyoursite.keyをnginxの設定に追加します。

から: https://github.com/webpack/webpack-dev-server/issues/854

3
zhi.yang

ブラウザに証明書をインポートしようとしたときにうまくいきませんでした... chromeで[開発者ツール]> [セキュリティ]を開き、[証明書の表示]を選択します。詳細タブをクリックしてエクスポートします。

// LINUX

Sudo apt-get install libnss3-tools 

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n [EXPORTED_FILE_PATH] -i [EXPORTED_FILE_PATH]

このコマンドを実行して、インポートしたファイルが表示されたら、行ってもいいでしょう。

 certutil -d sql:$HOME/.pki/nssdb -L

// Windows

Start => run => certmgr.msc

左側で[信頼されたルート証明機関] => [個人]を選択します。 actionsタブ=> All actions/importをクリックしてから、ブラウザから以前にエクスポートしたファイルを選択してください。

クロムを再起動することを忘れないでください!

がんばろう! ;)

3
Fodort

安全でないローカルホストを許可するには、chrome:// flags /#allow-insecure-localhostを使用します。

開発用ホスト名をxxx.localhostに作成する必要があります。

3
Soya Bean

これは私のために働きました。参照先: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc

アドレスバーで、Xの付いた小さな錠をクリックします。これにより、小さな情報画面が表示されます。 「証明書情報」というボタンをクリックします。

画像をクリックしてデスクトップにドラッグします。ちょっとした証明書のようです。

それをダブルクリックしてください。これにより、キーチェーンアクセスユーティリティが起動します。ロックを解除するには、パスワードを入力してください。

必ずログインキーチェーンではなく、システムキーチェーンに証明書を追加してください。これは何もしないようですが、[常に信頼する]をクリックします。

追加したら、ダブルクリックします。もう一度認証する必要があります。

[信頼]セクションを展開します。

「この証明書を使用する場合は、「常に信頼する」に設定します。

3
Vincil Bishop

特にMac OS X Yosemite上のGoogle Chromeの場合、これは今後も続くことです。

ありがたいことに、私たちの開発チームの1人が今日このリンクを私に送ってくれました、そしてあなたが証明書を受け入れるサイトをあなたが制御することをまだ可能にしながらこの方法は確実に働きます。

https://www.reddit.com/r/sysadmin/comments/3ercx4/chrome_shortcut_past_the_your_connection_is_not/cthporl

jersullyの投稿:

内部証明書に煩わされたくないのであれば...

  1. アドレスバーにchrome://flags/を入力してください。
  2. 指定された期間SSLエラーを続行するには、[決定を記憶する]までスクロールするか検索します。
  3. [3か月間保存する]を選択します。
3
John Landells

FedoraとUbuntuの場合、guiを使って証明書を追加するときにexample.com Not a Certification authorityエラーが発生した場合は、新しいルート認証局を追加してください。

Chromeからエクスポートされた証明書を使って次のことを試してみてください。どんなフォーマットでも動作します(base64 chain/singe、pkcs 7、der binaryなど)。すべてのguiメソッドが惨めに失敗したとき、これは私のために働きました。

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n <certificate nickname> \
-i <certificate filename>

変更を確認するには、クロムを再起動し、必要に応じてバックグラウンドから削除します。 Firefoxはまだ文句を言うでしょう。

必要に応じて後で削除するには、Chrome - >設定 - >詳細設定 - >証明書の管理 - >サーバーの順に選択します。削除された場所に表示されます。

出典、警告、非常にむらのある、部分的に古くなっている: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md

2
Ray Foss

Chromeに証明書を受け入れてもらい、その不平を言うのをやめるにはどうすればよいですか。

でPKIを作成する必要があります。

1)自己署名ルートCA.
2)サブ/中間証明書[ルートCAによって署名された]。
3)通常/エンドエンティティ証明書[ルートCAまたはサブCAのいずれかによって署名された](localhostとしてcommonNameまたはsubjectAltName(SAN))(URIとして https:// localhost/ も含む) SANで)。
4)あなたのWindows OSにそのルートCAをインポート/インストールする(あなたがIEに言及したので。GoogleChromeは証明書チェーンを探す際に同じリソースを使っている - https://www.chromium.org/Home/ 'Trusted Root Certification Authorities'としてのchromium-security/root-ca-policy )。
5)そのエンドエンティティ証明書をWebサーバー証明書としてインストールすると、そのエラーメッセージの不平を言うのをやめます。

お役に立てれば。

適切なSSL認定を受けているブラウザの設定を変更することなく、私は自分自身でこの問題を解決しました。私はMacを使用しているので、SSL認証のキーチェーンを更新する必要がありました。私はそれを受け入れるためにクロムのためにssl認証に件名を追加しなければなりませんでした。今日の時点で、これはChromeのバージョン番号のためのものです:62.0.3202.94

私の例は使いやすいコマンドと設定ファイルです:

これらのファイルを追加すると、この例はすべて1つのルートディレクトリにあります

ssl.conf

[ req ]
default_bits       = 4096
distinguished_name = req_distinguished_name
req_extensions     = req_ext

[ 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)
commonName                  = Common Name (e.g. server FQDN or YOUR name)
commonName_max              = 64

[ req_ext ]
subjectAltName = @alt_names

[alt_names]
DNS.1   = localhost

認証を作成するためのコマンドを実行します。

openssl req -newkey rsa:4096 -nodes -keyout key.pem -x509 -days 3650 -out certificate.pem -extensions req_ext -config ssl.conf -subj '/CN=localhost/O=Stackflow/C=US/L=Los Angeles/OU=StackflowTech'

信頼できる証明書を追加するだけのMacの場合(必須):

Sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ./certificate.pem

窓のためにあなたは私たちのssl証明書をローカルに独立して検証する方法を見つける必要があるでしょう。私はWindowsを使いません。すみません、windowsみんなとギャル。

私はnode.jsサーバーをexpress.jsと一緒に使用していますが、私の鍵と証明書は次のようなものだけが必要です。

app.js

const https = require('https');
const Express = require('express');
const fs = require('fs');
const app = new Express();
const server = https.createServer({
    key: fs.readFileSync('./key.pem'),
    cert: fs.readFileSync('./certificate.pem'),
}, app);
server.listen(3000);

私は将来他のバックエンドフレームのためにこれをしているかもしれないので、私は将来他の人のためにこれの例を更新することができます。しかし、これはその問題に対するNode.jsの私の修正でした。ブラウザのキャッシュをクリアし、https://でアプリを実行してください。

これは、MacユーザーのためにNode.jsサーバー上で https:// localhost を実行する例です。

https://github.com/laynefaler/Stack-Overflow-running-HTTPS-localhost

ハッピーコーディング!

2
Layne Faler

MacOS上のChromeの場合は、証明書を準備しています。

  • Chromeを終了します(cmd+Q).
  • キーチェーンアクセスアプリを起動し、「証明書」カテゴリを開きます。
  • 証明書ファイルを「キーチェーンアクセス」ウインドウにドラッグして、証明書ファイルのパスワードを入力します。
  • 証明書をダブルクリックして、[信頼]リストを開きます。
    • [この証明書を使用するとき]の列で、[常に信頼する]を選択します。
    • これを閉じてパスワードを入力してください。
  • Chromeを起動してすべてのキャッシュをクリアします。
  • すべて問題ないことを確認してください。
2
Alykoff Gali

私は kellen を付けて重要な Toby J からの更新)で答えに続いて成功したが、この改訂をしなければならなかった:

自己署名証明書を作成するときは、v3_caではなく、新しいsubjectAltNameフィールドをv3_req拡張子の下に配置する必要がありました。私は/etc/ssl/openssl.confを一時ファイルにコピーしてからsubjectAltName = DNS:*.example.comの下に[ v3_ca ]という行を追加しました。それから、そのファイルをcert creationコマンドに渡します。

  openssl req -x509 -nodes -newkey rsa:2048 \
          -config /tmp/openssl-revised.cfg \
          -keyout example.com.key -out example.com.crt

そして kellen's の更新されたステップに従った。

2
msw1520

Windows上のChromeを修正しました。

まず、証明書をエクスポートする必要があります。

  • ブラウザでURLを見つけます。 URLの「https」セグメントは赤い線で囲まれ、左側にロック記号が表示されます。
  • ×印の付いた「https」セグメントを右クリックします。
  • さまざまな情報を含む情報ウィンドウが表示されます。
  • 「詳細」をクリックしてください。
  • 証明書をエクスポートし、指示に従ってデフォルト設定を受け入れます。

インポートする

  • Chromeの設定に行く
  • 「詳細設定」をクリック
  • HTTPS/SSLの下の「Manage Certificates」をクリックします。
  • 「信頼されたルート証明機関」に進みます。
  • 「インポート」をクリック
  • この証明書をインストールするかどうかを尋ねるポップアップウィンドウが表示されます。 「はい」をクリックしてください。
2
user2871617

私はmacosxでChromeランチャーを微調整しなければならず、以下のスクリプトを追加しました。以下のように保存しました。

/ Applications/Google\Chrome.app/Contents/MacOS/Chrome.command

#!/bin/sh
RealBin="Google Chrome"
AppDir="$(dirname "$0")"
exec "$AppDir/$RealBin" --ignore-certificate-errors "$@"

このスクリプトを使用してChromeを起動すると、自己署名証明書は問題なく機能しています。しかし このスクリプトで起動されたブラウザでWebを閲覧しないでください あなたは無効な証明書について警告されないでしょう!

2
aug70co
mkdir CA
openssl genrsa -aes256 -out CA/rootCA.key 4096
openssl req -x509 -new -nodes -key CA/rootCA.key -sha256 -days 1024 -out CA/rootCA.crt

openssl req -new -nodes -keyout example.com.key -out domain.csr -days 3650 -subj "/C=US/L=Some/O=Acme, Inc./CN=example.com"
openssl x509 -req -days 3650 -sha256 -in domain.csr -CA CA/rootCA.crt -CAkey CA/rootCA.key -CAcreateserial -out example.com.crt -extensions v3_ca -extfile <(
cat <<-EOF
[ v3_ca ]
subjectAltName = DNS:example.com
EOF
)
2
Alex Ivasyuv

Windowsでの開発目的のためにあなたはすることができます
Chromeのショートカットフラグ--ignore-certificate-errorsに追加

証明書エラーを無視し、無効な証明書Webサイトにアクセスできるようにすることを想定していました。
https://support.opendns.com/entries/66657664 に詳細な説明があります。

enter image description here

2
Binyamin

同じ問題が発生していました。証明書をWindowsの信頼されたルート機関ストアにインストールしましたが、Chromeはまだ証明書を拒否しました。エラーはERR_CERT_COMMON_NAME_INVALIDです。証明書がストアに正しくインストールされていない場合、エラーはERR_CERT_AUTHORITY_INVALIDです。

エラーの名前、 このコメント 、および この質問 によって示唆されているように、問題は証明書の宣言されたドメイン名にあります。 証明書の生成中に "Common Name"の入力を求められたら、ドメイン名を入力する必要がありました サイトへのアクセスに使用していました(私の場合はlocalhost)。私はchrome://restartを使用してChromeを再起動しましたが、ついにこの新しい証明書に満足しました。

2
Hugo Wood

SSL/HTTPS localhostがmac/osxに修正されました:

  1. Https localhost環境を開こうとするときに、アドレスバーの×印の付いた赤い鍵をクリックします。証明書に関する情報を含むウィンドウが開きます。

  2. 「詳細」をクリック 情報ウィンドウ

  3. クロム開発者用ツールが「セキュリティ」タブに表示されます。 証明書の表示 をクリックします。 証明書イメージ
  4. あなたの「システム」キーチェーンに追加してください(デフォルトで選択されている「ログイン」キーチェーンではありません)。

  5. もう一度キーチェーンを開き、証明書を見つけます。それをクリックして、あなたがすべて「信頼する」ことを確認してください。

  6. クロムを再起動すればそれは働くべきです。

2
cscheltinga

Chrome v58以降が信頼するWindowsで自己署名証明書を作成するには、権限を昇格してPowershellを起動し、次のように入力します。

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Subject "fruity.local" -DnsName "fruity.local", "*.fruity.local" -FriendlyName "FruityCert" -NotAfter (Get-Date).AddYears(10)
#notes: 
#    -subject "*.fruity.local" = Sets the string subject name to the wildcard *.fruity.local
#    -DnsName "fruity.local", "*.fruity.local"
#         ^ Sets the subject alternative name to fruity.local, *.fruity.local. (Required by Chrome v58 and later)
#    -NotAfter (Get-Date).AddYears(10) = make the certificate last 10 years. Note: only works from Windows Server 2016 / Windows 10 onwards!!

これを行うと、証明書は Personal\Certificates ストアの下のローカルコンピュータの証明書に保存されます。

この証明書を 信頼されたルート証明機関\ Certificates にコピーします。

これを行う1つの方法:Windowsのスタートボタンをクリックして、certlm.mscと入力します。次に、新しく作成した証明書を下のスクリーンショットの 信頼されたルート証明機関\ Certificates ストアにドラッグアンドドロップします。 enter image description here 

1
mpowrie

Filippo Valsordaは、クロスストアツール mkcert を作成し、これを lots のトラストストアに対して行いました。私は、この質問に対する答えが非常に多い同じ理由で彼が書いたと推測します。信頼できるルートCAによって署名されたSubjectAltName証明書に対して「正しい」ことをするのは苦痛です。

mkcertは、Windows、macOS、およびいくつかのLinuxフレーバーの主要なパッケージ管理システムに含まれています。

mkcert

mkcertは、ローカルで信頼された開発証明書を作成するためのシンプルなツールです。設定は不要です。

$ mkcert -install
Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" ????
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox trust store (requires browser restart)! ????

$ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
Using the local CA at "/Users/filippo/Library/Application Support/mkcert" ✨

Created a new certificate valid for the following names ????
 - "example.com"
 - "*.example.com"
 - "example.test"
 - "localhost"
 - "127.0.0.1"
 - "::1"

The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅
1
Michael

私の解決策と説明:

IISリソースキットツール SelfSSL.exe で作成した自己署名証明書がありました。ローカルコンピューターの証明書リストで、この自己署名証明書には1つだけ目的サーバー認証があることがわかりました。そこで、両方の目的で新しい自己署名証明書を作成しました:サーバー認証およびクライアント認証。そして今、Chromeはもう文句を言いません。

この記事 は、自己署名証明書を生成する多くの方法を示しています。すべてのオプションで証明書の目的を指定できるわけではないことに注意してください。 PowerShellの方法を使用しました。

$cert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname company.co.nz

注:このように answer by kellen Chromeを使用すると、証明書の目的を設定できますが、IMOでは、最後の証明書が念頭に置いて。

0
antanta

ローカルでテストするときに上記の答えのどれもWindows 10で私を助けませんでした

https://localhost:<port>

しかし、私はこのページを見つけました。渡すべき別のフラグを示しています。

https://www.chromium.org/blink/serviceworker/service-worker-faq

自己署名証明書を使用して https:// localhost をテストする場合は、次の手順を実行します。

$ ./chrome --allow-insecure-localhost https:// localhost

それは赤い警告を取り除かなかった、しかしそれは私がサービスワーカーとウェブプッシュ通知のようなhttps-only機能を使うことを可能にした。

0
phil_lgr

これは、opensslの代わりにJava 8 keytool.exeのみを使用するソリューションです。

@echo off
set PWD=changeit
set DNSNAME=%COMPUTERNAME%

echo create ca key
keytool -genkeypair -alias ca -keystore test.jks -keyalg RSA -validity 3650 -ext bc:critical=ca:true -dname "CN=CA" -storepass:env PWD -keypass:env PWD
echo generate cert request for ca signing
keytool -certreq -keystore test.jks -storepass:env PWD -alias ca -file ca.csr -ext bc:critical=ca:true
echo generate signed cert
keytool -gencert -keystore test.jks -storepass:env PWD -alias ca -infile ca.csr -outfile ca.cer -validity 3650 -ext bc:critical=ca:true
echo CA created. Import ca.cer in windows and firefox' certificate store as "Trusted CA".
pause

echo create server cert key for %DNSNAME%
keytool -genkeypair -alias leaf -keystore test.jks -keyalg RSA -validity 3650 -ext bc=ca:false -ext san=dns:%DNSNAME%,dns:localhost,ip:127.0.0.1 -dname "CN=Leaf" -storepass:env PWD -keypass:env PWD
echo generate cert request
keytool -certreq -keystore test.jks -storepass:env PWD -alias leaf -file leaf.csr -ext bc=ca:false -ext san=dns:%DNSNAME%,dns:localhost,ip:127.0.0.1
echo generate signed cert
keytool -gencert -keystore test.jks -storepass:env PWD -alias ca -infile leaf.csr -outfile leaf.cer -validity 3650 -ext bc=ca:false -ext san=dns:%DNSNAME%,dns:localhost,ip:127.0.0.1

rem see content
rem keytool -printcert -file leaf.cer -storepass:env PWD 

echo install in orig keystore
keytool -importcert -keystore test.jks -storepass:env PWD -file leaf.cer -alias leaf

echo content of test.jks:
keytool -list -v -storepass:env PWD -keystore test.jks
pause

ファイルの代わりにパイプを使用することもできますが、ファイルを使用すると、何か問題が発生した場合に中間結果を確認できます。 SSLは、Windows上のIE11、Edge、FF54、Chrome60、およびAndroid上のChrome60でテストされています。

スクリプトを使用する前にデフォルトのパスワードを変更してください。

0
schlm3